pothosware / pothos-library Goto Github PK
View Code? Open in Web Editor NEWFramework library used by all Pothos projects
Home Page: www.pothosware.com
Framework library used by all Pothos projects
Home Page: www.pothosware.com
This is an enhancement to make the proxy abstraction more complete to support languages that have class fields. C++, python, and java have both static and non-static fields, so this should be valuable.
Places this could help:
Currently, the managed class registrations dont allow base class members to be registered because the function arg0 type is not a match (its the base class and not the derived class).
Consider the following:
Phase out the parametrized scheduler runtime, for JIT compiled runtime that is customized per thread for a specific configuration of ports, blocks, and kernels.
Just like blocks, topology should support connecting remote topologies (used in hierarchies of sub topologies).
Something unknown is making spawning a process, running a server, and connecting to it take a noticeable amount of time, on the order of 100s of ms.
This feature enables scheduler DMA for the input side of a block.
Consider supporting a markup for the connect arguments:
topology->connect(src, "src port name", dst, "dst port name")
The string arguments represent port names, but they could represent ranges or grouping of ports to be more useful.
Further, consider hierarchies of topologies. A connection markup that simplifies the burden of connecting all available ports could give us the following automatic behaviours: A block internal to the hierarchy gets a new signal or slot, or perhaps as variable number of IO ports... this would be automatically connected to the boundaries of the container topology without any additional code intervention, just a one time markup.
There are only 3 or 4 tests in this directory. This removes boost unit test semi-dependency.
FIXME - POTHOS_LOG_LEVEL=information bin/PothosUtil --self-test1 something seems to have a hangup/freeze issue
This would speed up module loading as there is no need to retry the safe load if we have a previous confirmation.
We should be catching and logging these errors. Cannot throw at static init time..
Think about proxy find environment returning a special proxy with the same method as ProxyEnvironment. This would make the abstraction more complete and simplify some implementation and user code.
Incoming buffer chunks are dynamic from run to run based on the dtype associated with them. The output port type is defined by the dtype that the user posts to the output.
In order to support domain resolution and automatic ports, consider a different way to automatically create indexed ports. As of now, the domain checking would access an automatic port that does not exist.
Also, this enhancement would suffer in a similar way: #41
Yield tells the scheduler that we (a block) are yielding the thread context, but we are not done processing and expect to be called again.
static std::string superStringFcn(const std::string &s)
{
return s;
}
superFooProxy.call<std::string>("superStringFcn", std::string("test"));
Its ambiguous with the call that has a return type vs the one with a void return
error: call of overloaded ‘call(const char [15], std::string)’ is ambiguous
For example, drop oldest or newest message when the queue reaches max size. The queue can be:
When the ports are changed at runtime, the author of a block with variable ports will overload this call to to make sure they are using viable port pointers. This will also be the callback that we recommend users use to cache/store port pointers.
Is there any value of RemoteNode class and static node table outside of the gui? If not, probably just move the functionality into the gui.
The intention is to allow fine grained control over how many elements a worker can process without yielding output.
test network resolution when the network manager (ubuntu) is down
Element preload enables:
Signals and slots will allow for complex control interactions between blocks, built on top on a simple subscriber mechanism.
blocks should be more lightweight, we dont need the actor to be active during constructor stuff or initialization/configuration calls from the user. The actor can be allocated in the appropriate thread pool before activate() is called.
Proxy over network needs a heartbeat with timeout so we can clear expired objects on the server if a sudden disconnection occurs.
The current comment headers for header files arent being picked up by doxgen. Look into an altered format to get the comments in doxygen.
The server can backup and die if the caller process isnt reading stdout/stderr.
post buffers, labels, messages to the input of a block in a threadsafe way from outside the topology. We should be able to post to the actor easily, just a question of usefulness.
node needs to redirect server stdio so it can be retrieved and printed
push to gh-pages branch on pothos.git
When a work session completes, we need to choose when to bump the work handler again:
sigar win32 cpu info broken - use GetLogicalProcessorInformationEx
We need to drop sigar all together and make an abstraction for a general system processor (multicore/numa) query. Sigar is overkill for what we need, and its too buggy.
Block.hpp needs an API to set and get name to identify the block in runtime error messages.
serialization - figure out how to call a serialization for a type within the serialization call. This way we can nest without exporting anything. So far, we can just put stuff to serialize in a Pothos::Object
That's a mouthful, but this kind of meta-shit it nice when it works.
So suppose we have a remote proxy pRemote, and a local proxy pLocal. pLocal has a method that accepts a proxy object void foo(const Pothos::Proxy &); We want to pass pRemote into PLocal without screwing anything up. Currently, this does not work, some kind of conversion may be trying to take place. Investigate...
When the source and destination are affinitized to the same NUMA node,
use the buffer manager args to specify the node number.
This saves a lockup when a handled call calls back into the call interface.
In this case, same thread context, dont need to message the actor,
just call the call handler directly,
should just give the upstream/downstream block the pointer itself to forgo the lookup based on index/name (particularly name)
In the Pothos::Init(), confirm the existence of library files and headers (actual hpp files)
Object intermediate conversions. To help with the NxM problem for integers and containers of integers:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.