Change Highlights
- TcpSocket
- Breaking Change: Removed Port configuration. Renamed Ip configuration to Address. Port is integrated into the Address. "IP:PORT".
- Renamed Socket classes to TcpSocket.
- All TCP sockets now create an encrypted channel before sending any MQ data. Data is transformed via AES-256 and the private key is generated via a ECDiffieHellmanCng class. MAC to be added at a later time.
- TcpSocketSession.Send now contains a fourth parameter specifying if the data should be padded to a 16bit alignment. Send always transports all data passed in16 bytes blocks. If the last block would not fill 16 bytes, it is then buffered for the next send. The padding parameter will take the 16 byte block buffer, pad the end and then the buffer will be sent. Useful if you know you are sending a lot of data in a row and only want to pad once at the end.
- All TcpSocket send packets contain a header with a type, (optional) additional header information (such as body length or close reason).
- Buffer manager is now used to generate transformation buffers.
- MessageQueue
- Closing is now handled by the TcpSocket instead of the MQ.
- RPC
- Breaking Change: Removed CancellationToken from the acceptable passed parameters. This change has come about by forcing each session to execute all calls sequentially as opposed to all at the same time.
- All RPC calls are now executed sequentially on a ActionProcessor thread as opposed to the TPL. If there are long running methods, the body should be converted to a task to be executed on a TPL thread.
- General
- Breaking Change: Updated all projects to .net 4.6 to include new security classes.
- Updated ProtoBuf-net to version 2.3.13
- BufferManager now provides ArraySegments instead of SocketAsyncEventArgs.
- Created MemoryQueueStream used to queue passed byte arrays and read them out to a buffer.
- MqFrameBuilder now utilizes the MemoryQueueStream as opposed to MemoryStream.
- Changed testing suite to Nunit.
8772920 - Renamed tests to more reflect their actual contents. BREAKING CHANGE: Removed logic for RPC method cancellation.
695022f - Updated protobuf package. Changed RPC processing to be sequential and to run on dedicated threads instead of the thread pool. TODO: Fix broken tests.
2250aeb - Renamed PlainCryptoTransform to BlockCopyCryptoTransform.
8695ddb - Added documentation to the PainCryptoTransform. Added additional documentation for the TcpSocketSession.
5e6ccfc - Adding documentation to TcpSocketSession. TcpSocketSession.Send now contains a parameter to specify if the data should be padded to be aligned on 16 bytes.
2c38313 - Added comparison of AES encryption speeds vs Buffer.BlockCopy.
97b92d3 - Added reset method to set all header values to default. If the session was closed during the reading process, it will now no longer go back to reading after. Reset the header after reading the complete encryption key. Fixed all tests.
9de5df5 - Moved securing process to use headers. Temporarily removed version number from the negotiation. Removed debugging code from TransformDataBuffer. Simplified sending headers and bodies with SendWithHeader method. Removed several unused methods.
7dcbc3a - Separated BufferManager to not be dependent upon SocketAsyncEventArgs. Changed AsyncManager, OutboxProcessor & InboxProcessor to private fields. Sessions now use a pre-made buffer for encryption transformations on receiving data.
75e14ec - Relocated CloseReason into TcpSocket directory.
3076f2c - Removed unused code. ToDo: Relocate existing close code to tcp records.
6561c24 - Updated packages for new versions of protobuf & nunit.
c6360a2 - Initial work to change from RSA to DH key setup. TODO: Fix code for tests.
7c5570f - Fixed issue with sockets overflowing their buffers. Restored performance testing suites.
a01ff29 - Added automatic padding to the end of each packet. Started work on unifying SendReceiveBuffer size.
ee43b2a - Started documentation of the secured transport.
f68c971 - Work to reduce the amount of required padding/flushes.
77a7fe9 - Completed first iteration of sending and receiving encrypted data. Changed all data to be encrypted over the transport instead of just message data encryption. TODO: Change to use DH key generation.
8b7c168 - Work on debugging transport data loss.
6fc4a08 - Added headers for all outgoing packets. Work on reading incoming packets with the headers.
e45f64e - Fixed issue of malformed data on send/receive after AES encryption. Created dummy PlainCryptoTransform.cs to review transformations. Started separation of the encryption layer from the transport layer.
572a756 - Work to remove buffer copies.
fc9d051 - Completed basic Rsa -> Aes encryption channel. Working on AES implementation of encryption/decryption.
6428db5 - Updated all projects to .net 4.6 to include new security classes.
fd85b2e - Fixed tests IP address connection.
e6d7b62 - Fixed memory leak in the new MemoryQueueStream where retrieving the stream length would inadvertently copy the queue bytes. Added simple tests for the MemoryQueueStream.
758c6d8 - Removed running of tests for now on Mono.
c1e4b81 - Removed some tests from running on failing on mono, but succeeding on the target OS of windows.
cbdbac5 - Renamed Socket classes to TcpSocket since that is all it is designed to handle at this point. Migrated advancements from transport-protocol branch to master. Added MemoryQueueBufferStream to buffer the stream data without moving it to another buffer. Added new tools. Added testing of via travis. Translated all tests to nunit from xunit. Removed Closing and Connecting from valid states as it was complicating the process. Updated protobuf-net to 2.3.2. Removed Port configuration Renamed Ip configuration to Address. Port is integrated into the Address. "IP:PORT".
77aee32 - Set theme jekyll-theme-minimal
59ee013 - Updated nuget version.