using System; using System.Threading; using Thrift.Protocol; using ZMQ; using ZmqServer; using ZmqClient; namespace ZmqServer { class MainClass { public static void Main (string[] args) { new Thread(Server.serve).Start(); Client.work(); } static class Server{ public static void serve(){ StorageHandler s=new StorageHandler(); Storage.Processor p=new Storage.Processor(s); ZMQ.Context c=new ZMQ.Context(); TZmqServer tzs=new TZmqServer(p,c,"tcp://127.0.0.1:9090",ZMQ.SocketType.PAIR); tzs.Serve(); } class StorageHandler:Storage.Iface{ int val=0; public void incr(int amount){ val+=amount; Console.WriteLine("incr({0})",amount); } public int get(){ return val; } } } static class Client{ public static void work() { Context ctx=new Context(); TZmqClient tzc=new TZmqClient(ctx,"tcp://127.0.0.1:9090",SocketType.PAIR); TBinaryProtocol p=new TBinaryProtocol(tzc); Storage.Client client=new Storage.Client(p); tzc.Open(); Console.WriteLine(client.@get()); client.incr(1); client.incr(41); Console.WriteLine(client.@get()); } } } }