[
https://issues.apache.org/jira/browse/THRIFT-3083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14516786#comment-14516786
]
ASF GitHub Bot commented on THRIFT-3083:
----------------------------------------
Github user jeking3 closed the pull request at:
https://github.com/apache/thrift/pull/466
> C++ Consolidate server processing loops in TSimpleServer, TThreadedServer,
> TThreadPoolServer
> --------------------------------------------------------------------------------------------
>
> Key: THRIFT-3083
> URL: https://issues.apache.org/jira/browse/THRIFT-3083
> Project: Thrift
> Issue Type: Improvement
> Components: C++ - Library
> Affects Versions: 0.8, 0.9, 0.9.1, 0.9.2
> Reporter: James E. King, III
> Attachments: THRIFT-3083-server-files.tar, THRIFT-3083.patch
>
>
> Currently the simple and threaded servers all share a very similar serve()
> workflow. This improvement story is to consolidate them and extract out the
> specific differences to limit code duplication.
> 1. Add TServerFramework that implements serve() and stop() for TServer, but
> is abstract.
> 2. Add virtual methods onClientConnected, onClientDisconnected to
> TServerFramework and require subclasses to implement them.
> 3. TSimpleServer onClientConnected calls TConnectedClient().run() in the
> serve() thread, thus blocking the server thread until the client disconnects.
> 4. TThreadedServer::serve() calls TServerFramework::serve() and then waits
> for the notification that all clients are gone. ::onClientConnected adds a
> TConnectedClient to the task set and starts a thread for it.
> ::onClientDisconnected removes the client from the task set.
> 5. TThreadPoolServer would have similar changes.
> The resulting classes will be much smaller, and the specific differences
> between the servers will be more obvious. Further, the server processing
> loop which is common to all three will be in one place. This improves the
> predictability of thrift and helps improve maintainability.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)