Beispiel #1
0
 public static void RegisterWithMasterServer(int port, string gameName, string gameDescription, string gameType)
 {
     try
     {
         TcpClient client = new TcpClient()
         {
             SendTimeout = 5, ReceiveTimeout = 5
         };
         client.Connect(MasterServerAddress, masterServerPort);
         using (Stream stream = client.GetStream())
         {
             var obj = new RegisterServerRequest()
             {
                 serverInfo =
                     new ServerInfo()
                 {
                     port                = port,
                     gameDescription     = gameDescription,
                     gameName            = gameName,
                     gametype            = gameType,
                     maxPlayers          = Network.maxConnections,
                     numConnectedPlayers = Network.connections.Length
                 }
             };
             var buffer = new byte[4096];
             var xs     = new XmlSerializer(typeof(RegisterServerRequest));
             xs.Serialize(new MemoryStream(buffer), obj);
             stream.Write(buffer, 0, buffer.Length);
         }
     }
     catch (Exception e)
     {
         Debug.LogError("Error registering with the Master Server:\n" + e.ToString());
     }
 }
Beispiel #2
0
        public async Task <RegisterServerResponse> Register(RegisterServerRequest request)
        {
            var result = ServerRegistryResult.Ok;
            var record = await _repository.RetrieveByServerID(request.Server.Id);

            if (record != null && DateTime.UtcNow < record.DateExpire.ToUniversalTime())
            {
                result = ServerRegistryResult.FailedAlreadyRegistered;
            }

            if (result == ServerRegistryResult.Ok)
            {
                var newRecord = new ServerRegistryRecord(request.Server)
                {
                    DateExpire = DateTime.UtcNow.Add(ServerRegistryTimeoutDuration)
                };

                if (record != null)
                {
                    await _repository.Delete(record);
                }
                await _repository.Insert(newRecord);
            }

            return(new RegisterServerResponse {
                Result = result
            });
        }
        protected override Message CreateFirstMessage()
        {
            Message m = new RegisterServerRequest(Server);

            Server.ActiveUsers = ULRM.Users.Count;
            return(m);
        }
        /// <summary>
        /// Register server to DSM and mark this machine as ready
        /// </summary>
        /// <param name="podName">Should be taken from "POD_NAME" environment variable</param>
        /// <param name="port">Exposed port number to connect to</param>
        /// <param name="callback">Returns a Result via callback when completed</param>
        public void RegisterServer(string podName, int portNumber, ResultCallback callback)
        {
            Report.GetFunctionLog(this.GetType().Name);

            Assert.IsNotNull(podName, "Can't Register server; podName is null!");

            if (!this.serverSession.IsValid())
            {
                Debug.Log("Server RegisterServer session is not valid");
                callback.TryError(ErrorCode.IsNotLoggedIn);

                return;
            }

            this.name = podName;
            var request = new RegisterServerRequest {
                pod_name = this.name, port = portNumber
            };

            this.coroutineRunner.Run(this.api.RegisterServer(request, this.serverSession.AuthorizationToken, callback));

            if (this.isHeartBeatAutomatic)
            {
                this.heartBeatCoroutine = this.coroutineRunner.Run(RunPeriodicHeartBeat());
            }
        }
Beispiel #5
0
        public IEnumerator RegisterServer(RegisterServerRequest registerRequest, string accessToken,
                                          ResultCallback callback)
        {
            Assert.IsNotNull(registerRequest, "Register failed. registerserverRequest is null!");
            Assert.IsNotNull(accessToken, "Can't update a slot! accessToken parameter is null!");

            registerRequest.ip           = serverSetup.ip;
            registerRequest.provider     = serverSetup.provider;
            registerRequest.game_version = serverSetup.game_version;

            var request = HttpRequestBuilder.CreatePost(this.baseUrl + "/namespaces/{namespace}/servers/register")
                          .WithPathParam("namespace", this.namespace_)
                          .WithBearerAuth(accessToken)
                          .WithContentType(MediaType.ApplicationJson)
                          .Accepts(MediaType.ApplicationJson)
                          .WithBody(registerRequest.ToUtf8Json())
                          .GetResult();

            IHttpResponse response = null;

            yield return(this.httpClient.SendRequest(request, rsp => response = rsp));

            var result = response.TryParseJson <ServerInfo>();

            if (!result.IsError)
            {
                serverSetup.pod_name = result.Value.pod_name;
                serverType           = ServerType.CLOUDSERVER;
            }
            callback.Try(response.TryParse());
        }
