Пример #1
0
 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();
 }
Пример #2
0
    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
                });
            }
        }
    }
Пример #3
0
        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();
        }
Пример #4
0
    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();
    }
Пример #5
0
        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();
        }