示例#1
0
        public async Task <IList <Merchandise> > GetMerchandisesRequest()
        {
            byte[] buffer = new byte[20000];
            ArraySegment <byte>    segment = new ArraySegment <byte>(buffer);
            GetMerchandisesRequest request = new GetMerchandisesRequest("get_merchandises");
            string requestJson             = JsonConvert.SerializeObject(request, Formatting.Indented);
            await _clientWebSocket.SendAsync(requestJson);

            bool   gotCorrectResponse = false;
            string message            = "";

            while (!gotCorrectResponse)
            {
                WebSocketReceiveResult result = _clientWebSocket.ClientWebSocket.ReceiveAsync(segment, _timeOut).Result;
                if (result.MessageType == WebSocketMessageType.Close)
                {
                    _clientWebSocket.Disconnect();
                    throw new Exception("Disconnected. Close message");
                }
                int count = result.Count;
                while (!result.EndOfMessage)
                {
                    if (count >= buffer.Length)
                    {
                        _clientWebSocket.Disconnect();
                        throw new Exception("Disconnected. Buffer overloaded");
                    }
                    segment = new ArraySegment <byte>(buffer, count, buffer.Length - count);
                    result  = _clientWebSocket.ClientWebSocket.ReceiveAsync(segment, _timeOut).Result;
                    count  += result.Count;
                }
                message = Encoding.UTF8.GetString(buffer, 0, count);
                WebMessageBase baseResponse = JsonConvert.DeserializeObject <WebMessageBase>(message);
                if (baseResponse.Tag == "get_merchandises")
                {
                    gotCorrectResponse = true;
                    if (baseResponse.Status != MessageStatus.SUCCESS)
                    {
                        throw new Exception(baseResponse.Message);
                    }
                }
            }
            GetMerchandisesResponse response = JsonConvert.DeserializeObject <GetMerchandisesResponse>(message);

            return(response.Merchandises.FromCommModel());
        }
示例#2
0
 private async Task <string> ProcessGetMerchandisesRequest(GetMerchandisesRequest request)
 {
     try
     {
         List <MerchandiseDto>   merchandiseDtos      = (await _orderService.MerchandiseService.GetMerchandises()).ToList();
         GetMerchandisesResponse merchandisesResponse = new GetMerchandisesResponse("get_merchandises", merchandiseDtos.FromDto());
         string result = JsonConvert.SerializeObject(merchandisesResponse, Formatting.Indented);
         return(result);
     }
     catch (Exception e)
     {
         WebMessageBase response = new WebMessageBase();
         response.Status  = MessageStatus.FAIL;
         response.Message = "Get merchandise request error.";
         string result = JsonConvert.SerializeObject(response, Formatting.Indented);
         _log("During processing get_merchandises request an error occured: " + e.Message);
         return(result);
     }
 }
示例#3
0
        public async Task <string> Resolve(string message, WebSocketConnection ws)
        {
            WebMessageBase request = JsonConvert.DeserializeObject <WebMessageBase>(message);

            Console.WriteLine("[{0}] Resolving request: \"{1}\", status: {2}", DateTime.Now.ToString("HH:mm:ss.fff"), request.Tag, request.Status);

            string output = String.Empty;

            switch (request.Tag)
            {
            case "get_customer":
            {
                GetCustomerRequest customerRequest = JsonConvert.DeserializeObject <GetCustomerRequest>(message);
                output = await ProcessGetCustomerRequest(customerRequest);

                break;
            }

            case "get_merchandises":
            {
                GetMerchandisesRequest merchandiseRequest = JsonConvert.DeserializeObject <GetMerchandisesRequest>(message);
                output = await ProcessGetMerchandisesRequest(merchandiseRequest);

                break;
            }

            case "get_order":
            {
                GetOrderRequest ordeRequest = JsonConvert.DeserializeObject <GetOrderRequest>(message);
                output = await ProcessGetOrderRequest(ordeRequest);

                break;
            }

            case "make_order":
            {
                OrderRequestResponse orderRequest = JsonConvert.DeserializeObject <OrderRequestResponse>(message);
                output = await ProcessMakeOrderRequest(orderRequest);

                break;
            }

            case "subscription":
            {
                WebMessageBase subRequest = JsonConvert.DeserializeObject <WebMessageBase>(message);
                output = await ProcessSubscriptionRequest(subRequest, ws);

                break;
            }

            case "unsubscription":
            {
                WebMessageBase unSubRequest = JsonConvert.DeserializeObject <WebMessageBase>(message);
                output = await ProcessUnsubscriptionRequest(unSubRequest, ws);

                break;
            }
            }

            return(output);
        }