Beispiel #6
0
        public static LogEntry For(RegisterServerRequest request)
        {
            LogEntry entry = new LogEntry("RegisterServerRequest");

            entry.Add("RequestHeader", For(request.RequestHeader));
            entry.Add("Server", For(request.Server));
            return(entry);
        }
Beispiel #7
0
        /// <summary>
        /// Register server to DSM and mark this machine as ready
        /// </summary>
        /// <param name="port">Exposed port number to connect to</param>
        /// <param name="callback">Returns a Result via callback when completed</param>
        public void RegisterServer(int portNumber, ResultCallback callback)
        {
            Report.GetFunctionLog(this.GetType().Name);

            if (!this.serverSession.IsValid())
            {
                AccelByteDebug.Log("Server RegisterServer session is not valid");
                callback.TryError(ErrorCode.IsNotLoggedIn);

                return;
            }

            this.name = Environment.GetEnvironmentVariable("POD_NAME");
            var request = new RegisterServerRequest {
                pod_name = this.name, port = portNumber
            };

            this.coroutineRunner.Run(this.api.RegisterServer(request, this.serverSession.AuthorizationToken, callback));
        }
Beispiel #8
0
        internal DedicatedServerManagerApi(string baseUrl, string namespace_, IHttpWorker httpWorker)
        {
            Debug.Log("ServerApi init serverapi start");
            Assert.IsNotNull(baseUrl, "Creating " + GetType().Name + " failed. Parameter baseUrl is null");
            Assert.IsFalse(
                string.IsNullOrEmpty(namespace_),
                "Creating " + GetType().Name + " failed. Parameter namespace is null.");
            Assert.IsNotNull(httpWorker, "Creating " + GetType().Name + " failed. Parameter httpWorker is null");

            this.baseUrl     = baseUrl;
            this.namespace_  = namespace_;
            this.httpWorker  = httpWorker;
            this.serverSetup = new RegisterServerRequest()
            {
                game_version = "",
                ip           = "",
                pod_name     = "",
                provider     = ""
            };

            ParseArgsAndServerSetup();
        }
        public IEnumerator RegisterServer(RegisterServerRequest registerRequest, string accessToken,
                                          ResultCallback callback)
        {
            Assert.IsNotNull(registerRequest, "Register failed. registerserverRequest is null!");
            Assert.IsNotNull(accessToken, "Can't update a slot! accessToken parameter is null!");

            var request = HttpRequestBuilder.CreatePost(this.baseUrl + "/namespaces/{namespace}/servers/register")
                          .WithPathParam("namespace", this.namespace_)
                          .WithBearerAuth(accessToken)
                          .WithContentType(MediaType.ApplicationJson)
                          .Accepts(MediaType.ApplicationJson)
                          .WithBody(registerRequest.ToUtf8Json())
                          .GetResult();

            IHttpResponse response = null;

            yield return(this.httpWorker.SendRequest(request, rsp => response = rsp));

            var result = response.TryParse();

            callback.Try(result);
        }
        protected override void ExecuteDetails(object context)
        {
            RegisterServerRequest incoming = (RegisterServerRequest)context;
            Server s = incoming.Server;

            s.ChatServerEndpoint = RemoteEndPoint;
            SLRM.Add(RemoteEndPoint, s);

            //RegisteredServerManager MyRSM = RegisteredServerManager.GetInstance();
            //MyRSM.Add(CreateIPEndPoint(incoming.ChatServerEndpoint));

            var acknowledgement = new Acknowledge(ResponseCodes.SUCCESS, "true");
            var envelope        = new Envelope()
            {
                Message = acknowledgement, EndPoint = RemoteEndPoint
            };

            if (!Send(envelope))
            {
                Error = "Cannot send back acknowledgement";
            }
        }
