Important Update:
- Complete Async resolve:
- Remove Resolving param from THandle
- Rename state csResolving -> csPreparing
- Added handle state csPrepared, to indicated resolve complete
- Open handle if state = csPrepared
- Remove Resolve delay (not required since async resolve)
- remove from JSON config as well
This commit is contained in:
@@ -24,8 +24,8 @@ typedef enum { ctNone = 0, ctSerial = 1, ctLinePrinter = 2, ctForkPipe = 3, ctUN
|
||||
const char ConnectTypeName[][20] = { "None", "Serial Port", "Line Printer", "Fork Pipe", "UNIX Server", "UNIX Client", "UNIX Remote Client",
|
||||
"UDP Server", "UDP Client", "UDP Remote Client", "TCP Server", "TCP Client", "TCP Remote Client", "Custom" };
|
||||
|
||||
typedef enum { csNone = 0, csOpenRequest = 1, csWaitingtoOpen = 2, csOpen = 3, csDataWaiting = 4, csClosed = 5, csFailed = 6 } EConnectState;
|
||||
const char ConnectStateName[][15] = { "None", "OpenRequest", "WaitingToOpen", "Open", "DataWaiting", "Closed", "Failed" };
|
||||
typedef enum { csNone = 0, csPreparing = 1, csPrepared = 2, csWaitingtoOpen = 3, csOpen = 4, csDataWaiting = 5, csClosed = 6, csFailed = 7 } EConnectState;
|
||||
const char ConnectStateName[][15] = { "None", "Preparing", "Prepared", "WaitingToOpen", "Open", "DataWaiting", "Closed", "Failed" };
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -91,7 +91,7 @@ struct SHandle {
|
||||
long CloseTimeout = 1000; // millisecs of no traffic before closing socket
|
||||
|
||||
// Callback functions
|
||||
FHandleCallback StateCallback[ 7 ] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
|
||||
FHandleCallback StateCallback[ 8 ] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
|
||||
|
||||
// Type specific parameters
|
||||
char * Path = NULL; // Port (file)name or Exec path
|
||||
@@ -107,9 +107,7 @@ struct SHandle {
|
||||
bool AddressFailed = false; // Indicate failure to connect to address
|
||||
short Queue = 2; // Max waiting connections
|
||||
|
||||
long ResolveDelay = 0; // Delay before resolving hostname via DNS
|
||||
TResolveReq * ResolveReq = NULL; // DNS resolve request
|
||||
bool Resolving = false; // Busy resolving address
|
||||
|
||||
// Serial Port config
|
||||
bool SerialConfig = false;
|
||||
@@ -266,13 +264,13 @@ public:
|
||||
bool SetOutBuffer( THandle * Handle, int OutBufSize );
|
||||
|
||||
// FD Operations
|
||||
virtual int Open( THandle * Handle, bool DelayResolve = false ) = 0;
|
||||
virtual int Open( THandle * Handle ) = 0;
|
||||
virtual bool Close( THandle * Handle, bool QuickReopen );
|
||||
virtual bool Read( THandle * Handle );
|
||||
virtual bool Write( THandle * Handle );
|
||||
|
||||
// FD operations
|
||||
inline virtual int Open( const char * HandleName, bool DelayResolve = false ) { return (Open( GetHandle( HandleName ), DelayResolve)); };
|
||||
inline virtual int Open( const char * HandleName ) { return (Open( GetHandle( HandleName ))); };
|
||||
|
||||
inline virtual bool Close( const char * HandleName, bool QuickReopen ) { return (Close( GetHandle( HandleName ), QuickReopen )); };
|
||||
inline virtual bool Close( int FD, bool QuickReopen ) { return (Close( GetHandle( FD ), QuickReopen )); };
|
||||
@@ -320,19 +318,19 @@ protected:
|
||||
THandle * OpenUNIXremoteSocket( THandle * Handle );
|
||||
|
||||
// Socket Operations
|
||||
bool ResolveAddress( THandle * Handle, bool DelayResolve );
|
||||
bool ResolveAddress( THandle * Handle );
|
||||
bool HandleResolve( THandle * Handle );
|
||||
bool DestroyResolveReq( THandle * Handle, bool DestroyResult );
|
||||
|
||||
// Managing File Handles
|
||||
virtual bool DestroyHandle( THandle * Handle );
|
||||
|
||||
THandle * OpenUDPserverSocket( THandle * Handle, bool DelayResolve );
|
||||
THandle * OpenUDPserverSocket( THandle * Handle );
|
||||
THandle * OpenUDPremoteSocket( THandle * Handle, char * RemoteAddr, char * RemotePort );
|
||||
THandle * OpenUDPclientSocket( THandle * Handle, bool DelayResolve );
|
||||
THandle * OpenTCPserverSocket( THandle * Handle, bool DelayResolve );
|
||||
THandle * OpenUDPclientSocket( THandle * Handle );
|
||||
THandle * OpenTCPserverSocket( THandle * Handle );
|
||||
THandle * OpenTCPremoteSocket( THandle * Handle );
|
||||
THandle * OpenTCPclientSocket( THandle * Handle, bool DelayResolve );
|
||||
THandle * OpenTCPclientSocket( THandle * Handle );
|
||||
|
||||
// Mutual Operations
|
||||
int ReadFromUDP( THandle * Handle, char * RemoteAddr, char * RemotePort, char * Data, int MaxLen );
|
||||
@@ -357,10 +355,10 @@ public:
|
||||
bool SetLinePrinterHandle( THandle * Handle, const char * FileName );
|
||||
bool SetForkPipeHandle( THandle * Handle, const char * ExecPath );
|
||||
bool SetUnixHandle( THandle * Handle, EConnectType Type, const char * FileName, short Queue );
|
||||
bool SetSocketHandle( THandle * Handle, EConnectType Type, const char * HostName, const char * PortName, short Queue, long ResolveDelay );
|
||||
bool SetSocketHandle( THandle * Handle, EConnectType Type, const char * HostName, const char * PortName, short Queue );
|
||||
|
||||
// FD Operations
|
||||
virtual int Open( THandle * Handle, bool DelayResolve = false );
|
||||
virtual int Open( THandle * Handle );
|
||||
virtual bool Close( THandle * Handle, bool QuickReopen );
|
||||
virtual bool Read( THandle * Handle );
|
||||
virtual bool Write( THandle * Handle );
|
||||
|
||||
Reference in New Issue
Block a user