These changes are required to connect and receive data properly since the TLS 1.2 server upgrade on 6/16/2019. This also required upgrading the IKVM libraries for C#/Java interop.
In the advanced build settings, Language version was also upgraded from C# 5.0 to C# 6.0. The minimum Visual Studio version required will now be VS2015.
In order to safely be accessed across threads, the private bool which dictates whether or not the DesktopClient is running has been decorated with the volitile keyword. This should enable the DesktopClient to safely be shutdown from another thread.
In order to avoid switching on types in StreamingMessageHandler, the NetMQ tcp Push Socket will now only send the serialized packet to the desktop client, instead of the serialized packet and the packet type.
The DesktopClient now only accepts single part messages in order to accomadate the changes in StreamingMessageHandler. The type of the packet is distinguished in the DesktopClient because StreamingMessageHandler does not disnguish the types of the packets.
The StreamingMessageHandler tests and DesktopClientTests have been altered to reflect these changes.
The WinForm application now implements the interface that allows the DesktopClient to pass messages to it. This replaces the delegate methods that were being used before.
The Main method in the Views project now starts the NetMQ pull socket (server) in another thread. This is so the server does no block the rest of the WinForms application. The server is then shut down once the application is finished running.
The DesktopClient recieves messages from the LEAN engine and uses an instance of the IMessageHandler to pass messages to the view. The DesktopClient uses a NetMQ Pull socket to accept the messages over TCP.
The desktop client should be run in another thread.
IDesktopMessageHandler outlines the methods that the View will use to process different packets. This is done so that the message handler can eventually be passed to the server that accepts incoming tcp connections in the view.
The interface will eventually replace the delegates used in the view. Using a message handler interface will make calling these methods easier from the PullSocket that will accept the TCP messages.
In order to decouple the build profiles of QuantConnect.Views and the rest of the application, QuantConnevt.Views will now produce an executable that can be called from the rest of the project. All references to QuantConnect.Views from the Laucher project are now removed. This is all done so that The rest of the project can compile into x64. QuantConnect.Views relies on the Gecko web browser which only comes in 32 bit flavor.
When algorithm run ends before the message system is loaded (it depends on the UX loading), enqueued packets used on charting are never sent to the UX.
Reorganised Lean Desktop to be launched from the Launcher.
Moved UI Layout to mainly use VS Winforms Designer.
//TODO reorganise Result Handler properly.