Beispiel #11
0
        public IEnumerator RegisterServer(RegisterServerRequest registerRequest, string accessToken,
                                          ResultCallback callback)
        {
            Assert.IsNotNull(registerRequest, "Register failed. registerserverRequest is null!");
            Assert.IsNotNull(accessToken, "Can't update a slot! accessToken parameter is null!");
            if (this.serverType != ServerType.NONE)
            {
                callback.TryError(ErrorCode.Conflict, "Server is already registered.");

                yield break;
            }
            if (dsmServerUrl.Length == 0)
            {
                ServerQos qos = AccelByteServerPlugin.GetQos();
                Result <Dictionary <string, int> > latenciesResult = null;
                qos.GetServerLatencies(reqResult => latenciesResult = reqResult);
                yield return(new WaitUntil(() => latenciesResult != null));

                foreach (KeyValuePair <string, int> latency in latenciesResult.Value.OrderBy(item => item.Value))
                {
                    var getUrlRequest = HttpRequestBuilder.CreateGet(this.baseUrl + "/public/dsm?region=" + latency.Key)
                                        .WithBearerAuth(accessToken)
                                        .WithContentType(MediaType.ApplicationJson)
                                        .Accepts(MediaType.ApplicationJson)
                                        .GetResult();

                    IHttpResponse getUrlResponse = null;

                    yield return(this.httpWorker.SendRequest(getUrlRequest, rsp => getUrlResponse = rsp));

                    var getUrlResult = getUrlResponse.TryParseJson <DSMClient>();
                    if (getUrlResult.Value.status == "HEALTHY")
                    {
                        dsmServerUrl = getUrlResult.Value.host_address;
                        break;
                    }
                }
            }
            if (serverSetup.ip.Length == 0)
            {
                var getPubIpRequest = HttpRequestBuilder.CreateGet("https://api.ipify.org?format=json")
                                      .WithContentType(MediaType.ApplicationJson)
                                      .Accepts(MediaType.ApplicationJson)
                                      .GetResult();

                IHttpResponse getPubIpResponse = null;

                yield return(this.httpWorker.SendRequest(getPubIpRequest, rsp => getPubIpResponse = rsp));

                var getPubIpResult = getPubIpResponse.TryParseJson <PubIp>();
                serverSetup.ip = getPubIpResult.Value.ip;
            }

            if (IsCurrentProvider(Provider.AGONES))
            {
#if ENABLE_AGONES_PLUGIN
                InitiateAgones(callback);
#else
                callback.TryError(ErrorCode.NotFound,
                                  "Can't request register server. Agones provider arguments is passed but Agones plugin is not found.");
#endif
            }
            else
            {
                registerRequest.ip           = serverSetup.ip;
                registerRequest.provider     = serverSetup.provider;
                registerRequest.game_version = serverSetup.game_version;

                var request = HttpRequestBuilder.CreatePost(this.dsmServerUrl + "/dsm/namespaces/{namespace}/servers/register")
                              .WithPathParam("namespace", this.namespace_)
                              .WithBearerAuth(accessToken)
                              .WithContentType(MediaType.ApplicationJson)
                              .Accepts(MediaType.ApplicationJson)
                              .WithBody(registerRequest.ToUtf8Json())
                              .GetResult();

                IHttpResponse response = null;

                yield return(this.httpWorker.SendRequest(request, rsp => response = rsp));

                var result = response.TryParseJson <ServerInfo>();
                if (!result.IsError)
                {
                    serverSetup.pod_name = result.Value.pod_name;
                    serverType           = ServerType.CLOUDSERVER;
                }
                callback.Try(response.TryParse());
            }
        }
Beispiel #12
0
        public void TestMessageGettersSetters()
        {
            // Test Message constructor

            // Setup
            Message m1 = new SendMessageRequest("my group id", "Hello World", "Me");
            Message m2 = new SendMessageRequest("my group id", "Hello World", "Me");

            // Tests
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(SendMessageRequest)));
            Assert.AreNotEqual(m1.MessageId, m2.MessageId);

            // Setup
            Server s = new Server();

            s.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("1.1.1.1"), 49);
            s.Hostname           = "TestHostName";
            s.ActiveUsers        = 14;
            Message m3 = new RegisterServerRequest(s);
            Message m4 = new RegisterServerRequest(s);

            // Tests
            Assert.IsNotNull(m3.Server);
            Assert.IsNotNull(m4.Server);
            Assert.AreEqual(m3.Server.Hostname, m4.Server.Hostname);
            Assert.AreEqual(m3.Server.ChatServerEndpoint, m4.Server.ChatServerEndpoint);
            Assert.AreEqual(m3.Server.ActiveUsers, m4.Server.ActiveUsers);
            Assert.AreEqual(m3.MessageType, m4.MessageType);
            Assert.AreNotEqual(m3.MessageId, m4.MessageId);

            // Setup
            List <Tuple <string, UserKey> > k = new List <Tuple <string, UserKey> >();

            k.Add(new Tuple <string, UserKey>("508", new UserKey("Bob", "BobsKey")));
            k.Add(new Tuple <string, UserKey>("509", new UserKey("Joe", "JoesKey")));
            Message m5 = new PublicKeysResponse(k);

            // Tests
            Assert.IsNotNull(m5.Keys);
            Assert.AreEqual(m5.Keys[0].Item2.Username, "Bob");
            Assert.AreEqual(m5.Keys[1].Item2.Username, "Joe");
            Assert.AreEqual(m5.Keys[0].Item2.Publickey, "BobsKey");
            Assert.AreEqual(m5.Keys[1].Item2.Publickey, "JoesKey");

            // Setup
            m1         = new RegisterKeyRequest("Bob", new UserKey("Bob", "BobsKey"));
            m1.UserKey = new UserKey("NotBob", "NotBobsKey");

            // Tests
            Assert.AreEqual(m1.UserKey.Username, "NotBob");
            Assert.AreEqual(m1.UserKey.Publickey, "NotBobsKey");

            // Setup
            m1                 = new Acknowledge(ResponseCodes.SUCCESS, "You win!");
            m1.Code            = ResponseCodes.FAIL;
            m1.ResponseMessage = "You lose!";

            // Tests
            Assert.AreEqual(m1.Code, ResponseCodes.FAIL);
            Assert.AreEqual(m1.ResponseMessage, "You lose!");

            // Setup
            List <string> users = new List <string>();

            users.Add("Billy");
            users.Add("Joe");
            users.Add("Bob");
            m1 = new PublicKeysRequest(users);

            // Tests
            Assert.IsNotNull(m1.Users);
            Assert.AreEqual(m1.Users[0], "Billy");
            Assert.AreEqual(m1.Users[1], "Joe");
            Assert.AreEqual(m1.Users[2], "Bob");
            m1.Users.RemoveAt(0);
            Assert.AreEqual(m1.Users[0], "Joe");
            Assert.AreEqual(m1.Users[1], "Bob");

            // Setup
            m1 = new HeartBeat(300);

            // Tests
            Assert.AreEqual(m1.KeepAlive, 300);
            m1.KeepAlive = 600;
            Assert.AreEqual(m1.KeepAlive, 600);

            // Setup
            m1 = new NewMessagesRequest("MyId", "Last message ID");

            // Tests
            Assert.AreEqual(m1.LastMessage, "Last message ID");
            m1.LastMessage = "";
            Assert.AreEqual(m1.LastMessage, "");

            // Setup
            List <EncryptedMessage> list = new List <EncryptedMessage>();
            EncryptedMessage        cm1  = new EncryptedMessage();

            cm1.MessageId = "message id 1";
            cm1.SenderId  = "Bob";
            cm1.Timestamp = 101010101010;
            cm1.PlainText = "Dead men tell no tales";
            cm1.GroupId   = "My special group";
            list.Add(cm1);
            m1 = new NewMessagesResponse(list);

            // Tests
            Assert.AreEqual(m1.Messages[0].SenderId, "Bob");
            Assert.AreEqual(m1.Messages[0].MessageId, "message id 1");
            Assert.AreEqual(m1.Messages[0].Timestamp, 101010101010);
            Assert.AreEqual(m1.Messages[0].PlainText, "Dead men tell no tales");
            Assert.AreEqual(m1.Messages[0].GroupId, "My special group");
            m1.Messages[0].SenderId  = "Joe";
            m1.Messages[0].MessageId = "message id 2";
            m1.Messages[0].Timestamp = 10101;
            m1.Messages[0].PlainText = "Tell tales, dead men do not";
            m1.Messages[0].GroupId   = "My not as special group";
            Assert.AreEqual(m1.Messages[0].SenderId, "Joe");
            Assert.AreEqual(m1.Messages[0].MessageId, "message id 2");
            Assert.AreEqual(m1.Messages[0].Timestamp, 10101);
            Assert.AreEqual(m1.Messages[0].PlainText, "Tell tales, dead men do not");
            Assert.AreEqual(m1.Messages[0].GroupId, "My not as special group");

            // Setup
            Server s1 = new Server();

            s1.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 12345);
            s1.ActiveUsers        = 38;
            List <Server> l1 = new List <Server>();

            l1.Add(s1);
            m1 = new ListServersResponse(l1);

            // Tests
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint.ToString(), "192.168.0.1:12345");
            Assert.AreEqual(m1.Servers[0].ActiveUsers, 38);
            m1.Servers[0].ActiveUsers = 43;
            Assert.AreEqual(m1.Servers[0].ActiveUsers, 43);
        }
