static void Main(string[] args) { Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor); RemotingSystem.Start("127.0.0.1", 12000); Actor.SpawnNamed(Actor.FromProducer(() => new EchoActor()), "remote"); Console.ReadLine(); }
static void Main(string[] args) { Serialization.RegisterFileDescriptor(ChatReflection.Descriptor); RemotingSystem.Start("127.0.0.1", 0); var server = new PID("127.0.0.1:8080", "chatserver"); var props = Actor.FromFunc(ctx => { switch (ctx.Message) { case Connected connected: Console.WriteLine(connected.Message); break; case SayResponse sayResponse: Console.WriteLine($"{sayResponse.UserName} {sayResponse.Message}"); break; case NickResponse nickResponse: Console.WriteLine($"{nickResponse.OldUserName} is now {nickResponse.NewUserName}"); break; } return(Actor.Done); }); var client = Actor.Spawn(props); server.Tell(new Connect { Sender = client }); var nick = "Alex"; while (true) { var text = Console.ReadLine(); if (text.Equals("/exit")) { return; } if (text.StartsWith("/nick ")) { var t = text.Split(' ')[1]; server.Tell(new NickRequest { OldUserName = nick, NewUserName = t }); nick = t; } else { server.Tell(new SayRequest { UserName = nick, Message = text }); } } }
static void Main(string[] args) { Console.WriteLine($"Is Server GC {GCSettings.IsServerGC}"); Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor); RemotingSystem.Start("127.0.0.1", 12000); Actor.SpawnNamed(Actor.FromProducer(() => new PongActor()), "remote"); Console.ReadLine(); }
static void Main(string[] args) { Serialization.RegisterFileDescriptor(ChatReflection.Descriptor); RemotingSystem.Start("127.0.0.1", 8000); var clients = new HashSet <PID>(); var props = Actor.FromFunc(ctx => { switch (ctx.Message) { case Connect connect: Console.WriteLine($"Client {connect.Sender} connected"); clients.Add(connect.Sender); connect.Sender.Tell(new Connected { Message = "Welcome!" }); break; case SayRequest sayRequest: foreach (var client in clients) { client.Tell(new SayResponse { UserName = sayRequest.UserName, Message = sayRequest.Message }); } break; case NickRequest nickRequest: foreach (var client in clients) { client.Tell(new NickResponse { OldUserName = nickRequest.OldUserName, NewUserName = nickRequest.NewUserName }); } break; } return(Actor.Done); }); Actor.SpawnNamed(props, "chatserver"); Console.ReadLine(); }
static void Main(string[] args) { Console.WriteLine($"Is Server GC {GCSettings.IsServerGC}"); Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor); RemotingSystem.Start("127.0.0.1", 12001); var messageCount = 1000000; var wg = new AutoResetEvent(false); var props = Actor.FromProducer(() => new LocalActor(0, messageCount, wg)); var pid = Actor.Spawn(props); var remote = new PID("127.0.0.1:12000", "remote"); remote.RequestAsync <Start>(new StartRemote { Sender = pid }).Wait(); var start = DateTime.Now; Console.WriteLine("Starting to send"); var msg = new Ping(); for (var i = 0; i < messageCount; i++) { remote.Tell(msg); } wg.WaitOne(); var elapsed = DateTime.Now - start; Console.WriteLine("Elapsed {0}", elapsed); var t = messageCount * 2.0 / elapsed.TotalMilliseconds * 1000; Console.WriteLine("Throughput {0} msg / sec", t); Console.ReadLine(); }