[ https://issues.apache.org/jira/browse/THRIFT-3397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14973260#comment-14973260 ]
Jens Geyer commented on THRIFT-3397: ------------------------------------ Cool. Looking forward to it! > Implement TProcessorFactory in C# to enable per-client processors > ----------------------------------------------------------------- > > Key: THRIFT-3397 > URL: https://issues.apache.org/jira/browse/THRIFT-3397 > Project: Thrift > Issue Type: New Feature > Components: C# - Library > Affects Versions: 0.9.3 > Reporter: Jonathan Heard > Priority: Minor > Labels: performance, thread-safety > Original Estimate: 168h > Remaining Estimate: 168h > > The current TServer implementations in C# take a single instance of a > TProcessor to be used for all client connections. This is not guaranteed to > be thread-safe and can become a significant bottleneck. > I am implementing a TProcessorFactory interface for C# which is similar to > the ones already implemented in Java and C++. I'll generate a pull request > for review soon. > The existing solutions implement TProcessorFactory as a class which takes a > TProcessor and just returns that instance to all clients. I'm aiming to > improve on that by creating a TProcessorFactory interface and then > implementing it in two core classes: > 1) TSingletonProcessorFactory - this behaves the same as the Java > 'TProcessorFactory' class. > 2) TPrototypeProcessorFactory<Processor,Handler> - this effectively returns a > 'new Processor(Handler)' giving every new client its own processor. > In order to avoid breaking the existing API (and in-keeping with the Java > implementation), I have changed TServer so that it uses a TProcessorFactory > instead of TProcessor and updated all relevant constructors so they call the > TSingletonProcessorFactory for constructors using TProcessor. New > constructors have been added to enable calling with TProcessorFactory. This > approach should avoid breaking the established API and not break any existing > code. > I've also updated the TestServer.cs to support these changes. -- This message was sent by Atlassian JIRA (v6.3.4#6332)