mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 02:45:22 +00:00
87e4980df0
Patch: Nils Huegelmann git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1095179 13f79535-47bb-0310-9956-ffa450edef68
57 lines
1.2 KiB
C#
57 lines
1.2 KiB
C#
using System;
|
|
using Thrift;
|
|
using Thrift.Server;
|
|
using Thrift.Transport;
|
|
using Thrift.Protocol;
|
|
using ZMQ;
|
|
using System.IO;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
namespace ZmqServer
|
|
{
|
|
public class TZmqServer
|
|
{
|
|
Socket _socket ;
|
|
TProcessor _processor;
|
|
|
|
void debug (string msg)
|
|
{
|
|
//Uncomment to enable debug
|
|
// Console.WriteLine (msg);
|
|
}
|
|
|
|
public TZmqServer (TProcessor processor, Context ctx, String endpoint, SocketType sockType)
|
|
{
|
|
new TSimpleServer (processor,null);
|
|
_socket = ctx.Socket (sockType);
|
|
_socket.Bind (endpoint);
|
|
_processor = processor;
|
|
}
|
|
|
|
public void ServeOne ()
|
|
{
|
|
debug ("Server_ServeOne");
|
|
Byte[] msg = _socket.Recv ();
|
|
MemoryStream istream = new MemoryStream (msg);
|
|
MemoryStream ostream = new MemoryStream ();
|
|
TProtocol tProtocol = new TBinaryProtocol (new TStreamTransport (istream, ostream));
|
|
_processor.Process (tProtocol, tProtocol);
|
|
|
|
if (ostream.Length != 0) {
|
|
byte[] newBuf = new byte[ostream.Length];
|
|
Array.Copy (ostream.GetBuffer (), newBuf, ostream.Length);
|
|
debug (string.Format ("Server_ServeOne sending {0}b", ostream.Length));
|
|
_socket.Send (newBuf);
|
|
}
|
|
}
|
|
|
|
public void Serve ()
|
|
{
|
|
while (true)
|
|
ServeOne ();
|
|
}
|
|
}
|
|
}
|
|
|