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:
Charl Wentzel
2019-06-04 18:35:23 +02:00
parent 7459763eb6
commit fa6825b72a
7 changed files with 84 additions and 232 deletions

View File

@@ -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;