Add support for the SSL protocol
#1 Updated by Vincent Le Goff about 3 years ago
- Status changed from Open to In Progress
Using Twisted will require far more than changing the client structure, at least, in design. An alternative would be to place all the networking infrastructure in a separate thread (this thread will actually run the Twisted reactor). It might be better to keep Twisted in the main loop and place the user interface in another thread, however. Both strategies will have to be tested. The latter would allow to create simple differed tasks, supporting client timers, for instance.
#2 Updated by Vincent Le Goff about 3 years ago
There is some useful information on how to have twisted and wxPython's event loops peacefully co-exist. This post describes several methods to do it. It seems there's no real caution to be considered, as long as communication between threads is carefully planned, which is already the case. Additionally, Twisted already has an interesting documentation describing how to handle threads. I would be in favor of having Twisted's reaction running in the main thread, and wxPython in another one.
The client hierarchy, meanwhile, could be written as a simple Twisted protocol and a single factory instantiated before the application starts. Different methods of the reactor can be used to connect a protocol through simple TCP or SSL. However, it remains interesting to take into account the fact that, in the future, some other factories might be created, to support SSH connection, for instance.
#3 Updated by Vincent Le Goff about 3 years ago
The networking protocol is now going to be handled by twisted.conch.telnet.Telnet which provides support for common Telnet options and a convenient handling of messages. Seeing as the network and UI will run in separate threads, however, it is necessary to use an adequate system to communicate between them.
#4 Updated by Vincent Le Goff about 3 years ago
- Checklist item Re-structure the client's hierarchy to allow other protocols. set to Done
Please register to edit this issue