Beispiel #13
0
 public override void RegisterServer(IRpcController controller, RegisterServerRequest request, Action <NoData> done)
 {
     ProtoOutputBuffer.Write(request.GetType(), request.ToString());
 }
Beispiel #14
0
 /// <summary>
 /// Initializes the message with the body.
 /// </summary>
 public RegisterServerMessage(RegisterServerRequest RegisterServerRequest)
 {
     this.RegisterServerRequest = RegisterServerRequest;
 }
    public static void RegisterWithMasterServer(int port, string gameName, string gameDescription, string gameType)
    {
        try
        {
            TcpClient client = new TcpClient() { SendTimeout = 5, ReceiveTimeout = 5 };
            client.Connect(MasterServerAddress, masterServerPort);
            using (Stream stream = client.GetStream())
            {
                var obj = new RegisterServerRequest()
                {
                    serverInfo =
                      new ServerInfo()
                      {
                          port = port,
                          gameDescription = gameDescription,
                          gameName = gameName,
                          gametype = gameType,
                          maxPlayers = Network.maxConnections,
                          numConnectedPlayers = Network.connections.Length
                      }
                };
                var buffer = new byte[4096];
                var xs = new XmlSerializer(typeof(RegisterServerRequest));
                xs.Serialize(new MemoryStream(buffer), obj);
                stream.Write(buffer, 0, buffer.Length);
            }
        }
        catch (Exception e)
        {
            Debug.LogError("Error registering with the Master Server:\n" + e.ToString());

        }
    }
