Important Update:
- FunctionCore/SelectableCore/FileCore/DeviceCore:
- Remove InputChannels
- Only OutputChannels -> LinkedChannels
- Remove PullInput/Output() methods
- Remove StoredOutput
- Add References to channels and linked channels
- Send SourceRef with output
- Receive TargetRef with input
- Filter output channels based on TargetRef
This commit is contained in:
@@ -28,12 +28,14 @@ class CFunctionCore;
|
||||
struct SChannel
|
||||
{
|
||||
char * Name = NULL;
|
||||
char * Ref = NULL;
|
||||
|
||||
TChannelLink * FirstInput = NULL;
|
||||
TChannelLink * FirstOutput = NULL;
|
||||
TChannelLink * FirstLink = NULL; // List of channels from which input can be received
|
||||
|
||||
bool InputEnabled = NULL;
|
||||
bool OutputEnabled = NULL;
|
||||
bool InputEnabled = NULL; // Can Channel receive input
|
||||
bool OutputEnabled = NULL; // Can channel receive output
|
||||
|
||||
bool Ready = false; // Channel ready to receive input
|
||||
|
||||
TChannel * Next = NULL;
|
||||
};
|
||||
@@ -43,6 +45,7 @@ struct SChannelLink
|
||||
{
|
||||
CFunctionCore * Function = NULL;
|
||||
char * Name = NULL;
|
||||
char * Ref = NULL;
|
||||
|
||||
SChannelLink * Next = NULL;
|
||||
};
|
||||
@@ -73,10 +76,6 @@ protected:
|
||||
EDebugLevel LogLevel = dlNone;
|
||||
int LogOutput = loNone;
|
||||
|
||||
// Stored Output
|
||||
char * StoredOutput = NULL;
|
||||
int StoredOutputLen = 0;
|
||||
|
||||
// Manage Channel
|
||||
inline TChannel * GetChannel( const char * pName ) {
|
||||
if (!pName) return NULL;
|
||||
@@ -87,8 +86,7 @@ protected:
|
||||
}
|
||||
|
||||
// Data Input/Output
|
||||
virtual int Output( const TChannel * Channel, const char * Data, int Len, int OutputFormat = loNone );
|
||||
virtual bool PullInput( TChannel * Channel );
|
||||
virtual int Output( const TChannel * Channel, const char * TargetRef, const bool SourceRef, const char * Data, int Len, int OutputFormat = loNone );
|
||||
|
||||
public:
|
||||
// Life cycle
|
||||
@@ -131,16 +129,11 @@ public:
|
||||
}
|
||||
|
||||
// Pushing Data Output -> Input
|
||||
virtual int Output( const char * ChannelName, const char * Data, int Len = -1 );
|
||||
virtual int Input( const char * ChannelName, const char * Data, int Len = -1 );
|
||||
|
||||
// Pulling Data Input <- Output
|
||||
virtual bool PullInput( const char * ChannelName );
|
||||
virtual bool PullOutput( const char * ChannelName, char ** Data, int * Len = NULL );
|
||||
virtual int Output( const char * ChannelName, const char * TargetRef, const bool SourceRef, const char * Data, int Len = -1 );
|
||||
virtual int Input( const char * ChannelName, const char * SourceRef, const char * Data, int Len = -1 );
|
||||
|
||||
// Automated Data Input/Output
|
||||
virtual bool LinkInputChannel( const char * ChannelName, const char * OutFunctionName, const char * OutChannelName, bool Bidirectional );
|
||||
virtual bool LinkOutputChannel( const char * ChannelName, const char * InFunctionName, const char * InChannelName, bool Bidirectional );
|
||||
virtual bool LinkChannel( const char * ChannelName, const char * LinkFunctionName, const char * LinkChannelName, bool Bidirectional );
|
||||
virtual bool Process() = 0;
|
||||
|
||||
friend class CApplication;
|
||||
|
||||
Reference in New Issue
Block a user