THRIFT-3397 Implement TProcessorFactory in C# to enable per-client processors
Client: C#
Patch: Jonathan Heard

This closes #663
diff --git a/lib/csharp/src/Server/TSimpleServer.cs b/lib/csharp/src/Server/TSimpleServer.cs
index 267b470..c73fecf 100644
--- a/lib/csharp/src/Server/TSimpleServer.cs
+++ b/lib/csharp/src/Server/TSimpleServer.cs
@@ -61,10 +61,24 @@
     }
 
     public TSimpleServer(TProcessor processor,
+        TServerTransport serverTransport,
+        TTransportFactory transportFactory,
+        TProtocolFactory protocolFactory)
+        : base(processor,
+           serverTransport,
+           transportFactory,
+           transportFactory,
+           protocolFactory,
+           protocolFactory,
+           DefaultLogDelegate)
+    {
+    }
+
+    public TSimpleServer(TProcessorFactory processorFactory,
               TServerTransport serverTransport,
               TTransportFactory transportFactory,
               TProtocolFactory protocolFactory)
-      : base(processor,
+      : base(processorFactory,
          serverTransport,
          transportFactory,
          transportFactory,
@@ -92,6 +106,7 @@
 
       while (!stop)
       {
+        TProcessor processor = null;
         TTransport client = null;
         TTransport inputTransport = null;
         TTransport outputTransport = null;
@@ -102,6 +117,7 @@
         {
           using (client = serverTransport.Accept())
           {
+            processor = processorFactory.GetProcessor(client);
             if (client != null)
             {
               using (inputTransport = inputTransportFactory.GetTransport(client))