- FunctionCore:
- Fix Memory Leaks:
- Recreate Name in LoadConfig()
- Setting FirstChannel to NULL in LoadConfig()
- Fix fault on empty Log/Output in LoadConfig()
- Check if Log/Level exists in LoadConfig()
- Do not auto-create all config parameters
- SelectableCore:
- Fix Memory Leaks:
- Setting FirstHandle to NULL in LoadConfig()
- Do not auto-create all config parameters
- Update logs to specifically refer to "TCP" server/client
- CLiteProtocol:
- Set input string on methods to const char *
- Simplify checking for verification
- Ensure Length parameter can be left out on all methods
- Add quick functions for structured commands: To, From, Command
- CLogCore:
- Use only "\n", not "\r\n"
- SignalCore:
- Use std::endl instead of "\r\n"
- SelectableCore:
- Made GetType() & GetState() public methods
- Update logs in Input()
- FunctionCore:
- Add Input/OutputEnabled parameters with Get/Set methods.
- Update logging in Input() and Output()
- Check if input/output enabled in Input() and Output()
- Fixed bugs on CRollingBuffer and CShiftBuffer
- Remove "virtual" from methods declarations
- Correct validation checks on methods
- Use memmove to shift data in ShiftBuffer
- Initialise buffer in RollingBuffer
- FindStr() -> Return start position of match
- Fix incorrect params passed to Peek()/PeekCopy() in Pop()/PopCopy()
- Fix endless lopp in RollingBuffer::Push()
- Replace CBuffer with CRollingBuffer and CShiftBuffer
ShiftBuffer is faster and simpler and always zero terminates
- Updated SelectableCore to use RollingBuffer
- Add Overwrite parameter to Push() and ReadFromFD() methods
- Add PeakDirect() method for fast direct access to buffer
- CSelectableCore:
- Allow ForkPipeHandle to change ExecPath
- Remove parent/child process test comments
- Move FD operations methods from private -> public
- Logging
- Created LogCore Class
- Updated LogCore to use file descriptors instead of stdout
- Add Log object reference to constructors for:
FunctionCore, SelectCore
- Use extern Log() object in SignalCore
- SelectableCore
- Added new connection type: ForkedPipe
Create pipe, fork process, connect pipe out to child stdin, exec
- Minor fix: Set correct names in comments at top of file
- New FileCore Class:
- Writing data to output file
- BufferCore:
- Check for "EAGAIN" on write and retry write
- FunctionCore:
- Add new Output method that references LocalIO directly
- SelectableCore:
- New method SetAutomanage to specify auto re-open parameters
- Re-open timer implemented to slow re-open events
- Only call ProcessBuffer() if data received on socket
- Force processing input data when no input marker set
- Use new Output method to simplify code
- Bug fix: Read correctly from buffer on multiple reads/writes on FD
- Check for "EAGAIN" on write to FD and retry write
- BufferCore:
- Added PeekCopy and PopCopy methods
- SelectableCore:
- Add status checking of Handle on Read and Write
- Reject input if Handle not open
- TimingCore:
- Added method ClearStartTime
- Updated all Logged messages, standardised DebugLevel:
- dlNone - Show startup and stop
- dlLow - Show creation/destruction of Function Blocks and Local IO
- dlMedium - Show connection events, eg. open/close
- dlHigh - Show data flow events
-LogCore:
- LogMessage and ShowOutput uses va_list
only run printf if DebugLevel correct
- Remove global LogStr[] variable
- SelectableCore:
- Implemented Auto-management of handles
auto open on startup/fail/close
- Changed simple Open/Close/Read/Write methods to inline
- Do not set Select Write trigger for server socket
- Memory leak, setting address twice on RemoteClient
- Bug fix, only send handle out data if DebugLevel = dlHigh
- Bug fix, do not Read/ProcessBuffer if no InputBuffer
- Implemented global var DebugLevel
- Update LogCore to check DebugLevel
- Added many log messages and standadised all log messages
- Further improved validation checks on all methods
- Updated SelectCore, only remove SelectHandle from list during Test()
- Close Handles in SelectableCore destructor
Bug fixes:
- Non-blocking Client Socket Connection now working correctly
- Remove FD from Select lists at the correct time
- General bug fixes
- Implement search for multi-character marker search in BufferCore
Replaced FindChar() method with FindStr() method
- Implemented LocalIO and LinkedIO in FunctionCore
- Connect LocalIO with FD in SelectableCore
- Implement Write buffer with Write Select in SelectableCore
- Improve validation checks in SelectableCore
- Use Handle ptr instead of Handle Names for Config methods
- Converted Select functions into new class CSelectCore
- Move Read/Write code from main() to SelectableCore Read()/Write()
- Pass CSelectCore object to CSelectableCore on create
- Updated SelectCore Read/Write lists directly from SelectableCore
- SelectCore->Test() checks all FDs directly and call Read/Write functions
- Improved checking/validating for methods in SelectableCore
- Merged SelectCore and PortCore into new SelectableCore
Single well integrated Class
- Rename SelectCore.h to SelectableCore.h
- Create new TFileHandle structure for Ports/Sockets
- Moved buffer and Input Timeout from FunctionCore to TFileHandle
- Moved Read, Write and ProcessBuffer from FunctionCore to TFileHandle
Bug Fixes:
- malloc correct size for names
- Calculate MaxFD correctly when closing FDs