Skip to content
This repository has been archived by the owner on Jun 16, 2022. It is now read-only.

DtronixMessageQueue 1.1 Released

Compare
Choose a tag to compare
@DJGosnell DJGosnell released this 02 Oct 19:53
· 51 commits to master since this release

Change Highlights

  • MessageQueue

    • Removed TPL tasks as method of processing messages and replaced with ActionProcessor to handle processing of all messages.
    • Prevented clients from making multiple concurrent connections on same client.
    • Added logic to the Config.ConnectionTimeout config.
    • SocketAsyncEventArgs now is created on demand for every new connection. Fixes bug for reused SocketAsyncEventArgs
    • Added GUID as a base type in the MqFrame, MqMessageReader and MqMessageWriter.
  • RPC

    • Removed AuthenticationSuccess. Now handled through Ready event.
    • Added timeout for connections from RpcClient.
    • Added a method invoker which creates IL code and creates a cached instance of the invoker.
  • General

    • Reformatted code according to Microsoft standards.

603b245 - Added documentation to the MessageHandler class. When any MessageHandler throws on a call, the session is now terminated since it was unhanded due to invalid data sent. Added Guid to MqFrame as a type to read and write. Added Guid to MqMessageReader and MqMessageWriter. Added tests for new Guid methods.
3815640 - Added echo test. A message of set length is sent from client to server and back. Reports the total messages sent and the average response time.
62cccc8 - Added performance test to compare new method invocation. Performance tests now automatically generate .md markdown files.
ea492d8 - Rewrite of core RPC calls to allow for faster generated calls to RPC methods. Added method cache which creates a method invoker (IL) and attaches it to a cached object.
04ea18e - Updated the readme to remove UDP from an approved protocol... for now.
b67bc9f - Work on speeding up method invocation.
0d25ff9 - Added documentation. Cleaned up tests. Added some internal actions which can be called by the tests.
8c27545 - Updated performance tests and removed old results. Completed ActionProcessor. Added tests for ActionProcessor. Updated performance tests output. Added non-working console test runner to the tools directory. Updated documentation.
5ac47b3 - Started logic for adding threads.
488461c - Added logic for removal and transfer of actions to another active thread. Still not building.
225a08a - Added basic balancing to the processor based upon how many actions are registered. Added simple tests for balancing and removing of threads. Renamed QueueActionExecution to Queue and QueueOnce.
7772154 - Renamed SessionProcessor.cs to ActionProcessor.cs. Added documentation to the ActionProcessor. Added base for supervisor actions.
097a327 - Removed ref requirement for register/deregister. Limited number of queued actions to 1. Actions are registered now before the action can be invoked and the method is invoked via the GUID. ProcessActions are now created once and then queued accordingly.
019bf2f - Made processing threads all background. Added ability to pause & resume tests. Fixed issue with the memory timer throwing an exception when the window is closed.
f406776 - Fixed timeout error on client re-connections. Fixed code formatting. Passing all of GUIDs by reference.
30ac960 - Fixed bug with reconnecting clients.
8976b20 - Added separate processor for incoming and outgoing messages. Each client has two threads and each server has at least 2 threads. 1/2 of logical processors for incoming processing and 1/2 for outgoing messages. TODO: Add configuration for this inbound and outbound threads. Removed tabs from MqPerformanceTest.cs.
e24c70f - First iteration of adding a central session processor in lieu of using the TPL.
5ff3a1f - Added base semaphore to limit incoming buffer size. Added MqConfig.MaxQueuedInboundPackets configuration.
5ca7684 - Rework method of handling SocketAsyncEventArgs. SocketAsyncEventArgs are created on demand and disposed of after use. The buffers are reused.
2b54168 - DtronixMessageQueue.Tests.Performance back to the 1.0 version. Updated code for the new standards. Simplified throughput test.
0303fe8 - Fixed MqSession & SocketSession to send packets and throttle the messages sent to the configuration limit. Standardized the closing of the sockets on the session side.
335cc5e - Unified performance tests and added common code to the base classes. TODO: Work on bug with FrameBuilder where the frame buffer is overflowing.
bf77518 - Added property to return total message data size excluding headers. GUI Tests will now report the total data transferred and speed of the upload and download streams.
4165f96 - Added test for server stopping and starting again. Added test for client connecting after it has been closed. Fixed backlog. Rework of CI to ignore the WPF client.
04cd6e9 - Fixed issue when reaching max connections, new clients could not connect. Semaphore is removed from the new connections. Added tests for new features. Client will now be notified if that the connection has been closed before the connection process has been completed. Added helper method to create a new MqClient in the tests. BUGFIX: Fixed closing method on MqServer where it was removing the client from the list of connected clients ahead of the main removal procedure. Server and clients will now create MaxConnections + 1 number of buffers and socket async event args for the closing of newly connected clients. Added SocketCloseReason.ConnectionRefused to the valid disconnect reason. Performance test now displays live memory information.
edc252e - Mq performance test is now separated client from server. Added semaphore to the MqSession.Send to prevent the outbox queue filling up. Configurable from MqConfig.MaxQueuedOutgoingMessages.
f6024ae - Updated to the standard way of formatting .net code.
3963e0d - Fixed tests. Added ability for authentication timeouts from the client side.
32c14c1 - Prevented the client from making multiple connections while connecting. Moved the closed state set to before events are fired.
9e1ca3b - Removed events before pushing event args back to the stack.
a5ed2ab - Added functionality behind Config.ConnectionTimeout. All remote proxies no longer need to have instances of the interfaced class. They can now just specify the name of the remote service now with the interface. Corrected a few tests behaving improperly.
7908bcb - Removed AuthenticationSuccess. Now handled through the Ready event. Fixed bug where client would call the Ready event before the client was authenticated. Added test for this bug.
ac60352 - Clarification note about the RpcServerInfoDataContract.RequireAuthentication property. Fixed issue where sessions could not access the specified session type in the authentication process.