コード例 #1
0
ファイル: Example.cs プロジェクト: ciker/Meepo
        public void ExampleMethod()
        {
            var config = new MeepoConfig
            {
                Logger = new ConsoleLogger()
            };

            // IP Address to expose
            var address = new TcpAddress(IPAddress.Loopback, 9201);

            // Nodes to connect to
            var serverAddresses = new[] { new TcpAddress(IPAddress.Loopback, 9200) };

            using (var meepo = new MeepoNode(address, serverAddresses, config))
            {
                meepo.Start();

                meepo.MessageReceived += x => System.Console.WriteLine(x.Bytes.Decode());

                while (true)
                {
                    var text = System.Console.ReadLine();

                    if (text.ToLower() == "q")
                    {
                        break;
                    }

                    meepo.SendAsync(text).Wait();
                }
            }
        }
コード例 #2
0
        public static void Main()
        {
            var config = new MeepoConfig
            {
                BufferSizeInBytes = 1000,
                Logger            = new ConsoleLogger()
            };

            var address         = new TcpAddress(IPAddress.Loopback, 9201);
            var serverAddresses = new[] { new TcpAddress(IPAddress.Loopback, 9200) };

            using (meepoNode = new MeepoNode(address, serverAddresses, config))
            {
                meepoNode.Start();

                meepoNode.MessageReceived += OnMessageReceived;

                while (true)
                {
                    var text = System.Console.ReadLine();

                    if (text.ToLower() == "q")
                    {
                        return;
                    }

                    meepoNode.SendAsync(text).Wait();
                }
            }
        }
コード例 #3
0
        public void Ctor_WhenCalledWithNullServers_ShouldThrowException()
        {
            var listenerAddress = new TcpAddress(IPAddress.Any, 80);
            var config          = new MeepoConfig();

            Assert.Throws <ArgumentNullException>(() => new MeepoNode(listenerAddress, serverAddresses: null));
            Assert.Throws <ArgumentNullException>(() => new MeepoNode(listenerAddress, null, config));
        }
コード例 #4
0
ファイル: MeepoServerTests.cs プロジェクト: ciker/Meepo
        private MeepoServer GetSutObject()
        {
            var config = new MeepoConfig
            {
                Logger = logger.Object
            };

            return(new MeepoServer(clientManagerProvider.Object, config));
        }
コード例 #5
0
 public ClientFactory(MeepoConfig config,
                      CancellationToken cancellationToken,
                      MessageReceivedHandler messageReceived,
                      ClientConnectionFailed clientConnectionFailed)
 {
     this.config                 = config;
     this.cancellationToken      = cancellationToken;
     this.messageReceived        = messageReceived;
     this.clientConnectionFailed = clientConnectionFailed;
 }
コード例 #6
0
        public void Ctor_WhenCalledWithNullLogger_ShouldThrowException()
        {
            var listenerAddress = new TcpAddress(IPAddress.Any, 80);
            var serverAddresses = new TcpAddress[0];
            var config          = new MeepoConfig
            {
                Logger = null
            };

            Assert.Throws <ArgumentNullException>(() => new MeepoNode(listenerAddress, config));
            Assert.Throws <ArgumentNullException>(() => new MeepoNode(listenerAddress, serverAddresses, config));
        }
コード例 #7
0
        public ClientManager(
            TcpListener listener,
            IEnumerable <TcpAddress> serverAddresses,
            CancellationToken cancellationToken,
            MeepoConfig config,
            MessageReceivedHandler messageReceived)
        {
            this.listener          = listener;
            this.serverAddresses   = serverAddresses;
            this.cancellationToken = cancellationToken;

            clientFactory = new ClientFactory(config, cancellationToken, messageReceived, RemoveClient);
        }
