/// <summary>
        /// Register local server to DSM and mark this machine as ready
        /// </summary>
        /// <param name="ip">Local IP Address</param>
        /// <param name="port">Port number</param>
        /// <param name="name">Name to uniquely identify this local server</param>
        /// <param name="callback">Returns a Result via callback when completed</param>
        public void RegisterLocalServer(string ip, uint port, string name, ResultCallback callback)
        {
            Report.GetFunctionLog(this.GetType().Name);

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

            if (!this.serverSession.IsValid())
            {
                callback.TryError(ErrorCode.IsNotLoggedIn);

                return;
            }

            this.name = name;
            var request = new RegisterLocalServerRequest {
                ip = ip, port = port, name = name
            };
            string authToken = this.serverSession.AuthorizationToken;

            this.coroutineRunner.Run(this.api.RegisterLocalServer(request, authToken, callback));

            if (this.isHeartBeatAutomatic)
            {
                this.heartBeatCoroutine = this.coroutineRunner.Run(RunPeriodicHeartBeat());
            }
        }
Пример #2
0
        public IEnumerator RegisterLocalServer(RegisterLocalServerRequest registerRequest, string accessToken,
                                               ResultCallback callback)
        {
            Assert.IsNotNull(registerRequest, "Register failed. registerRequest 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;
            }

            var request = HttpRequestBuilder.CreatePost(this.baseUrl + "/namespaces/{namespace}/servers/local/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();

            serverType = ServerType.LOCALSERVER;

            callback.Try(result);
        }
Пример #3
0
        public IEnumerator RegisterLocalServer(uint port, string name, string accessToken,
                                               ResultCallback callback)
        {
            string ip = "";

            AccelByteNetUtilities.GetPublicIp(getPublicIpResult =>
            {
                ip = getPublicIpResult.Value.ip;
            });

            while (string.IsNullOrEmpty(ip))
            {
                yield return(null);
            }

            RegisterLocalServerRequest request = new RegisterLocalServerRequest()
            {
                ip   = ip,
                port = port,
                name = name
            };

            yield return(RegisterLocalServer(request, accessToken, callback));
        }