コード例 #1
0
        /// <inheritdoc />
        public ServerRegisterResult SearchForXServer(string profileName = "", string signAddress = "")
        {
            var result   = new ServerRegisterResult();
            var xservers = this.xServerPeerList.GetPeers().OrderBy(n => n.ResponseTime);

            foreach (var xserver in xservers)
            {
                string xServerURL = Utils.GetServerUrl(xserver.NetworkProtocol, xserver.NetworkAddress, xserver.NetworkPort);
                var    client     = new RestClient(xServerURL);
                client.UseNewtonsoftJson();
                var searchForXServerRequest = new RestRequest("/searchforxserver", Method.GET);
                searchForXServerRequest.AddParameter("profileName", profileName);
                searchForXServerRequest.AddParameter("signAddress", signAddress);

                var registerResult = client.Execute <ServerRegisterResult>(searchForXServerRequest);
                if (registerResult.StatusCode == HttpStatusCode.OK)
                {
                    result = registerResult.Data;
                    if (result.Id > 0)
                    {
                        result.Success = true;
                        return(result);
                    }
                    else
                    {
                        result.Success       = false;
                        result.ResultMessage = "No xServers found";
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(result.ResultMessage))
                    {
                        var errorResponse = JsonConvert.DeserializeObject <ErrorResponse>(registerResult.Content);
                        if (errorResponse != null)
                        {
                            result.ResultMessage = errorResponse.errors[0].message;
                        }
                        else
                        {
                            result.ResultMessage = "Failed to access xServer";
                        }
                    }
                    result.Success = false;
                }
            }
            return(result);
        }
コード例 #2
0
        /// <summary>
        ///     Return xServer from profile name or sign address.
        /// </summary>
        /// <param name="profileName">The profile name to search for the xserver</param>
        /// <param name="signAddress">The sign address to search for the xserver</param>
        /// <returns>xServer found by the search.</returns>
        public ServerRegisterResult SearchForXServer(string profileName = "", string signAddress = "")
        {
            ServerRegisterResult result = new ServerRegisterResult();

            using (X42DbContext dbContext = new X42DbContext(ConnectionString))
            {
                ServerNodeData serverNode = null;
                if (!string.IsNullOrEmpty(profileName))
                {
                    serverNode = dbContext.ServerNodes.Where(sn => sn.ProfileName == profileName).FirstOrDefault();
                }
                else if (!string.IsNullOrEmpty(profileName))
                {
                    serverNode = dbContext.ServerNodes.Where(sn => sn.SignAddress == signAddress).FirstOrDefault();
                }

                if (serverNode != null)
                {
                    result = new ServerRegisterResult()
                    {
                        Id              = serverNode.Id,
                        ProfileName     = serverNode.ProfileName,
                        NetworkProtocol = serverNode.NetworkProtocol,
                        NetworkAddress  = serverNode.NetworkAddress,
                        NetworkPort     = serverNode.NetworkPort,
                        Signature       = serverNode.Signature,
                        Tier            = serverNode.Tier,
                        FeeAddress      = serverNode.FeeAddress,
                        KeyAddress      = serverNode.KeyAddress,
                        SignAddress     = serverNode.SignAddress
                    };
                }
            }

            return(result);
        }