Exemple #1
0
        public IResponse Adapt(Pair pair, byte[] buffer)
        {
            var responseString = Encoder.GetString(buffer);

            responseString = responseString.Replace("[", string.Empty).Replace("]", string.Empty).Replace("\0", string.Empty);
            var       valuesArray = responseString.Split(',');
            IResponse response    = null;

            if (!_responseValidator.IsHeaderMsg(responseString))
            {
                response = new TickerResponse()
                {
                    Ask = decimal.TryParse(valuesArray[TickerArrayPositions.AskPosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal ask)
                        ? ask
                        : decimal.MinValue,
                    AskSize = decimal.TryParse(valuesArray[TickerArrayPositions.AskSizePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal askSize)
                        ? askSize
                        : decimal.MinValue,
                    Bid = decimal.TryParse(valuesArray[TickerArrayPositions.BidSizePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal bid)
                        ? bid
                        : decimal.MinValue,
                    BidSize = decimal.TryParse(valuesArray[TickerArrayPositions.BidSizePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal bidSize)
                        ? bidSize
                        : decimal.MinValue,
                    ChannelId   = valuesArray[TickerArrayPositions.ChannelIdPosition] ?? string.Empty,
                    DailyChange = decimal.TryParse(valuesArray[TickerArrayPositions.DaiyChangePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"),
                                                   out decimal dailyChange)
                        ? dailyChange
                        : decimal.MinValue,
                    DailyChangePercentage =
                        decimal.TryParse(valuesArray[TickerArrayPositions.DailyChangePercentagePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"),
                                         out decimal dailyChangePercentage)
                            ? dailyChangePercentage
                            : decimal.MinValue,
                    High = decimal.TryParse(valuesArray[TickerArrayPositions.HighPosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal highPosition)
                        ? highPosition
                        : decimal.MinValue,
                    LastPrice = decimal.TryParse(valuesArray[TickerArrayPositions.LastPricePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal lastPrice)
                        ? lastPrice
                        : decimal.MinValue,
                    Low = decimal.TryParse(valuesArray[TickerArrayPositions.LowPosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal low)
                        ? low
                        : decimal.MinValue,
                    Pair   = pair,
                    Volume = decimal.TryParse(valuesArray[TickerArrayPositions.VolumePosition], NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-GB"), out decimal volume)
                        ? volume
                        : decimal.MinValue
                };
            }
            else
            {
                response = new HeaderResponse()
                {
                    Pair = pair,
                    Msg  = responseString
                };
            }

            return(response);
        }
Exemple #2
0
        public static void DoChangeStatus(int id, string status)
        {
            HeaderResponse headerResponse = ConnectionController.GetInstance().HeaderResponses.Where(x => x.Id.Equals(id)).FirstOrDefault();

            headerResponse.ResponseStatus = status;
            ConnectionController.GetInstance().SaveChanges();
        }
Exemple #3
0
        private static string GetError(HeaderResponse header)
        {
            if (header.Status == 0)
            {
                return(string.Empty);
            }

            if (string.IsNullOrEmpty(header?.Message))
            {
                return("Unknown error");
            }

            return(header.Message);
        }
Exemple #4
0
        public static void DoRequestManager(int id)
        {
            Ride ride;

            ride = RideCreationController.DoSearchRide(id);

            HeaderResponse headerResponse = new HeaderResponse();

            headerResponse.EmployeeId     = ActiveUserController.GetActiveEmployee().Id;
            headerResponse.ResponseDate   = DateTime.Now;
            headerResponse.ResponseStatus = "Waiting";
            headerResponse.RideId         = ride.Id;

            ConnectionController.GetInstance().HeaderResponses.Add(headerResponse);
            ConnectionController.GetInstance().SaveChanges();
        }
Exemple #5
0
 private void ParseHeaderForErrors(HeaderResponse header)
 {
     if (header == null)
     {
         return;
     }
     // Check that the user is active
     if (header.Status != Constants.Status.Active)
     {
         throw new UnknownUserException();
     }
     // Check for any errors that can be handled
     if (header.Errors != null)
     {
         foreach (var error in header.Errors)
         {
             switch (error.Code)
             {
             case 312:     // Incorrect password entered
                 throw new IncorrectPasswordException(error.Message);
             }
         }
     }
 }
Exemple #6
0
 private static bool IsError(HeaderResponse header)
 {
     return(header == null || header.Status != 1);
 }
Exemple #7
0
        public static void ReadCallback(IAsyncResult ar)
        {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            StateObject state   = (StateObject)ar.AsyncState;
            Socket      handler = state.workSocket;

            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);

            if (bytesRead > 0)
            {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                                    state.buffer, 0, bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.

                //state convertuoti į bitus
                content = state.sb.ToString();
                if (content.IndexOf("<EOF>") > -1)
                {
                    // All the data has been read from the
                    // client. Display it on the console.

                    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                                      content.Length, content);

                    var           formatter = new BinaryFormatter();
                    var           netStream = new NetworkStream(handler);
                    HeaderRequest data      = (HeaderRequest)formatter.Deserialize(netStream);

                    NetworkStream  responseStream = new NetworkStream(handler);
                    var            headerResponse = new HeaderResponse();
                    HeaderResponse responseH      = (HeaderResponse)formatter.Deserialize(responseStream);
                    switch (data.Action)
                    {
                    case ActionEnum.GenerateCodes:
                        GenereteCodesRequest generate = (GenereteCodesRequest)formatter.Deserialize(netStream);
                        generate.Read(netStream);

                        headerResponse.Action = ActionEnum.GenerateCodes;
                        responseH.Write(responseStream);

                        var resultGenerate   = CardCodesHelper.GenerateCodes(generate.Count, generate.Length);
                        var generateResposne = new GenereteCodesResponse();
                        generateResposne.Notification = resultGenerate.Notification;
                        generateResposne.Write(responseStream);
                        break;

                    case ActionEnum.UseCode:
                        UseCodeRequest use = (UseCodeRequest)formatter.Deserialize(netStream);
                        use.Read(netStream);

                        headerResponse.Action = ActionEnum.UseCode;
                        responseH.Write(responseStream);

                        var resultUse       = CardCodesHelper.UseCode(use.Code);
                        var useCodeResponse = new UseCodeResponse();
                        useCodeResponse.Result       = resultUse.UseCodeStatus;
                        useCodeResponse.Notification = resultUse.Notification;
                        useCodeResponse.Write(responseStream);

                        break;

                    case ActionEnum.CheckCode:
                        break;

                    default:
                        break;
                    }

                    // Echo the data back to the client.
                    Send(handler, responseStream.ToString());
                }
                else
                {
                    // Not all data received. Get more.
                    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                         new AsyncCallback(ReadCallback), state);
                }
            }
        }