コード例 #8
0
ファイル: ClientManagerProvider.cs プロジェクト: ciker/Meepo
        public ClientManagerProvider(
            MeepoConfig config,
            TcpAddress listenerAddress,
            IEnumerable <TcpAddress> serverAddresses,
            MessageReceivedHandler messageReceived)
        {
            logger = config.Logger;

            this.config          = config;
            this.listenerAddress = listenerAddress;
            this.serverAddresses = serverAddresses;
            this.messageReceived = messageReceived;
        }
コード例 #9
0
        public ClientWrapper(
            TcpAddress address,
            MeepoConfig config,
            CancellationToken cancellationToken,
            MessageReceivedHandler messageReceived,
            ClientConnectionFailed clientConnectionFailed)
            : this(config, cancellationToken, messageReceived, clientConnectionFailed)
        {
            Address = address;

            IsToServer = true;

            Connected = Connect().Result;
        }
コード例 #10
0
        private ClientWrapper(
            MeepoConfig config,
            CancellationToken cancellationToken,
            MessageReceivedHandler messageReceived,
            ClientConnectionFailed clientConnectionFailed)
        {
            Id = Guid.NewGuid();

            logger = config.Logger;

            this.config                 = config;
            this.cancellationToken      = cancellationToken;
            this.messageReceived        = messageReceived;
            this.clientConnectionFailed = clientConnectionFailed;
        }
コード例 #11
0
        public ClientWrapper(
            TcpClient client,
            MeepoConfig config,
            CancellationToken cancellationToken,
            MessageReceivedHandler messageReceived,
            ClientConnectionFailed clientConnectionFailed)
            : this(config, cancellationToken, messageReceived, clientConnectionFailed)
        {
            IsToServer = false;

            Client = client;

            Client.ApplyConfig(config);

            Connected = true;

            StartListening();
        }
コード例 #12
0
ファイル: IntegrationTestHelpers.cs プロジェクト: ciker/Meepo
        public static MeepoNode StartServer(int port, ILogger logger, MessageReceivedHandler messageReceived, int buffer = 1000)
        {
            var address = new TcpAddress(IPAddress.Loopback, port);

            var config = new MeepoConfig
            {
                Logger            = logger,
                BufferSizeInBytes = buffer
            };

            var tmp = new MeepoNode(address, config);

            tmp.MessageReceived += messageReceived;

            tmp.Start();

            return(tmp);
        }
コード例 #13
0
ファイル: MeepoServer.cs プロジェクト: ciker/Meepo
        public MeepoServer(IClientManagerProvider clientManagerProvider, MeepoConfig config)
        {
            this.clientManagerProvider = clientManagerProvider;

            logger = config.Logger;
        }
コード例 #14
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="listenerAddress">Address you want to expose</param>
        /// <param name="serverAddresses">List of server addresses to connect to</param>
        /// <param name="config">Custom MeepoNode configuration</param>
        public MeepoNode(TcpAddress listenerAddress, IEnumerable <TcpAddress> serverAddresses, MeepoConfig config)
        {
            if (serverAddresses == null)
            {
                throw new ArgumentNullException(nameof(serverAddresses));
            }
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (config.Logger == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            var clientManagerProvider = new ClientManagerProvider(config, listenerAddress, serverAddresses, OnMessageReceived);

            server       = new MeepoServer(clientManagerProvider, config);
            stateMachine = new MeepoStateMachine(config.Logger);
        }
コード例 #15
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="listenerAddress">Address you want to expose</param>
 /// <param name="config">Custom MeepoNode configuration</param>
 public MeepoNode(TcpAddress listenerAddress, MeepoConfig config) : this(listenerAddress, new TcpAddress[] { }, config)
 {
 }
コード例 #16
0
ファイル: MessageBufferReader.cs プロジェクト: ciker/Meepo
 public MessageBufferReader(MeepoConfig config, TcpClient client, MessageReceivedHandler messageReceived)
 {
     this.config          = config;
     this.client          = client;
     this.messageReceived = messageReceived;
 }