Beispiel #16
0
 public override void RegisterServer(IRpcController controller, RegisterServerRequest request, Action<NoData> done)
 {
     ProtoOutputBuffer.Write(request.GetType(), request.ToString());
 }
Beispiel #17
0
 public override void RegisterServer(IRpcController controller, RegisterServerRequest request, Action <NoData> done)
 {
     throw new NotImplementedException();
 }
Beispiel #18
0
        /// <summary>
        /// Invokes the RegisterServer service.
        /// </summary>
        public virtual ResponseHeader RegisterServer(
            RequestHeader    requestHeader,
            RegisteredServer server)
        {
            RegisterServerRequest request = new RegisterServerRequest();
            RegisterServerResponse response = null;

            request.RequestHeader = requestHeader;
            request.Server        = server;

            UpdateRequestHeader(request, requestHeader == null, "RegisterServer");

            try
            {
                if (UseTransportChannel)
                {
                    IServiceResponse genericResponse = TransportChannel.SendRequest(request);

                    if (genericResponse == null)
                    {
                        throw new ServiceResultException(StatusCodes.BadUnknownResponse);
                    }

                    ValidateResponse(genericResponse.ResponseHeader);
                    response = (RegisterServerResponse)genericResponse;
                }
                else
                {
                    RegisterServerResponseMessage responseMessage = InnerChannel.RegisterServer(new RegisterServerMessage(request));

                    if (responseMessage == null || responseMessage.RegisterServerResponse == null)
                    {
                        throw new ServiceResultException(StatusCodes.BadUnknownResponse);
                    }

                    response = responseMessage.RegisterServerResponse;
                    ValidateResponse(response.ResponseHeader);
                }

            }
            finally
            {
                RequestCompleted(request, response, "RegisterServer");
            }

            return response.ResponseHeader;
        }
