Advertisement
Guest User

inmemorytransport

a guest
Jun 19th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.47 KB | None | 0 0
  1. using System.Linq;
  2. using System.Reactive.Concurrency;
  3. using System.Threading.Tasks;
  4. using WampSharp.Binding;
  5. using WampSharp.V2;
  6. using WampSharp.V2.Binding;
  7. using WampSharp.V2.Client;
  8. using WampSharp.V2.Rpc;
  9. using WampSharp.V2.Transports;
  10.  
  11. namespace Demo
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             JTokenJsonBinding jsonBinding = new JTokenJsonBinding();
  18.  
  19.             WampPlayground playground = new WampPlayground(jsonBinding);
  20.  
  21.             const string realm = "realm1";
  22.  
  23.             IWampChannel calleeChannel = playground.CreateChannel(realm, jsonBinding);
  24.             IWampChannel callerChannel = playground.CreateChannel(realm, jsonBinding);
  25.  
  26.             calleeChannel.Open();
  27.             callerChannel.Open();
  28.  
  29.             calleeChannel.RealmProxy.Services.RegisterCallee(new Add2Service());
  30.  
  31.             IAdd2AsyncService proxy =
  32.                 callerChannel.RealmProxy.Services.GetCalleeProxy<IAdd2AsyncService>();
  33.  
  34.             var nine = proxy.Add2(4, 5);
  35.         }
  36.     }
  37.  
  38.     public class WampPlayground
  39.     {
  40.         private readonly WampHost mWampHost;
  41.         private readonly InMemoryTransport mTransport;
  42.         private readonly WampChannelFactory mChannelFactory;
  43.  
  44.         public WampPlayground(params IWampBinding[] binding)
  45.         {
  46.             mWampHost = new WampHost();
  47.             mChannelFactory = new WampChannelFactory();
  48.             mTransport = new InMemoryTransport(DefaultScheduler.Instance);
  49.             Host.RegisterTransport(mTransport, new[] { new InMemoryBinding() }.Concat(binding));
  50.             Host.Open();
  51.         }
  52.  
  53.         public WampHost Host
  54.         {
  55.             get
  56.             {
  57.                 return mWampHost;
  58.             }
  59.         }
  60.  
  61.         public IWampChannel CreateChannel<TMessage>(string realm, IWampTextBinding<TMessage> binding)
  62.         {
  63.             return mChannelFactory.CreateChannel
  64.             (realm,
  65.                 mTransport.CreateClientConnection(binding, DefaultScheduler.Instance),
  66.                 binding);
  67.         }
  68.     }
  69.  
  70.     public class Add2Service : IAdd2Service
  71.     {
  72.         public int Add2(int x, int y)
  73.         {
  74.             return (x + y);
  75.         }
  76.     }
  77.  
  78.     public interface IAdd2AsyncService
  79.     {
  80.         [WampProcedure("com.example.add2")]
  81.         Task<int> Add2(int a, int b);
  82.     }
  83.  
  84.     public interface IAdd2Service
  85.     {
  86.         [WampProcedure("com.example.add2")]
  87.         int Add2(int a, int b);
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement