示例#1
0
    private void Connect(ConnectSetting connectSetting, string roomName = null)
    {
        // Player name is empty.
        if (nameInputField)
        {
            if (string.IsNullOrEmpty(nameInputField.text) || nameInputField.text.All(char.IsWhiteSpace))
            {
                return;
            }
        }

        currentConnectSetting     = connectSetting;
        currentConnectionRoomName = roomName;

        if (currentConnectSetting == ConnectSetting.Offline && PhotonNetwork.IsConnected)
        {
            preparingOfflineMode = true;
            PhotonNetwork.Disconnect();
            return;
        }

        PhotonNetwork.OfflineMode = currentConnectSetting == ConnectSetting.Offline ? true : false;
        isConnecting = true;
        connectionProgress.SetActive(true);

        if (PhotonNetwork.IsConnected)
        {
            OnConnectedToMaster();
        }
        else
        {
            PhotonNetwork.GameVersion = gameVersion;
            PhotonNetwork.ConnectUsingSettings();
        }
    }
示例#2
0
        override public Task <IResponse> ExecuteAsync(IRequest request, ConnectSetting connectSetting = null)
        {
            var fullKey = request.Method.Method + " " + config.Platform + " " + request.URI + request.QueryString;
            var partKey = request.Method.Method + " " + config.Platform + " " + request.URI;
            var matches = mapping.Where(d => fullKey == d.Key).ToList();

            if (matches.Count == 0)
            {
                matches = mapping.Where(d => partKey == d.Key).ToList();
            }
            if (matches.Count == 0)
            {
                matches = mapping.Where(d => fullKey.StartsWith(d.Key)).OrderBy(d => d.Key.Length).ToList();
            }
            if (matches.Count == 0)
            {
                throw new Exception.GatewayException("Unable to find fade file for the request.");
            }

            string content = LoadFile(matches[0].Value + "." + request.GetAPIFormat().ToString().ToLower());

            var response = BuildResponseObject(content, (System.Net.HttpStatusCode) 200, request.GetAPIFormat());

            return(Task.FromResult <IResponse>(response));
        }
示例#3
0
        static void Main(string[] args)
        {
            ListenerProxy     gameListener   = null;
            ListenerProxy     clientListener = null;
            HttpListenerProxy httpListener   = null;

            try
            {
                var gameTran   = new GameTransponder();
                var clientTran = new HttpTransponder();
                clientTran.ReceiveCompleted += gameTran.Send;
                clientTran.SocketClosing    += gameTran.OnTcpClientClosed;
                gameTran.ReceiveCompleted   += clientTran.Send;

                ConnectSetting gameSetting   = LoadGameSetting();
                ConnectSetting clientSetting = LoadClientSetting();
                HttpSettings   httpSetting   = LoadHttpSetting();
                gameListener   = new ListenerProxy(gameTran, gameSetting);
                clientListener = new ListenerProxy(clientTran, clientSetting);
                httpListener   = new HttpListenerProxy(httpSetting);
                httpListener.RequestCompleted += clientTran.Request;
                httpListener.RequestTimeout   += clientTran.RequestTimeout;
                clientTran.ResponseCompleted  += httpListener.PushSend;

                gameListener.Listen();
                Console.WriteLine("【游戏服监听端口:{0}】正在监听中...", gameSetting.Port);

                clientListener.Listen();
                Console.WriteLine("【客户端监听端口:{0}】正在监听中...", clientSetting.Port);

                httpListener.Listen();
                Console.WriteLine("【Http监听端口:{0}:{1}/{2}】正在监听中...", httpSetting.HostAddress, httpSetting.Port, httpSetting.GameAppName);

                Console.ReadLine();
            }
            catch (Exception ex)
            {
                TraceLog.WriteError("SocketServer error:{0}", ex);
            }
            finally
            {
                if (clientListener != null)
                {
                    clientListener.Dispose();
                }

                if (gameListener != null)
                {
                    gameListener.Dispose();
                }
                if (httpListener != null)
                {
                    httpListener.Dispose();
                }
            }
        }
        public async Task <GetIndustryListResponse> GetIndustryList(ConnectSetting connectSetting = null)
        {
            var request = CreateRequest();

            request.URI = "sellermgmt/seller/industry";

            var response = await client.GetAsync(request, connectSetting);

            var result = await ProcessResponse <GetIndustryListResponse>(response);

            return(result);
        }
        public async Task <GetFeedResultResponse> GetFeedResult(string requestID, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest(APIFormat.XML);

            request.URI = string.Format("datafeedmgmt/feeds/result/{0}", requestID);

            var response = await client.GetAsync(request, connectSetting);

            var result = await ProcessResponse <GetFeedResultResponse>(response);

            return(result);
        }
