[
https://issues.apache.org/jira/browse/THRIFT-3083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14521329#comment-14521329
]
Hudson commented on THRIFT-3083:
--------------------------------
SUCCESS: Integrated in Thrift #1523 (See
[https://builds.apache.org/job/Thrift/1523/])
THRIFT-3083 consolidate simple and threaded server run loops (roger: rev
21b68524084cb47ada51701aa13061d8820d15e5)
* lib/cpp/src/thrift/server/TSimpleServer.cpp
* lib/cpp/src/thrift/server/TServerFramework.cpp
* lib/cpp/Makefile.am
* lib/cpp/src/thrift/server/TThreadedServer.cpp
* lib/cpp/src/thrift/server/TConnectedClient.cpp
* lib/cpp/src/thrift/server/TServerFramework.h
* lib/cpp/src/thrift/server/TConnectedClient.h
* lib/cpp/src/thrift/server/TThreadedServer.h
* lib/cpp/CMakeLists.txt
* lib/cpp/src/thrift/server/TThreadPoolServer.h
* lib/cpp/src/thrift/server/TThreadPoolServer.cpp
* lib/cpp/src/thrift/server/TSimpleServer.h
> 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
> Fix For: 0.9.3
>
> 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)