Beispiel #19
0
        public void TestMessageSerializations()
        {
            // Test Serialization

            // Setup
            Message expected = new SendMessageRequest("my group id", "Hello World", "Me");
            string  jsontext = expected.JSON();
            Message m        = MessageFromJSONFactory.GetMessage(jsontext);

            // Tests
            Trace.WriteLine(m.MessageId);
            Trace.WriteLine(expected.MessageId);
            Assert.IsNotNull(jsontext);
            Assert.IsNotNull(m);
            Assert.IsNotNull(expected);
            Assert.AreEqual(m.MessageId, expected.MessageId);

            // Setup
            Message m1 = new RegisterServerRequest(new Server());
            Message m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.IsNotNull(m1.Server);
            Assert.IsNotNull(m2.Server);
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(RegisterServerRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(RegisterServerRequest)));

            // Setup
            List <Tuple <string, UserKey> > keys = new List <Tuple <string, UserKey> >();

            keys.Add(new Tuple <string, UserKey>("1", new UserKey("Bob", "BobsKey")));
            keys.Add(new Tuple <string, UserKey>("2", new UserKey("Joe", "JoesKey")));
            m1 = new PublicKeysResponse(keys);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m2.Keys[0].Item2.Publickey, "BobsKey");
            Assert.AreEqual(m2.Keys[1].Item2.Publickey, "JoesKey");
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(PublicKeysResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(PublicKeysResponse)));

            // Setup
            m1 = new RegisterKeyRequest("1", new UserKey("Bob", "BobsKey"));
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());
            Assert.AreEqual(m1.UserKey.Username, m2.UserKey.Username);
            Assert.AreEqual(m1.UserKey.Publickey, m2.UserKey.Publickey);
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, m2.MessageType);

            // Setup
            m1 = new Acknowledge(ResponseCodes.SUCCESS, "You win!");
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.Code, ResponseCodes.SUCCESS);
            Assert.AreEqual(m1.ResponseMessage, "You win!");

            // Setup
            List <string> users = new List <string>();

            users.Add("Billy");
            users.Add("Joe");
            users.Add("Bob");
            m1 = new PublicKeysRequest(users);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(PublicKeysRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(PublicKeysRequest)));
            Assert.AreEqual(m1.Users[0], m2.Users[0]);
            Assert.AreEqual(m1.Users[1], m2.Users[1]);
            Assert.AreEqual(m1.Users[2], m2.Users[2]);
            Assert.AreEqual(m1.Users.Count, 3);
            Assert.AreEqual(m1.Users.Count, m2.Users.Count);

            // Setup
            m1 = new HeartBeat(300);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.KeepAlive, 300);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(HeartBeat)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(HeartBeat)));
            Assert.AreEqual(m1.MessageId, m2.MessageId);

            // Setup
            m1 = new NewMessagesRequest("MyId", "Last message ID");
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.LastMessage, m2.LastMessage);
            Assert.AreEqual(m2.LastMessage, "Last message ID");
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(NewMessagesRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(NewMessagesRequest)));

            // Setup
            List <EncryptedMessage> list = new List <EncryptedMessage>();
            EncryptedMessage        cm1  = new EncryptedMessage();

            cm1.MessageId = "message id 1";
            cm1.SenderId  = "Bob";
            cm1.Timestamp = 101010101010;
            cm1.PlainText = "Dead men tell no tales";
            cm1.GroupId   = "My special group";
            list.Add(cm1);
            m1 = new NewMessagesResponse(list);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(NewMessagesResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(NewMessagesResponse)));
            Assert.AreEqual(m1.Messages[0].MessageId, m2.Messages[0].MessageId);
            Assert.AreEqual(m1.Messages[0].Timestamp, m2.Messages[0].Timestamp);
            Assert.AreEqual(m1.Messages[0].GroupId, m2.Messages[0].GroupId);
            Assert.AreEqual(m1.Messages[0].SenderId, m2.Messages[0].SenderId);
            Assert.IsNull(m2.Messages[0].PlainText); // Make sure message isn't passed in plain text

            // Setup
            Server s1 = new Server();

            s1.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 12345);
            s1.ActiveUsers        = 38;
            List <Server> l1 = new List <Server>();

            l1.Add(s1);
            m1 = new ListServersResponse(l1);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(ListServersResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(ListServersResponse)));
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint, m2.Servers[0].ChatServerEndpoint);
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint, m2.Servers[0].ChatServerEndpoint);
            Assert.AreEqual(m2.Servers[0].ChatServerEndpoint.ToString(), "192.168.0.1:12345");
            Assert.AreEqual(m1.Servers[0].ActiveUsers, m2.Servers[0].ActiveUsers);
            Assert.AreEqual(m2.Servers[0].ActiveUsers, 38);
        }
Beispiel #20
0
        /// <summary>
        /// Begins an asynchronous invocation of the RegisterServer service.
        /// </summary>
        public IAsyncResult BeginRegisterServer(
            RequestHeader    requestHeader,
            RegisteredServer server,
            AsyncCallback    callback,
            object           asyncState)
        {
            RegisterServerRequest request = new RegisterServerRequest();

            request.RequestHeader = requestHeader;
            request.Server        = server;

            UpdateRequestHeader(request, requestHeader == null, "RegisterServer");

            if (UseTransportChannel)
            {
                return TransportChannel.BeginSendRequest(request, callback, asyncState);
            }

            return InnerChannel.BeginRegisterServer(new RegisterServerMessage(request), callback, asyncState);
        }
Beispiel #21
0
 public override void RegisterServer(IRpcController controller, RegisterServerRequest request, Action<NoData> done)
 {
     throw new NotImplementedException();
 }
Beispiel #22
0
 public override void RegisterServer(Google.ProtocolBuffers.IRpcController controller, RegisterServerRequest request, Action <bnet.protocol.NoData> done)
 {
     throw new NotImplementedException();
 }