示例#6
0
 private Task <IResponse> ExecuteAsync(IRequest request, ConnectSetting connectSetting = null)
 {
     if (connectSetting == null)
     {
         return(RetryPolicy.GetResponse(Extractor, request));
     }
     else
     {
         var copyConfig = config.Clone();
         copyConfig.Connection = connectSetting;
         return(new Retry.FixedCountPolicy(connectSetting.AttemptsTimes, connectSetting.RetryIntervalMs)
                .GetResponse(extractorFactory.CreateExtractor(SimulationEnabled, copyConfig), request));
     }
 }
示例#7
0
        private static ConnectSetting LoadSetting(string preKey)
        {
            var setting = new ConnectSetting();

            setting.Host                 = ConfigUtils.GetSetting(preKey + ".Host");
            setting.Port                 = ConfigUtils.GetSetting(preKey + ".Port").ToInt();
            setting.Backlog              = ConfigUtils.GetSetting(preKey + ".Backlog", "10").ToInt();
            setting.ConnectTimeout       = ConfigUtils.GetSetting(preKey + ".ContinuedTimeout", "60").ToInt();
            setting.BufferSize           = ConfigUtils.GetSetting(preKey + ".BufferSize", "1024").ToInt();
            setting.MinPoolSize          = ConfigUtils.GetSetting(preKey + ".MinConnectNum", "10").ToInt();
            setting.MaxPoolSize          = ConfigUtils.GetSetting(preKey + ".MaxConnectNum", "1000").ToInt();
            setting.EnableReceiveTimeout = ConfigUtils.GetSetting(preKey + ".EnableReceiveTimeout", "false").ToBool();
            setting.ReceiveTimeout       = ConfigUtils.GetSetting(preKey + ".ReceiveTimeout", "30000").ToInt();
            return(setting);
        }
        override public async Task <IResponse> ExecuteAsync(IRequest request, ConnectSetting connectSetting = null)
        {
            if (request.URI == "")
            {
                throw new Base.Exception.InvalidValueException("Empty URI.");
            }

            try
            {
                request.GetReady();
                HttpResponseMessage result = await client.SendAsync(await CloneRequestMessageAsync(request.HttpRequest));

                if (result.StatusCode != HttpStatusCode.OK)
                {
                    ExceptionInfo info = await GetInfromationFromResponseAsync(result, request.GetAPIFormat());

                    switch (result.StatusCode)
                    {
                    case HttpStatusCode.ServiceUnavailable:
                        throw new GatewayException("Can not connect to Server.");

                    case HttpStatusCode.Forbidden:
                        throw new AuthenticationException("Authentication Failed.");

                    case (HttpStatusCode)429:
                        throw new ThrottleException("Too many requests in the time period.");
                    }
                }
                return(new Response(result, request.GetAPIFormat()));
            }
            catch (SocketException ex)
            {
                throw new ConnectionException("Network error while connecting to the API.", ex);
            }
            catch (TaskCanceledException ex)
            {
                throw new ConnectionException("The connection is interrupted.", ex);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
示例#9
0
 public Task <IResponse> PutAsync(IRequest request, ConnectSetting connectSetting = null)
 {
     request.Method = HttpMethod.Put;
     return(ExecuteAsync(request, connectSetting));
 }
        public async Task <SellerStatusCheckResponse> SellerStatusCheck(string version = null, ConnectSetting connectSetting = null)
        {
            var request = CreateRequest();

            request.URI = "sellermgmt/seller/accountstatus";
            if (!string.IsNullOrEmpty(version))
            {
                request.QueryParams.Add("version", version);
            }

            var response = await client.GetAsync(request, connectSetting);

            var result = await ProcessResponse <SellerStatusCheckResponse>(response);

            return(result);
        }
        public async Task <GetSubcategoryStatusForInternationalCountryResponse> GetSubcategoryStatusForInternationalCountry(GetSubcategoryStatusForInternationalCountryRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetSubcategoryStatusForInternationalCountryRequest>(reqModel);

            request.URI = "sellermgmt/seller/subcategory/v2";

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <GetSubcategoryStatusForInternationalCountryResponse>(response);

            return(result);
        }
        public async Task <ReceiveRMAResponse> ReceiveRMA(ReceiveRMARequest reqModel, int?Version = null, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <ReceiveRMARequest>(reqModel);

            request.URI = "servicemgmt/rma/updaterma";
            if (Version != null)
            {
                request.QueryParams.Add("version", Version.ToString());
            }

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <ReceiveRMAResponse>(response);

            return(result);
        }
示例#13
0
        public async Task <GetSBNOrderCancellationRequestResultResponse> GetSBNOrderCancellationRequestResult(string OrderNumber, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest();

            request.URI = string.Format("ordermgmt/sbnorder/cancellationresult/{0}", OrderNumber);

            var response = await client.GetAsync(request, connectSetting);

            var result = await ProcessResponse <GetSBNOrderCancellationRequestResultResponse>(response);

            return(result);
        }
        public async Task <VolumeDiscountFeedResponse> SubmitFeed_VolumeDiscountFeed(VolumeDiscountFeedRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <VolumeDiscountFeedRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/submitfeed";
            request.QueryParams.Add("requesttype", RequestType.VOLUME_DISCOUNT_DATA.ToString());

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <VolumeDiscountFeedResponse>(response);

            return(result);
        }
        public async Task <MultiChannelOrderFeedResponse> SubmitFeed_MultiChannelOrderFeed(MultiChannelOrderFeedRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <MultiChannelOrderFeedRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/submitfeed";
            request.QueryParams.Add("requesttype", RequestType.MULTICHANNEL_ORDER_DATA.ToString());

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <MultiChannelOrderFeedResponse>(response);

            return(result);
        }
        public async Task <GetFeedStatusResponse> GetFeedStatus(GetFeedStatusRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetFeedStatusRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/status";

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <GetFeedStatusResponse>(response);

            return(result);
        }
        public async Task <bool> DownloadFeedSchema(string DownloadPath, DownloadFeedSchemaRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <DownloadFeedSchemaRequest>(reqModel);

            request.URI = "sellermgmt/seller/feedschema";

            var response = await client.PutAsync(request, connectSetting);

            byte[] content = await response.RawResponse.Content.ReadAsByteArrayAsync();

            System.IO.File.WriteAllBytes(DownloadPath, content);

            return(true);
        }
示例#18
0
        public async Task <RemoveItemResponse> RemoveItem(string OrderNumber, RemoveItemRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <RemoveItemRequest>(reqModel);

            request.URI = string.Format("ordermgmt/killitem/orders/{0}", OrderNumber);

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <RemoveItemResponse>(response);

            return(result);
        }
示例#19
0
        public async Task <OrderConfirmationResponse> OrderConfirmation(OrderConfirmationRequest reqModel, ConnectSetting connectSetting = null)
        {
            var request = CreateRequest <OrderConfirmationRequest>(reqModel);

            request.URI = "ordermgmt/orderstatus/orders/confirmation";

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <OrderConfirmationResponse>(response);

            return(result);
        }
示例#20
0
        public async Task <ShipOrderResponse> ShipOrder(string OrderNumber, int?Version, ShipOrderRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <ShipOrderRequest>(reqModel);

            request.URI = string.Format("ordermgmt/orderstatus/orders/{0}", OrderNumber);
            if (Version != null)
            {
                request.QueryParams.Add("version", Version.ToString());
            }

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <ShipOrderResponse>(response);

            return(result);
        }
示例#21
0
        public async Task <GetAdditionalOrderInformationResponse> GetAdditionalOrderInformation(GetAdditionalOrderInformationRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetAdditionalOrderInformationRequest>(reqModel);

            request.URI = "ordermgmt/order/addorderinfo";

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <GetAdditionalOrderInformationResponse>(response);

            return(result);
        }
        public async Task <GetSubcategoryPropertyValuesResponse> GetSubcategoryPropertyValues(GetSubcategoryPropertyValuesRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetSubcategoryPropertyValuesRequest>(reqModel);

            request.URI = "sellermgmt/seller/propertyvalue";

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <GetSubcategoryPropertyValuesResponse>(response);

            return(result);
        }
        public async Task <OrderShipNoticeFeedResponse> SubmitFeed_OrderShipNoticeFeed(OrderShipNoticeFeedRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <OrderShipNoticeFeedRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/submitfeed";
            request.QueryParams.Add("requesttype", RequestType.ORDER_SHIP_NOTICE_DATA.ToString());

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <OrderShipNoticeFeedResponse>(response);

            return(result);
        }
        public async Task <IssueCourtesyRefundResponse> IssueCourtesyRefund(IssueCourtesyRefundRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <IssueCourtesyRefundRequest>(reqModel);

            request.URI = "servicemgmt/courtesyrefund/new";

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <IssueCourtesyRefundResponse>(response);

            return(result);
        }
        public async Task <ItemSubscriptionFeedResponse> SubmitFeed_ItemSubscriptionFeed(ItemSubscriptionFeedRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <ItemSubscriptionFeedRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/submitfeed";
            request.QueryParams.Add("requesttype", RequestType.ITEM_SUBSCRIPTION.ToString());

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <ItemSubscriptionFeedResponse>(response);

            return(result);
        }
        public async Task <GetCourtesyRefundInformationResponse> GetCourtesyRefundInformation(GetCourtesyRefundInformationRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetCourtesyRefundInformationRequest>(reqModel);

            request.URI = "servicemgmt/courtesyrefund/info";

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <GetCourtesyRefundInformationResponse>(response);

            return(result);
        }
        public async Task <GetRMAInformationResponse> GetRMAInformation(GetRMAInformationRequest reqModel, int?Version = null, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <GetRMAInformationRequest>(reqModel);

            request.URI = "servicemgmt/rma/rmainfo";
            if (Version != null)
            {
                request.QueryParams.Add("version", Version.ToString());
            }

            var response = await client.PutAsync(request, connectSetting);

            var result = await ProcessResponse <GetRMAInformationResponse>(response);

            return(result);
        }
 abstract public Task <IResponse> ExecuteAsync(IRequest request, ConnectSetting connectSetting = null);
        public async Task <InventoryUpdateFeedResponse> SubmitFeed_InventoryUpdateFeed(InventoryUpdateFeedRequest reqModel, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest <InventoryUpdateFeedRequest>(reqModel);

            request.URI = "datafeedmgmt/feeds/submitfeed";
            request.QueryParams.Add("requesttype", RequestType.INVENTORY_DATA.ToString());

            var response = await client.PostAsync(request, connectSetting);

            var result = await ProcessResponse <InventoryUpdateFeedResponse>(response);

            return(result);
        }
示例#30
0
        public async Task <GetInboundShipmentResultResponse> GetInboundShipmentRequestResult(string Required, ConnectSetting connectSetting = null, LoggingConfiguration logSetting = null)
        {
            var request = CreateRequest();

            request.URI = string.Format("sbnmgmt/inboundshipment/shipmentresult/{0}", Required);
            var response = await client.GetAsync(request, connectSetting);

            var result = await ProcessResponse <GetInboundShipmentResultResponse>(response);

            return(result);
        }