Jonathan Heard created THRIFT-3397: -------------------------------------- Summary: 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
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)