public bool RegisterNode(ServerAddress selfAddress)
        {
            var        channel  = OpenConnection();
            var        client   = new PublisherServer.PublisherServerClient(channel);
            AckMessage response = new AckMessage();

            try
            {
                CLI.DisplayLine("Attempting connection");
                response = client.RegisterNode(new ServerAddressMessage
                {
                    Ip = selfAddress.Ip
                    ,
                    Port = selfAddress.Port
                });
            } catch (RpcException)
            {
                CLI.DisplayLine("Connection failed");
                return(false);
            }

            channel.ShutdownAsync().Wait();

            return(response.Status == AckMessage.Types.Status.Ok);
        }
Пример #2
0
        public List <ServerAddress> RequestNodes()
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var response = client.RequestNodes(
                new ServerAddressMessage()
            {
                Ip = ServerAddress.EmptyAddress.Ip
                ,
                Port = ServerAddress.EmptyAddress.Port
            }
                );

            channel.ShutdownAsync();

            List <ServerAddress> ret = new List <ServerAddress>();

            foreach (var n in response.AddressList)
            {
                ret.Add(new ServerAddress()
                {
                    Ip = n.Ip
                    ,
                    Port = n.Port
                });
            }

            return(ret);
        }
        public AckMessage PingNode()
        {
            var channel  = OpenConnection();
            var client   = new PublisherServer.PublisherServerClient(channel);
            var response = client.Ping(new PingRequest());

            channel.ShutdownAsync().Wait();

            return(response);
        }
        public Chain RequestFullChain()
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var response = client.RequestFullChain(new ServerAddressMessage
            {
                Ip = serverAddress.Ip
                ,
                Port = serverAddress.Port
            });

            channel.ShutdownAsync().Wait();

            return(new Chain(response.Xml));
        }
        public AckMessage SendChain(Chain chain)
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var response = client.ReceiveChain(new ChainMessage
            {
                SenderAddress = new ServerAddressMessage()
                {
                    Ip = selfAddress.Ip
                    ,
                    Port = selfAddress.Port
                }
                ,
                Xml = chain.AsXML()
            });

            return(response);
        }
Пример #6
0
        public AckMessage SendTransaction(ITransaction transaction)
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var senderAddress = new ServerAddressMessage()
            {
                Ip     = ServerAddress.EmptyAddress.Ip
                , Port = ServerAddress.EmptyAddress.Port
            };

            var response = client.ReceiveTransaction(new TransactionMessage()
            {
                SenderAddress = senderAddress
                , Xml         = new TransactionWrapper(transaction).AsXML()
            });;

            channel.ShutdownAsync().Wait();

            return(response);
        }
        public Chain RequestDeltaChain(long currentIndex)
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var response = client.RequestDeltaChain(new DeltaRequest
            {
                SenderAddress = new ServerAddressMessage()
                {
                    Ip = selfAddress.Ip
                    ,
                    Port = selfAddress.Port
                }
                ,
                CurrentIndex = currentIndex
            });

            channel.ShutdownAsync().Wait();

            return(new Chain(response.Xml));
        }
Пример #8
0
        public List <Physician> RequestPhysicians()
        {
            var channel = OpenConnection();
            var client  = new PublisherServer.PublisherServerClient(channel);

            var response = client.RequestPendingPhysicians(new ServerAddressMessage()
            {
                Ip = ServerAddress.EmptyAddress.Ip
                ,
                Port = ServerAddress.EmptyAddress.Port
            });

            List <Physician> ret = new List <Physician>();

            foreach (var p in response.PhysicianList)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Physician), new Type[] { typeof(ITransaction) });
                Physician     physician  = (Physician)serializer.Deserialize(new StringReader(p.Xml));
                ret.Add(physician);
            }

            return(ret);
        }