| 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()); | 
 | 			} | 
 | 		} | 
 | 	} | 
 | } |