diff --git a/DeviceCore.cpp b/DeviceCore.cpp index 5426870..2583dd7 100644 --- a/DeviceCore.cpp +++ b/DeviceCore.cpp @@ -17,7 +17,7 @@ //--------------------------------------------------------------------------- // Global Vars -//extern char * ProcessName; +extern char * ProcessName; //extern CApplication * Application; //--------------------------------------------------------------------------- @@ -93,7 +93,8 @@ bool CDeviceCore::DeviceOnline( TDevice * Device, bool Online ) // Log Event Device->Online = Online; - if (Log) Log->Message( LogLevel, dlHigh, "%s: Device '%s' %s", Name, Device->Name, ((Online)? "online" : "offline") ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Device '%s' %s", + ProcessName, Name, Device->Name, ((Online)? "online" : "offline") ); return true; } //--------------------------------------------------------------------------- @@ -119,11 +120,13 @@ bool CDeviceCore::CheckReplyTimeout( int TimeoutPollStep ) // Handle No Reply / Retry if (PollRetry < MaxRetries) { // Log Event - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - %s timeout, retry [%d]", Name, DeviceChannel->Name, ActiveDevice->Name, PollRetry ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - %s timeout, retry [%d]", + ProcessName, Name, DeviceChannel->Name, ActiveDevice->Name, PollRetry ); } else { // Log Event - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - %s timeout, max [%d]", Name, DeviceChannel->Name, ActiveDevice->Name, PollRetry ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - %s timeout, max [%d]", + ProcessName, Name, DeviceChannel->Name, ActiveDevice->Name, PollRetry ); // Set Device Offline DeviceOnline( ActiveDevice, false ); @@ -162,7 +165,8 @@ TDevice * CDeviceCore::AddDevice( const char * DeviceName ) } // Report creation - if (Log) Log->Message( LogLevel, dlLow, "%s: Device added - '%s'", Name, DeviceName ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: Device added - '%s'", + ProcessName, Name, DeviceName ); return *Device; } @@ -315,7 +319,8 @@ TDeviceParam * CDeviceCore::AddDeviceParam( TDevice * Device, const char * Param (*Param)->Changed = true; // Report creation - if (Log) Log->Message( LogLevel, dlLow, "%s: Param added - '%s' (%s)", Name, ParamName, DataTypeName[DataType] ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: Param added - '%s' (%s)", + ProcessName, Name, ParamName, DataTypeName[DataType] ); return *Param; } @@ -386,7 +391,8 @@ bool CDeviceCore::UpdateUnsignedValue( TDeviceParam * Param, const u_int32_t Val // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %u", Name, Param->Name, ((Init)? "initialised" : "changed"), *((u_int16_t*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %u", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), *((u_int16_t*)Param->Value) ); } break; @@ -398,7 +404,8 @@ bool CDeviceCore::UpdateUnsignedValue( TDeviceParam * Param, const u_int32_t Val // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %u", Name, Param->Name, ((Init)? "initialised" : "changed"), *((u_int32_t*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %u", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), *((u_int32_t*)Param->Value) ); } break; @@ -410,7 +417,8 @@ bool CDeviceCore::UpdateUnsignedValue( TDeviceParam * Param, const u_int32_t Val // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %f", Name, Param->Name, ((Init)? "initialised" : "changed"), *((float*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %f", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), *((float*)Param->Value) ); } break; @@ -445,7 +453,8 @@ bool CDeviceCore::UpdateSignedValue( TDeviceParam * Param, const int32_t Value, // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %d", Name, Param->Name, ((Init)? "initialised" : "changed"), *((int16_t*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %d", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), *((int16_t*)Param->Value) ); } break; @@ -457,7 +466,8 @@ bool CDeviceCore::UpdateSignedValue( TDeviceParam * Param, const int32_t Value, // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %d", Name, Param->Name, ((Init)? "initialised" : "changed"), *((int32_t*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %d", ProcessName, Name, Param->Name, + ((Init)? "initialised" : "changed"), *((int32_t*)Param->Value) ); } break; @@ -492,7 +502,8 @@ bool CDeviceCore::UpdateFloatValue( TDeviceParam * Param, const float Value, boo // Mark change & log event Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %f", Name, Param->Name, ((Init)? "initialised" : "changed"), *((float*)Param->Value) ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %f", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), *((float*)Param->Value) ); } break; @@ -537,7 +548,8 @@ bool CDeviceCore::UpdateStringValue( TDeviceParam * Param, const char * Value, c // Mark Change Changed = true; - if (Log) Log->Message( LogLevel, dlLow, "%s: '%s' %s - %s", Name, Param->Name, ((Init)? "initialised" : "changed"), (char*)Param->Value ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: '%s' %s - %s", ProcessName, Name, + Param->Name, ((Init)? "initialised" : "changed"), (char*)Param->Value ); } break; diff --git a/FileCore.cpp b/FileCore.cpp index f3e3cd1..6327146 100644 --- a/FileCore.cpp +++ b/FileCore.cpp @@ -17,7 +17,7 @@ //--------------------------------------------------------------------------- // Global Vars -//extern char * ProcessName; +extern char * ProcessName; //extern CApplication * Application; //--------------------------------------------------------------------------- @@ -140,7 +140,8 @@ bool CFileCore::OpenFile( TFileHandle * FileHandle ) SetStartTime( &(FileHandle->PersistTime) ); // Report result - if (Log) Log->Message( LogLevel, dlHigh, "%s: File '%s' - Opened", Name, FileHandle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: File '%s' - Opened", + ProcessName, Name, FileHandle->Name ); } } @@ -148,7 +149,8 @@ bool CFileCore::OpenFile( TFileHandle * FileHandle ) if (!isOpen(FileHandle)) { // Report result - if (Log) Log->Message( LogLevel, dlHigh, "%s: File '%s' - Could not open (%d) %s", Name, FileHandle->Name, errno, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: File '%s' - Could not open (%d) %s", + ProcessName, Name, FileHandle->Name, errno, strerror(errno) ); return false; } @@ -172,9 +174,11 @@ bool CFileCore::CloseFile( TFileHandle * FileHandle ) // Report result if (!isOpen(FileHandle)) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: File '%s' - Closed", Name, FileHandle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: File '%s' - Closed", + ProcessName, Name, FileHandle->Name ); } else { - if (Log) Log->Message( LogLevel, dlHigh, "%s: File '%s' - Could not close", Name, FileHandle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: File '%s' - Could not close", + ProcessName, Name, FileHandle->Name ); } } return true; @@ -270,12 +274,14 @@ int CFileCore::Input( const char * ChannelName, const char * Data, int Len ) if (!(FileHandle = GetFile( ChannelName ))) { // Log event - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Input rejected, Channel not found", + ProcessName, Name, ChannelName ); return 0; } // Log event - Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - IN:", Name, ChannelName ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Channel '%s' - IN:", + ProcessName, Name, ChannelName ); // Open file if (!OpenFile( FileHandle )) { diff --git a/FunctionCore.cpp b/FunctionCore.cpp index a8269e5..a1f1353 100644 --- a/FunctionCore.cpp +++ b/FunctionCore.cpp @@ -318,7 +318,8 @@ TChannel * CFunctionCore::AddChannel( const char * ChannelName, const bool pInpu strcpy( (*Channel)->Name, ChannelName ); // Log Event - if (Log) Log->Message( LogLevel, dlLow, "%s: Channel '%s' - Created", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: Channel '%s' - Created", + ProcessName, Name, ChannelName ); } // Set parameters @@ -360,7 +361,8 @@ bool CFunctionCore::LinkInputChannel( const char * ChannelName, const char * Out strcpy( (*LinkedChannel)->Name, OutChannelName ); // Log Event - if (Log) Log->Message( LogLevel, dlLow, "%s: Input Linked - '%s'/'%s' <-- '%s'/'%s'", Name, Name, ChannelName, OutFunction->GetName(), OutChannelName ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: Input Linked - '%s'/'%s' <-- '%s'/'%s'", + ProcessName, Name, Name, ChannelName, OutFunction->GetName(), OutChannelName ); } // Link Return direction as well @@ -405,7 +407,8 @@ bool CFunctionCore::LinkOutputChannel( const char * ChannelName, const char * In strcpy( (*LinkedChannel)->Name, InChannelName ); // Log Event - if (Log) Log->Message( LogLevel, dlLow, "%s: Output Linked - '%s'/'%s' --> '%s'/'%s'", Name, Name, ChannelName, InFunction->GetName(), InChannelName ); + if (Log) Log->Message( LogLevel, dlLow, "%s/%s: Output Linked - '%s'/'%s' --> '%s'/'%s'", + ProcessName, Name, Name, ChannelName, InFunction->GetName(), InChannelName ); } // Link return direction as well @@ -430,12 +433,14 @@ int CFunctionCore::Input( const char * ChannelName, const char * Data, int Len ) // Get Channel if (!(Channel = GetChannel( ChannelName ))) { // Channel not found - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Input rejected, Channel not found", + ProcessName, Name, ChannelName ); return 0; } else if (!Channel->InputEnabled) { // Channel disabled - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel input disabled", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Input rejected, Channel input disabled", + ProcessName, Name, ChannelName ); return 0; } else { @@ -443,7 +448,8 @@ int CFunctionCore::Input( const char * ChannelName, const char * Data, int Len ) if (Len == -1) { Len = strlen( Data ); } - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - IN:", Name, ChannelName ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Channel '%s' - IN:", + ProcessName, Name, ChannelName ); return Len; } } @@ -460,7 +466,8 @@ int CFunctionCore::Output( const char * ChannelName, const char * Data, int Len // Get Channel if (!(Channel = GetChannel( ChannelName ))) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Output rejected, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Output rejected, Channel not found", + ProcessName, Name, ChannelName ); return 0; } else { @@ -483,12 +490,14 @@ int CFunctionCore::Output( const TChannel * Channel, const char * Data, int Len // Check if enabled if (!Channel->OutputEnabled) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Output rejected, Channel output disabled", Name, Channel->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Output rejected, Channel output disabled", + ProcessName, Name, Channel->Name ); return 0; } // Log event - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - OUT:", Name, Channel->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Channel '%s' - OUT:", + ProcessName, Name, Channel->Name ); // Pass output to all linked inputs if (Len == -1) { @@ -518,7 +527,8 @@ bool CFunctionCore::PullInput( const char * ChannelName ) // Get Channel if (!(Channel = GetChannel( ChannelName ))) { // Channel not found - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input failed, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Input failed, Channel not found", + ProcessName, Name, ChannelName ); return false; } else { @@ -541,7 +551,8 @@ bool CFunctionCore::PullInput( TChannel * Channel ) // Check if enabled if (!Channel->InputEnabled) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input failed, Channel input disabled", Name, Channel->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Input failed, Channel input disabled", + ProcessName, Name, Channel->Name ); return false; } @@ -576,12 +587,14 @@ bool CFunctionCore::PullOutput( const char * ChannelName, char ** Data, int * Le // Get Channel if (!(Channel = GetChannel( ChannelName ))) { // Channel not found - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Output failed, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Output failed, Channel not found", + ProcessName, Name, ChannelName ); return 0; } else if (!Channel->InputEnabled) { // Channel disabled - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Output failed, Channel output disabled", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Channel '%s' - Output failed, Channel output disabled", + ProcessName, Name, ChannelName ); return 0; } else { @@ -589,7 +602,8 @@ bool CFunctionCore::PullOutput( const char * ChannelName, char ** Data, int * Le *Data = StoredOutput; TempLen = (*Data)? strlen(*Data) : 0; if (Len) *Len = TempLen; - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, ((*Data)? *Data : "(NULL)"), TempLen, "%s: Channel '%s' - IN:", Name, ChannelName ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, ((*Data)? *Data : "(NULL)"), TempLen, "%s/%s: Channel '%s' - IN:", + ProcessName, Name, ChannelName ); return Len; } } diff --git a/SelectCore.cpp b/SelectCore.cpp index 12145d0..67061f4 100644 --- a/SelectCore.cpp +++ b/SelectCore.cpp @@ -103,7 +103,7 @@ void CSelect::Add( int FD, bool Read, bool Write, THandle * Handle, CSelectableC (*SelectHandle)->Handle = Handle; (*SelectHandle)->Function = Function; - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Created", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Created", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } else { @@ -111,7 +111,7 @@ void CSelect::Add( int FD, bool Read, bool Write, THandle * Handle, CSelectableC // Old handle for another function, not yet removed, remove from read/write lists Remove( FD, true, true ); - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Removed old", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Removed old", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } @@ -126,7 +126,7 @@ void CSelect::Add( int FD, bool Read, bool Write, THandle * Handle, CSelectableC FD_SET( FD, &ReadTestFDS ); // Log event - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Add Read", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Add Read", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } @@ -136,7 +136,7 @@ void CSelect::Add( int FD, bool Read, bool Write, THandle * Handle, CSelectableC FD_SET( FD, &WriteTestFDS ); // Log event - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Add Write", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Add Write", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } @@ -167,7 +167,7 @@ void CSelect::Remove( int FD, bool Read, bool Write ) FD_CLR( FD, &ReadTestFDS); // Log event - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Remove Read", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Remove Read", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } @@ -177,7 +177,7 @@ void CSelect::Remove( int FD, bool Read, bool Write ) FD_CLR( FD, &WriteTestFDS); // Log event - if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Remove Write", FD, + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: FD [%d], %s '%s' - Remove Write", ProcessName, FD, ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") ); } // Handle will be removed in Test() if both Read & Write flags are false @@ -200,7 +200,7 @@ bool CSelect::Test() Events = select( MaxFD, &ReadFDS, &WriteFDS, (fd_set*)NULL, &STimeout ); if (Events < 0) { - if (Log) Log->Message( LogLevel, dlHigh, "Selector: Select operation failed" ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/Selector: Select operation failed", ProcessName ); return false; } diff --git a/SelectableCore.cpp b/SelectableCore.cpp index e16e4b3..b277310 100644 --- a/SelectableCore.cpp +++ b/SelectableCore.cpp @@ -29,7 +29,7 @@ //--------------------------------------------------------------------------- // Global Vars -//extern char * ProcessName; +extern char * ProcessName; extern CApplication * Application; //--------------------------------------------------------------------------- @@ -285,7 +285,8 @@ THandle * CSelectableCore::CreateHandle( const char * HandleName, bool CreateCh (*Handle)->FD = -1; // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Created", Name, HandleName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Created", + ProcessName, Name, HandleName ); } // Create Matching Channel @@ -317,7 +318,8 @@ bool CSelectableCore::RemoveHandle( THandle * Handle ) } // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Removed", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Removed", + ProcessName, Name, Handle->Name ); // Destroy Child handle DestroyHandle( Handle ); @@ -379,7 +381,8 @@ bool CSelectableCore::SetSerialHandle( THandle * Handle, const char * FileName ) strcpy( Handle->Path, FileName ); // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as Port [%s]", Name, Handle->Name, FileName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as Port [%s]", + ProcessName, Name, Handle->Name, FileName ); return true; } //--------------------------------------------------------------------------- @@ -423,7 +426,8 @@ bool CSelectableCore::SetLinePrinterHandle( THandle * Handle, const char * FileN strcpy( Handle->Path, FileName ); // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as Port [%s]", Name, Handle->Name, FileName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as Port [%s]", + ProcessName, Name, Handle->Name, FileName ); return true; } //--------------------------------------------------------------------------- @@ -448,7 +452,8 @@ bool CSelectableCore::SetForkPipeHandle( THandle * Handle, const char * ExecPath strcpy( Handle->Path, ExecPath ); // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as ForkPipe [%s]", Name, Handle->Name, ExecPath ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as ForkPipe [%s]", + ProcessName, Name, Handle->Name, ExecPath ); return true; } //--------------------------------------------------------------------------- @@ -475,7 +480,8 @@ bool CSelectableCore::SetUnixHandle( THandle * Handle, EConnectType Type, const strcpy( Handle->Path, FileName ); // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as %s [%s]", Name, Handle->Name, ConnectTypeName[Type], FileName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as %s [%s]", + ProcessName, Name, Handle->Name, ConnectTypeName[Type], FileName ); return true; } //--------------------------------------------------------------------------- @@ -512,7 +518,8 @@ bool CSelectableCore::SetSocketHandle( THandle * Handle, EConnectType Type, con Handle->AddressInfo = NULL; // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as %s [%s:%s]", Name, Handle->Name, ConnectTypeName[Type], HostName, PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as %s [%s:%s]", + ProcessName, Name, Handle->Name, ConnectTypeName[Type], HostName, PortName ); return true; } //--------------------------------------------------------------------------- @@ -547,7 +554,8 @@ bool CSelectableCore::ClearHandle( THandle * Handle ) Handle->Type = ctNone; // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Set as None", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Set as None", + ProcessName, Name, Handle->Name ); return true; } //--------------------------------------------------------------------------- @@ -632,21 +640,22 @@ bool CSelectableCore::SetOutBuffer( THandle * Handle, int OutBufSize ) } //--------------------------------------------------------------------------- -int CSelectableCore::OpenSerialPort( THandle * Handle ) +THandle * CSelectableCore::OpenSerialPort( THandle * Handle ) { // Validate if (!Handle || (Handle->Type == ctNone)) { - return -1; + return NULL; } else if (Handle->State == csOpen) { - return Handle->FD; + return Handle; } // Check if port exits if (access( Handle->Path, F_OK ) != 0) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Serial Port not found [%s]", Name, Handle->Name, Handle->Path ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Serial Port not found [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); + return NULL; } // Open Port @@ -654,20 +663,23 @@ int CSelectableCore::OpenSerialPort( THandle * Handle ) if (Handle->FD == -1) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not open Serial Port [%s]", Name, Handle->Name, Handle->Path ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not open Serial Port [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); + return NULL; } // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Serial Port opened [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Serial Port opened [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Update port configuration if (Handle->SerialConfig) WriteSerialConfig( Handle ); else ReadSerialConfig( Handle ); - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Serial Port config, IB:%d, OB:%d, D:%d, P:%d, S:%d, F:%d", Name, Handle->Name, - Handle->InBaudrate, Handle->OutBaudrate, Handle->DataBits, Handle->Parity, Handle->StopBits, Handle->FlowCtrl ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Serial Port config, IB:%d, OB:%d, D:%d, P:%d, S:%d, F:%d", + ProcessName, Name, Handle->Name, Handle->InBaudrate, Handle->OutBaudrate, + Handle->DataBits, Handle->Parity, Handle->StopBits, Handle->FlowCtrl ); // Add to Select Lists if (Selector) { @@ -676,25 +688,26 @@ int CSelectableCore::OpenSerialPort( THandle * Handle ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenLinePrinterPort( THandle * Handle ) +THandle * CSelectableCore::OpenLinePrinterPort( THandle * Handle ) { // Validate if (!Handle || (Handle->Type == ctNone)) { - return -1; + return NULL; } else if (Handle->State == csOpen) { - return Handle->FD; + return Handle; } // Check if port exits if (access( Handle->Path, F_OK ) != 0) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Printer Port not found [%s]", Name, Handle->Name, Handle->Path ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Printer Port not found [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); + return NULL; } // Open Port @@ -702,12 +715,14 @@ int CSelectableCore::OpenLinePrinterPort( THandle * Handle ) if (Handle->FD == -1) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not open Printer Port [%s]", Name, Handle->Name, Handle->Path ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not open Printer Port [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); + return NULL; } // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Printer Port opened [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Printer Port opened [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Add to Select Lists if (Selector) { @@ -716,11 +731,11 @@ int CSelectableCore::OpenLinePrinterPort( THandle * Handle ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenForkPipe( THandle * Handle ) +THandle * CSelectableCore::OpenForkPipe( THandle * Handle ) { int pipefd[2]; int newfd; @@ -729,25 +744,27 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) // Validate if (!Handle || (Handle->Type == ctNone)) { - return -1; + return NULL; } else if (Handle->State == csOpen) { - return Handle->FD; + return Handle; } // Validate Exec path if (!Handle->Path || !*(Handle->Path)) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - No path specified for Exec", Name, Handle->Name ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - No path specified for Exec", + ProcessName, Name, Handle->Name ); + return NULL; } // Create Pipe if ((pipe( pipefd ) == -1) || (pipefd[0] == -1) || (pipefd[1] == -1)) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not open Pipe (%s)", Name, Handle->Name, strerror(errno) ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not open Pipe (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); + return NULL; } // Fork process @@ -761,8 +778,9 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) Handle->FD = -1; // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not Fork process, %s", Name, Handle->Name, strerror(errno) ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not Fork process, %s", + ProcessName, Name, Handle->Name, strerror(errno) ); + return NULL; } else if (Handle->ChildPID > 0) { @@ -772,7 +790,8 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) Handle->FD = pipefd[1]; // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Process forked successfully", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Process forked successfully", + ProcessName, Name, Handle->Name ); } else { @@ -786,7 +805,8 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) close( pipefd[0] ); if (newfd != 0) { // Replace failed, exit immediately - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Stdin redirect failed on forked process", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Stdin redirect failed on forked process", + ProcessName, Name, Handle->Name ); exit( EXIT_FAILURE ); } @@ -801,7 +821,8 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) execvp( Args[0], Args ); // Replace failed, exit immediately - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Exec on forked process failed", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Exec on forked process failed", + ProcessName, Name, Handle->Name ); exit( EXIT_FAILURE ); } @@ -812,41 +833,43 @@ int CSelectableCore::OpenForkPipe( THandle * Handle ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUNIXserverSocket( THandle * Handle ) +THandle * CSelectableCore::OpenUNIXserverSocket( THandle * Handle ) { socklen_t addr_len; struct sockaddr_un address; // Validate if (Handle->Type != ctUNIXserver) { - return false; + return NULL; } else if (Handle->State == csOpen) { - return Handle->FD; + return Handle; } // Remove old socket if (unlink( Handle->Path ) && (errno != ENOENT)) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to remove old UNIX Server socket [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to remove old UNIX Server socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; } // Create socket if ((Handle->FD = socket( AF_UNIX, SOCK_STREAM, 0 )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create new UNIX Server socket [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create new UNIX Server socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Set non-blocking flag @@ -863,30 +886,33 @@ int CSelectableCore::OpenUNIXserverSocket( THandle * Handle ) if (bind( Handle->FD, (struct sockaddr*)&address, addr_len ) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to bind UNIX Server socket [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to bind UNIX Server socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Set state close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Create que for 5 connections if (listen( Handle->FD, 5 ) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to listen on UNIX Server socket [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to listen on UNIX Server socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Set state close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server binded and listening [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server binded and listening [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Add to Select Lists if (Selector) { @@ -895,11 +921,11 @@ int CSelectableCore::OpenUNIXserverSocket( THandle * Handle ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) +THandle * CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) { socklen_t addr_len; struct sockaddr_un address; @@ -907,7 +933,7 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) // Check state if (Handle->State == csOpen) { // Already open - return Handle->FD; + return Handle; } if (Handle->State != csWaitingtoOpen) @@ -916,11 +942,12 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) if ((Handle->FD = socket( AF_UNIX, SOCK_STREAM, 0 )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create new UNIX Client socket [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create new UNIX Client socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Set non-blocking flag @@ -937,7 +964,8 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) if (!connect( Handle->FD, (struct sockaddr*)&address, addr_len )) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Client waiting to connect [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Client waiting to connect [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Add to Select Lists if (Selector) { @@ -946,12 +974,13 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) // Set status ChangeState( Handle, csWaitingtoOpen ); - return Handle->FD; + return Handle; } else { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Client could not connect [%s] (%s)", Name, Handle->Name, Handle->Path, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Client could not connect [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); // Remove from Select List if (Selector) { @@ -965,12 +994,13 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) // Reset Handle Handle->FD = -1; - return -1; + return NULL; } } else { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Client connected [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Client connected [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Add to Select Lists if (Selector) { @@ -979,12 +1009,12 @@ int CSelectableCore::OpenUNIXclientSocket( THandle * Handle ) // Set status ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) +THandle * CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) { THandle ** RemoteClient; int ClientFD; @@ -995,7 +1025,7 @@ int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) // Validate if (!Handle) { - return -1; + return NULL; } // Check Handle type @@ -1007,12 +1037,14 @@ int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) { // Log Event if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server failed to accept blocking connection (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server failed to accept blocking connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); } else { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server failed to accept connection (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server failed to accept connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); } - return -1; + return NULL; } // Set non-blocking flag @@ -1029,8 +1061,9 @@ int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) sprintf( ClientName, "%s-%d", Handle->Name, ClientFD ); *RemoteClient = CreateHandle( ClientName, false ); if (!SetUnixHandle( *RemoteClient, ctUNIXremote, Handle->Path )) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server failed to configure Remote UNIX Client connection (%s)", Name, Handle->Name, strerror(errno) ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server failed to configure Remote Client connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); + return NULL; } // Copy Parent Buffer setup @@ -1047,14 +1080,15 @@ int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) SetStartTime( &((*RemoteClient)->LastAction) ); // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server accepted Remote Client connection [%s]", Name, Handle->Name, (*RemoteClient)->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server accepted Remote Client connection [%s]", + ProcessName, Name, Handle->Name, (*RemoteClient)->Path ); // Add to Select Lists if (Selector) { Selector->Add( (*RemoteClient)->FD, true, true, *RemoteClient, this ); } - return (*RemoteClient)->FD; + return *RemoteClient; } else if (Handle->Type == ctUNIXremote) { @@ -1062,19 +1096,20 @@ int CSelectableCore::OpenUNIXremoteSocket( THandle * Handle ) if (Handle->State == csOpen) { // Already open - return Handle->FD; + return Handle; } else if (Handle->State == csWaitingtoOpen) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Remote UNIX Client connected [%s]", Name, Handle->Name, Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Remote UNIX Client connected [%s]", + ProcessName, Name, Handle->Name, Handle->Path ); // Update state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } } - return -1; + return NULL; } //--------------------------------------------------------------------------- @@ -1101,10 +1136,10 @@ bool CSelectableCore::ResolveAddress( THandle * Handle, bool DelayResolve ) // Check valid address if (Handle->AddressInfo) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Use next resolved Address [%s:%s]->[%s:%u]", - Name, Handle->Name, Handle->HostName, Handle->PortName, - inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), - ntohs(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_port) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Use next resolved Address [%s:%s]->[%s:%u]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, + inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), + ntohs(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_port) ); return true; } @@ -1125,14 +1160,14 @@ bool CSelectableCore::ResolveAddress( THandle * Handle, bool DelayResolve ) hints.ai_socktype = SOCK_DGRAM; } - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Resolving Host name [%s:%s]...", - Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Resolving Host name [%s:%s]...", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); // Should address be resolved later during process() if (DelayResolve) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Delay resolving of Host Name [%s:%s]", - Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Delay resolving of Host Name [%s:%s]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); ChangeState( Handle, csOpenRequest ); return false; } @@ -1140,8 +1175,8 @@ bool CSelectableCore::ResolveAddress( THandle * Handle, bool DelayResolve ) // Resolve Host & Port Names if ((result = getaddrinfo( Handle->HostName, Handle->PortName, &hints, &(Handle->AddressList))) != 0) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to resolve Host Name [%s:%s] (%s)", - Name, Handle->Name, Handle->HostName, Handle->PortName, gai_strerror(result) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to resolve Host Name [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, gai_strerror(result) ); ChangeState( Handle, csFailed ); return false; } @@ -1151,8 +1186,8 @@ bool CSelectableCore::ResolveAddress( THandle * Handle, bool DelayResolve ) if (!strcmp( inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), "0.0.0.0" )) Handle->AddressInfo = Handle->AddressInfo->ai_next; if (!Handle->AddressInfo) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to resolve Host Name [%s:%s] (%s)", - Name, Handle->Name, Handle->HostName, Handle->PortName, gai_strerror(result) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to resolve Host Name [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, gai_strerror(result) ); freeaddrinfo( Handle->AddressList ); Handle->AddressList = NULL; Handle->AddressInfo = NULL; @@ -1161,34 +1196,35 @@ bool CSelectableCore::ResolveAddress( THandle * Handle, bool DelayResolve ) } // Return address - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Host name resolved [%s:%s]->[%s:%u]", - Name, Handle->Name, Handle->HostName, Handle->PortName, - inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), - ntohs(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_port) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Host name resolved [%s:%s]->[%s:%u]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, + inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), + ntohs(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_port) ); return true; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUDPserverSocket( THandle * Handle, bool DelayResolve ) +THandle * CSelectableCore::OpenUDPserverSocket( THandle * Handle, bool DelayResolve ) { // Validate Handle if (Handle->Type != ctUDPserver) { - return false; + return NULL; } // Resolve Host & Port Names if (!ResolveAddress( Handle, DelayResolve )) - return -1; + return NULL; // Create socket if ((Handle->FD = socket( Handle->AddressInfo->ai_family, Handle->AddressInfo->ai_socktype, Handle->AddressInfo->ai_protocol )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create UDP socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create UDP socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Set non-blocking flag @@ -1199,18 +1235,20 @@ int CSelectableCore::OpenUDPserverSocket( THandle * Handle, bool DelayResolve ) if (bind( Handle->FD, Handle->AddressInfo->ai_addr, Handle->AddressInfo->ai_addrlen ) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to bind UDP socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to bind UDP socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); Handle->AddressFailed = true; - return -1; + return NULL; }; // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP socket binded and listening [%s:%s]", Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP socket binded and listening [%s:%s]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); // Add to Select Lists if (Selector) { @@ -1219,11 +1257,11 @@ int CSelectableCore::OpenUDPserverSocket( THandle * Handle, bool DelayResolve ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUDPremoteSocket( THandle * Handle, char * ClientAddress, char * ClientPort ) +THandle * CSelectableCore::OpenUDPremoteSocket( THandle * Handle, char * ClientAddress, char * ClientPort ) { THandle ** RemoteClient; int ClientCount; @@ -1231,7 +1269,7 @@ int CSelectableCore::OpenUDPremoteSocket( THandle * Handle, char * ClientAddress // Validate if (!Handle || (Handle->Type != ctUDPserver)) { - return -1; + return NULL; } // Check if Remote client already exists @@ -1242,15 +1280,16 @@ int CSelectableCore::OpenUDPremoteSocket( THandle * Handle, char * ClientAddress ClientCount++; } if (*RemoteClient) { - return (*RemoteClient)->FD; + return *RemoteClient; } // Create Remote Client Handle sprintf( ClientName, "%s-%d", Handle->Name, ClientCount ); *RemoteClient = CreateHandle( ClientName, false ); if (!SetSocketHandle( *RemoteClient, ctUDPremote, ClientAddress, ClientPort, 0 )) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Server failed to configure Remote UDP Client connection (%s)", Name, Handle->Name, strerror(errno) ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Server failed to configure Remote Client connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); + return NULL; } // Copy Parent Buffer setup @@ -1267,45 +1306,48 @@ int CSelectableCore::OpenUDPremoteSocket( THandle * Handle, char * ClientAddress SetStartTime( &((*RemoteClient)->LastAction) ); // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Server accepted Remote UDP Client connection [%s:%s]", Name, Handle->Name, ClientAddress, ClientPort ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Server accepted Remote Client connection [%s:%s]", + ProcessName, Name, Handle->Name, ClientAddress, ClientPort ); // Add to Select Lists if (Selector) { Selector->Add( (*RemoteClient)->FD, true, true, *RemoteClient, this ); } - return (*RemoteClient)->FD; + return *RemoteClient; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenUDPclientSocket( THandle * Handle, bool DelayResolve ) +THandle * CSelectableCore::OpenUDPclientSocket( THandle * Handle, bool DelayResolve ) { // Check state if (Handle->State == csOpen) { // Already open - return Handle->FD; + return Handle; } // Resolve IP Address if (!ResolveAddress( Handle, DelayResolve )) - return -1; + return NULL; // Create File descriptor if ((Handle->FD = socket( Handle->AddressInfo->ai_family, Handle->AddressInfo->ai_socktype, Handle->AddressInfo->ai_protocol )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create UDP Client socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create UDP Client socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set Status ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Set Non blocking open int flags = fcntl( Handle->FD, F_GETFL, 0 ); fcntl( Handle->FD, F_SETFL, O_NONBLOCK|flags ); - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Client ready [%s:%s]", Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Client ready [%s:%s]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); // Add to Select Lists if (Selector) { @@ -1314,11 +1356,11 @@ int CSelectableCore::OpenUDPclientSocket( THandle * Handle, bool DelayResolve ) // Set status ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) +THandle * CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) { // Socket options struct linger ServerLinger_opt; @@ -1333,22 +1375,23 @@ int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) // Validate Handle if (Handle->Type != ctTCPserver) { - return false; + return NULL; } // Resolve Host & Port Names if (!ResolveAddress( Handle, DelayResolve )) - return -1; + return NULL; // Create socket if ((Handle->FD = socket( Handle->AddressInfo->ai_family, Handle->AddressInfo->ai_socktype, Handle->AddressInfo->ai_protocol )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create TCP Server socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create TCP Server socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Configure connection @@ -1356,11 +1399,12 @@ int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) (setsockopt( Handle->FD, SOL_SOCKET, SO_REUSEADDR, &Reuse_opt, sizeof(Reuse_opt)) == -1)) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not set socket options [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not set socket options [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; } // Configure TCP keep alive settings @@ -1370,11 +1414,12 @@ int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) (setsockopt( Handle->FD, SOL_TCP, TCP_KEEPINTVL, &TCPint_opt, sizeof(TCPint_opt)) == -1) ) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not set KeepAlive options [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not set KeepAlive options [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state ChangeState( Handle, csFailed ); - return -1; + return NULL; } // Set non-blocking flag @@ -1385,32 +1430,35 @@ int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) if (bind( Handle->FD, Handle->AddressInfo->ai_addr, Handle->AddressInfo->ai_addrlen ) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to bind TCP Server socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to bind TCP Server socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); Handle->AddressFailed = true; - return -1; + return NULL; }; // Create que for 5 connections if (listen( Handle->FD, 5 ) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to listen on TCP Server socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to listen on TCP Server socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set state close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); Handle->AddressFailed = true; - return -1; + return NULL; }; // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server binded and listening [%s:%s]", Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server binded and listening [%s:%s]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); // Add to Select Lists if (Selector) { @@ -1419,11 +1467,11 @@ int CSelectableCore::OpenTCPserverSocket( THandle * Handle, bool DelayResolve ) // Set state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) +THandle * CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) { THandle ** RemoteClient; int ClientFD; @@ -1436,7 +1484,7 @@ int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) // Validate if (!Handle) { - return -1; + return NULL; } // Check Handle type @@ -1448,12 +1496,14 @@ int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) { // Log Event if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server failed to accept blocking connection (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server failed to accept blocking connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); } else { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server failed to accept connection (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server failed to accept connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); } - return -1; + return NULL; } // Set non-blocking flag @@ -1475,8 +1525,9 @@ int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) sprintf( ClientName, "%s-%d", Handle->Name, ClientFD ); *RemoteClient = CreateHandle( ClientName, false ); if (!SetSocketHandle( *RemoteClient, ctTCPremote, ClientAddress, ClientPort, 0 )) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server failed to configure Remote TCP Client connection (%s)", Name, Handle->Name, strerror(errno) ); - return -1; + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server failed to configure Remote Client connection (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); + return NULL; } // Copy Parent Buffer setup @@ -1493,14 +1544,15 @@ int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) SetStartTime( &((*RemoteClient)->LastAction) ); // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server accepted Remote TCP Client connection [%s]", Name, Handle->Name, ClientAddress ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server accepted Remote Client connection [%s]", + ProcessName, Name, Handle->Name, ClientAddress ); // Add to Select Lists if (Selector) { Selector->Add( (*RemoteClient)->FD, true, true, *RemoteClient, this ); } - return (*RemoteClient)->FD; + return *RemoteClient; } else if (Handle->Type == ctTCPremote) { @@ -1508,23 +1560,24 @@ int CSelectableCore::OpenTCPremoteSocket( THandle * Handle ) if (Handle->State == csOpen) { // Already open - return Handle->FD; + return Handle; } else if (Handle->State == csWaitingtoOpen) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Remote TCP Client connected [%s]", Name, Handle->Name, Handle->HostName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Remote TCP Client connected [%s]", + ProcessName, Name, Handle->Name, Handle->HostName ); // Update state ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } } - return -1; + return NULL; } //--------------------------------------------------------------------------- -int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) +THandle * CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) { // Socket options int KeepAlive_opt = 1; @@ -1535,24 +1588,25 @@ int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) // Check state if (Handle->State == csOpen) { // Already open - return Handle->FD; + return Handle; } if (Handle->State != csWaitingtoOpen) { // Resolve IP Address if (!ResolveAddress( Handle, DelayResolve )) - return -1; + return NULL; // Create File descriptor if ((Handle->FD = socket( Handle->AddressInfo->ai_family, Handle->AddressInfo->ai_socktype, Handle->AddressInfo->ai_protocol )) < 0) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to create TCP Client socket [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to create TCP Client socket [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set Status ChangeState( Handle, csFailed ); - return -1; + return NULL; }; // Set Non blocking open @@ -1566,20 +1620,22 @@ int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) (setsockopt( Handle->FD, SOL_TCP, TCP_KEEPINTVL, &TCPint_opt, sizeof(TCPint_opt)) == -1) ) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Could not set KeepAlive options [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Could not set KeepAlive options [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Set State close( Handle->FD ); Handle->FD = -1; ChangeState( Handle, csFailed ); - return -1; + return NULL; } } // Try to connect to address if (!connect( Handle->FD, Handle->AddressInfo->ai_addr, Handle->AddressInfo->ai_addrlen )) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Client connected [%s:%s]", Name, Handle->Name, Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Client connected [%s:%s]", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName ); // Add to Select Lists if (Selector) { @@ -1588,12 +1644,13 @@ int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) // Set status ChangeState( Handle, csOpen ); - return Handle->FD; + return Handle; } else if ((errno == EAGAIN) || (errno == EWOULDBLOCK) || (errno == EINPROGRESS) || (errno == EALREADY)) { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Client waiting to connect [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Client waiting to connect [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Add to Select Lists if (Selector) { @@ -1602,12 +1659,13 @@ int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) // Set status ChangeState( Handle, csWaitingtoOpen ); - return Handle->FD; + return Handle; } else { // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Client could not connect [%s:%s] (%s)", Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Client could not connect [%s:%s] (%s)", + ProcessName, Name, Handle->Name, Handle->HostName, Handle->PortName, strerror(errno) ); // Remove from Select List if (Selector) { @@ -1621,14 +1679,14 @@ int CSelectableCore::OpenTCPclientSocket( THandle * Handle, bool DelayResolve ) // Reset Handle Handle->FD = -1; - return -1; + return NULL; } } //--------------------------------------------------------------------------- int CSelectableCore::Open( THandle * Handle, bool DelayResolve ) { - int FD = -1; + THandle * NewHandle = NULL; // Validate if (!Handle) { @@ -1638,39 +1696,39 @@ int CSelectableCore::Open( THandle * Handle, bool DelayResolve ) // Open correctly switch (Handle->Type) { case ctSerial : - FD = OpenSerialPort( Handle ); + NewHandle = OpenSerialPort( Handle ); break; case ctLinePrinter : - FD = OpenLinePrinterPort( Handle ); + NewHandle = OpenLinePrinterPort( Handle ); break; case ctForkPipe : - FD = OpenForkPipe( Handle ); + NewHandle = OpenForkPipe( Handle ); break; case ctUNIXserver : - FD = OpenUNIXserverSocket( Handle ); + NewHandle = OpenUNIXserverSocket( Handle ); break; case ctUNIXclient : - FD = OpenUNIXclientSocket( Handle ); + NewHandle = OpenUNIXclientSocket( Handle ); break; case ctUDPserver : - FD = OpenUDPserverSocket( Handle, DelayResolve ); + NewHandle = OpenUDPserverSocket( Handle, DelayResolve ); break; case ctUDPclient : - FD = OpenUDPclientSocket( Handle, DelayResolve ); + NewHandle = OpenUDPclientSocket( Handle, DelayResolve ); break; case ctTCPserver : - FD = OpenTCPserverSocket( Handle, DelayResolve ); + NewHandle = OpenTCPserverSocket( Handle, DelayResolve ); break; case ctTCPclient : - FD = OpenTCPclientSocket( Handle, DelayResolve ); + NewHandle = OpenTCPclientSocket( Handle, DelayResolve ); break; default: - FD = -1; + NewHandle = NULL; } // Set timer (for re-open or auto-close) SetStartTime( &Handle->LastAction ); - return FD; + return (NewHandle)? NewHandle->FD : -1; }; //--------------------------------------------------------------------------- @@ -1724,65 +1782,83 @@ bool CSelectableCore::Close( THandle * Handle, bool QuickReopen ) switch (Handle->Type) { case ctSerial: - // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Serial Port %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Serial Port %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); break; case ctLinePrinter: - // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Printer Port %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Printer Port %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); break; case ctForkPipe: - // Log Event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Forked Pipe %s", Name, Handle->Name, ((Fail)? "failed" : "closed")); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Forked Pipe %s", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed")); break; case ctUNIXserver: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Server %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Server %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + + // Remove UNIX socket file + if (unlink( Handle->Path ) && (errno != ENOENT)) { + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Failed to remove old UNIX Server socket [%s] (%s)", + ProcessName, Name, Handle->Name, Handle->Path, strerror(errno) ); + } break; case ctUNIXclient: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Client %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Client %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); break; case ctUNIXremote: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UNIX Remote Client %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UNIX Remote Client %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->Path ); break; case ctUDPserver: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Server %s [%s:%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Server %s [%s:%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); break; case ctUDPclient: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Client %s [%s:%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Client %s [%s:%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); break; case ctUDPremote: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - UDP Remote Client %s [%s:%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - UDP Remote Client %s [%s:%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); break; case ctTCPserver: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Server %s [%s:%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Server %s [%s:%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); break; case ctTCPremote: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Remote Client %s [%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Remote Client %s [%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName ); break; case ctTCPclient: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - TCP Client %s [%s:%s]", Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - TCP Client %s [%s:%s]", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed"), Handle->HostName, Handle->PortName ); break; case ctNone: default: - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - %s, invalid Handle type", Name, Handle->Name, ((Fail)? "failed" : "closed") ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - %s, invalid Handle type", + ProcessName, Name, Handle->Name, ((Fail)? "failed" : "closed") ); break; }; // Remove from Select List if (!Fail && Selector) { - Selector->Remove( Handle->FD, true, true ); + if (Handle->Type != ctUDPremote) { + Selector->Remove( Handle->FD, true, true ); + } } // Reset FD @@ -1794,7 +1870,8 @@ bool CSelectableCore::Close( THandle * Handle, bool QuickReopen ) // Device Interface bool CSelectableCore::Read( THandle * Handle ) { - int ClientFD = -1; + THandle * ClientHandle = NULL; + int BytesRead = 0; int BytesWaiting = -1; @@ -1808,18 +1885,19 @@ bool CSelectableCore::Read( THandle * Handle ) } // Log Read Event - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Read Event", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Read Event", + ProcessName, Name, Handle->Name ); // Check for closing/opening event on Socket if ((Handle->Type == ctTCPserver) || (Handle->Type == ctUNIXserver)) { // Incoming client request if (Handle->Type == ctTCPserver) { - ClientFD = OpenTCPremoteSocket( Handle ); + ClientHandle = OpenTCPremoteSocket( Handle ); } else if (Handle->Type == ctUNIXserver) { - ClientFD = OpenUNIXremoteSocket( Handle ); + ClientHandle = OpenUNIXremoteSocket( Handle ); } - if (ClientFD == -1) { + if (ClientHandle == NULL) { return false; } // Reset Timer @@ -1827,7 +1905,7 @@ bool CSelectableCore::Read( THandle * Handle ) // Add to Select Lists if (Selector) { - Selector->Add( ClientFD, true, true, Handle, this ); + Selector->Add( ClientHandle->FD, true, true, ClientHandle, this ); } return true; } @@ -1860,13 +1938,14 @@ bool CSelectableCore::Read( THandle * Handle ) { // Log if there is an error if (Log && (BytesWaiting < 1)) - Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Data waiting error (%s)", Name, Handle->Name, strerror(errno) ); + Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Data waiting error (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); // Close Handle Close( Handle, false ); // Destroy Client - if ((Handle->Type == ctTCPremote) || (Handle->Type == ctTCPremote)) { + if ((Handle->Type == ctTCPremote) || (Handle->Type == ctUNIXremote)) { RemoveHandle( Handle ); } return false; @@ -1879,7 +1958,8 @@ bool CSelectableCore::Read( THandle * Handle ) if (BytesWaiting < 0) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Data waiting error (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Data waiting error (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); // Close Handle Close( Handle, false ); @@ -1894,8 +1974,8 @@ bool CSelectableCore::Read( THandle * Handle ) if (!errno && (Handle->Type == ctUDPserver)) { // Create/Find Incoming client - ClientFD = OpenUDPremoteSocket( Handle, UDPaddress, UDPport ); - if (ClientFD == -1) { + ClientHandle = OpenUDPremoteSocket( Handle, UDPaddress, UDPport ); + if (ClientHandle == NULL) { return false; } } @@ -1911,7 +1991,8 @@ bool CSelectableCore::Read( THandle * Handle ) // Error on port if (BytesWaiting < 0) { - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Data waiting error (%s)", Name, Handle->Name, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Data waiting error (%s)", + ProcessName, Name, Handle->Name, strerror(errno) ); // Close Handle Close( Handle, false ); @@ -1926,7 +2007,8 @@ bool CSelectableCore::Read( THandle * Handle ) // // Error on port // if (BytesWaiting < 0) // { -// if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Data waiting error (%s)", Name, Handle->Name, strerror(errno) ); +// if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Data waiting error (%s)", +// ProcessName, Name, Handle->Name, strerror(errno) ); // // // Close Handle // Close( Handle, false ); @@ -1955,10 +2037,12 @@ bool CSelectableCore::Read( THandle * Handle ) // Report failure if (errno) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Error reading data [%d/%d] (%s)", Name, Handle->Name, -BytesRead, BytesWaiting, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Error reading data [%d/%d] (%s)", + ProcessName, Name, Handle->Name, -BytesRead, BytesWaiting, strerror(errno) ); } else if (BytesRead < BytesWaiting) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Incomplete data read [%d/%d]", Name, Handle->Name, BytesRead, BytesWaiting ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Incomplete data read [%d/%d]", + ProcessName, Name, Handle->Name, BytesRead, BytesWaiting ); } if (BytesRead != 0) { @@ -2001,7 +2085,8 @@ bool CSelectableCore::Write( THandle * Handle ) } // Log Ready for Write Event - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Write Event", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Write Event", + ProcessName, Name, Handle->Name ); if (Handle->State == csWaitingtoOpen) { @@ -2038,14 +2123,17 @@ bool CSelectableCore::Write( THandle * Handle ) BytesWritten = Handle->OutBuffer->WriteToFD( Handle->FD ); } - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Handle '%s' - OUT:", Name, Handle->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Handle '%s' - OUT:", + ProcessName, Name, Handle->Name ); // Report failure if (errno) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Error sending data [%d/%d] (%s)", Name, Handle->Name, -BytesWritten, Len, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Error sending data [%d/%d] (%s)", + ProcessName, Name, Handle->Name, -BytesWritten, Len, strerror(errno) ); } else if (BytesWritten < Len) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Incomplete data sent [%d/%d]", Name, Handle->Name, BytesWritten, Len ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Incomplete data sent [%d/%d]", + ProcessName, Name, Handle->Name, BytesWritten, Len ); } if (BytesWritten != 0) @@ -2095,7 +2183,8 @@ bool CSelectableCore::ProcessInputBuffer( THandle * Handle, bool Force ) { // Show Packet Len = Handle->InBuffer->Peek( &Data ); - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Handle '%s' - IN-T:", Name, Handle->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Handle '%s' - IN-T:", + ProcessName, Name, Handle->Name ); // Write buffer to Outputs if ((Handle->Type == ctTCPremote) || (Handle->Type == ctUNIXremote)) { @@ -2114,7 +2203,8 @@ bool CSelectableCore::ProcessInputBuffer( THandle * Handle, bool Force ) { // Show Packet Len = Handle->InBuffer->Peek( &Data, 0, Pos+Handle->InMarkerLen ); - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Handle '%s' - IN-M:", Name, Handle->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Handle '%s' - IN-M:", + ProcessName, Name, Handle->Name ); // Write buffer to Outputs if ((Handle->Type == ctTCPremote) || (Handle->Type == ctUNIXremote)) { @@ -2264,17 +2354,20 @@ int CSelectableCore::Input( const char * ChannelName, const char * Data, int Len // Get Channel if (!(Channel = GetChannel( ChannelName ))) { // Channel not found - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel not found", + ProcessName, Name, ChannelName ); return 0; } else if (!Channel->InputEnabled) { // Channel disabled - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel input disabled", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel input disabled", + ProcessName, Name, ChannelName ); return 0; } // Log event - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - IN:", Name, ChannelName ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - IN:", + ProcessName, Name, ChannelName ); // Find Linked handle Handle = FirstHandle; @@ -2292,7 +2385,8 @@ int CSelectableCore::Input( const char * ChannelName, const char * Data, int Len if (!HandleCount) { // Handle not found - if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, No Handles not found", Name, ChannelName ); + if (Log) Log->Message( LogLevel, dlHigh, "%s: Channel '%s' - Input rejected, No Handles not found", + ProcessName, Name, ChannelName ); return 0; } @@ -2312,7 +2406,8 @@ int CSelectableCore::OutputHandle( THandle * Handle, const char * Data, int Len if (!Handle->AutoManage) { // Handle is not open or auto-managed - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Input rejected, Handle not Open (not auto-managed)", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Input rejected, Handle not Open (not auto-managed)", + ProcessName, Name, Handle->Name ); return 0; } else if (Timeout( Handle->LastAction, Handle->ReopenDelay )) @@ -2322,22 +2417,25 @@ int CSelectableCore::OutputHandle( THandle * Handle, const char * Data, int Len // Check if Handle is open if (Handle->State == csOpenRequest) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Input rejected, Request to resolve (auto-managed) Handle", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Input rejected, Request to resolve (auto-managed) Handle", + ProcessName, Name, Handle->Name ); return 0; } else if (Handle->State == csWaitingtoOpen) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Input rejected, Waiting to open (auto-managed) Handle", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Input rejected, Waiting to open (auto-managed) Handle", + ProcessName, Name, Handle->Name ); return 0; } else if (Handle->State != csOpen) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Input rejected, (auto-managed) Handle failed to Open", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Input rejected, (auto-managed) Handle failed to Open", + ProcessName, Name, Handle->Name ); return 0; } } else { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Input rejected, Retry (auto-managed) Handle re-open in %d ms", Name, Handle->Name, - TimeLeft( Handle->LastAction, Handle->ReopenDelay) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Input rejected, Retry (auto-managed) Handle re-open in %d ms", + ProcessName, Name, Handle->Name, TimeLeft( Handle->LastAction, Handle->ReopenDelay) ); return 0; } } @@ -2378,14 +2476,17 @@ int CSelectableCore::OutputHandle( THandle * Handle, const char * Data, int Len BytesWritten = WriteToFD( ChildHandle->FD, Data, Len, true ); } - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Handle '%s' - OUT:", Name, ChildHandle->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Handle '%s' - OUT:", + ProcessName, Name, ChildHandle->Name ); // Report failure if (errno) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Error sending data [%d/%d] (%s)", Name, ChildHandle->Name, -BytesWritten, DataLen, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Error sending data [%d/%d] (%s)", + ProcessName, Name, ChildHandle->Name, -BytesWritten, DataLen, strerror(errno) ); } else if (BytesWritten < DataLen) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Incomplete data sent [%d/%d]", Name, ChildHandle->Name, BytesWritten, DataLen ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Incomplete data sent [%d/%d]", + ProcessName, Name, ChildHandle->Name, BytesWritten, DataLen ); } if (BytesWritten != 0) { @@ -2425,14 +2526,17 @@ int CSelectableCore::OutputHandle( THandle * Handle, const char * Data, int Len BytesWritten = WriteToFD( Handle->FD, Data, Len, true ); } - if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Handle '%s' - OUT:", Name, Handle->Name ); + if (Log) Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s/%s: Handle '%s' - OUT:", + ProcessName, Name, Handle->Name ); // Report failure if (errno) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Error sending data [%d/%d] (%s)", Name, Handle->Name, -BytesWritten, DataLen, strerror(errno) ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Error sending data [%d/%d] (%s)", + ProcessName, Name, Handle->Name, -BytesWritten, DataLen, strerror(errno) ); } else if (BytesWritten < DataLen) { - if (Log) Log->Message( LogLevel, dlHigh, "%s: Handle '%s' - Incomplete data sent [%d/%d]", Name, Handle->Name, BytesWritten, DataLen ); + if (Log) Log->Message( LogLevel, dlHigh, "%s/%s: Handle '%s' - Incomplete data sent [%d/%d]", + ProcessName, Name, Handle->Name, BytesWritten, DataLen ); } if (BytesWritten != 0) { @@ -2665,13 +2769,15 @@ bool CSelectableCore::WriteSerialConfig( THandle * Handle ) if (tcsetattr( Handle->FD, TCSANOW, &newtio ) != 0) { // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Port not configured", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Port not configured", + ProcessName, Name, Handle->Name ); return false; } // Port configured // Log event - if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Port configured", Name, Handle->Name ); + if (Log) Log->Message( LogLevel, dlMedium, "%s/%s: Handle '%s' - Port configured", + ProcessName, Name, Handle->Name ); return true; } //--------------------------------------------------------------------------- diff --git a/SelectableCore.h b/SelectableCore.h index 92d6175..dd3d71c 100644 --- a/SelectableCore.h +++ b/SelectableCore.h @@ -18,9 +18,9 @@ // Types required for connections typedef enum { ctNone = 0, ctSerial = 1, ctLinePrinter = 2, ctForkPipe = 3, ctUNIXserver = 4, ctUNIXclient = 5, ctUNIXremote = 6, - ctUDPserver = 7, ctUDPclient = 8, ctUDPremote = 9, ctTCPserver = 10, ctTCPremote = 11, ctTCPclient = 12 } EConnectType; -const char ConnectTypeName[][20] = { "None", "Serial", "LinePrinter", "ForkPipe", "UNIXserver", "UNIXclient", "UNIXremote", - "UDPserver", "UDPclient", "UDPremote", "TCPserver", "TCPremote", "TCPclient" }; + ctUDPserver = 7, ctUDPclient = 8, ctUDPremote = 9, ctTCPserver = 10, ctTCPclient = 11, ctTCPremote = 12 } EConnectType; +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" }; 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" }; @@ -205,26 +205,26 @@ protected: } // Port Operations - int OpenSerialPort( THandle * Handle ); - bool WriteSerialConfig( THandle * Handle ); - bool ReadSerialConfig( THandle * Handle ); + THandle * OpenSerialPort( THandle * Handle ); + bool WriteSerialConfig( THandle * Handle ); + bool ReadSerialConfig( THandle * Handle ); - int OpenLinePrinterPort( THandle * Handle ); + THandle * OpenLinePrinterPort( THandle * Handle ); // File Socket Operations - int OpenForkPipe( THandle * Handle ); - int OpenUNIXserverSocket( THandle * Handle ); - int OpenUNIXclientSocket( THandle * Handle ); - int OpenUNIXremoteSocket( THandle * Handle ); + THandle * OpenForkPipe( THandle * Handle ); + THandle * OpenUNIXserverSocket( THandle * Handle ); + THandle * OpenUNIXclientSocket( THandle * Handle ); + THandle * OpenUNIXremoteSocket( THandle * Handle ); // Socket Operations bool ResolveAddress( THandle * Handle, bool DelayResolve ); - int OpenUDPserverSocket( THandle * Handle, bool DelayResolve ); - int OpenUDPremoteSocket( THandle * Handle, char * RemoteAddr, char * RemotePort ); - int OpenUDPclientSocket( THandle * Handle, bool DelayResolve ); - int OpenTCPserverSocket( THandle * Handle, bool DelayResolve ); - int OpenTCPremoteSocket( THandle * Handle ); - int OpenTCPclientSocket( THandle * Handle, bool DelayResolve ); + THandle * OpenUDPserverSocket( THandle * Handle, bool DelayResolve ); + THandle * OpenUDPremoteSocket( THandle * Handle, char * RemoteAddr, char * RemotePort ); + THandle * OpenUDPclientSocket( THandle * Handle, bool DelayResolve ); + THandle * OpenTCPserverSocket( THandle * Handle, bool DelayResolve ); + THandle * OpenTCPremoteSocket( THandle * Handle ); + THandle * OpenTCPclientSocket( THandle * Handle, bool DelayResolve ); // Mutual Operations int ReadFromFD( int FD, char * Data, int MaxLen );