- Library Clean up:
- Removed all unused C/C++ libraries from source
- First C/C++ libraries then redA libraries
- Library changes:
- renamed BufferCore -> CharBufferCore
- added ItemBufferCore
- CharBufferCore:
- Derive RollingBuffer & ShiftBuffer from common class CharBuffer
- CharBuffer is mostly a virtual class (interface)
- DataTreeCore:
- Allow types float, int & bool to be read as strings with GetStr()
- LogCore:
- Add comments to Logging parameters
- WatchDogCore:
- Call CSelectableCore::Process() in Process() to manage connect
- SelectableCore:
- Allow SetSocketHandle() to be called if Handle already set as socket
- added strlcase() method to convert string to lower case
- Update Handle structure:
- renamed Address -> HostName
- renamed PortNo -> PortName
- added AddressList for all resolved addresses
- added AddressInfo for active address
- Add ResolveAddress() method
- Domain name and protocol port resolving with GetAddrInfo()
- JSON updated:
- domain name can be provided instead of IP address
- protocol can be specified instead of Port No, e.g. "HTTP" / "SSH"
- Resolve address before connect, or use next resolved address
- 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"
- Bug fix: make DateTimeCore functions linkable by using it in CLogCore
- CLogCore:
- Rename FileOutput -> OutputFile
- Add DateTimeStr to Output if FileNo > 3
- 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
- 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
- Added SignalCore for handling system signals
- Implemented LogMessages (only output to stdout, later to logfile)
- Updated #defines for all header files