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); }
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(); }
private static string GetError(HeaderResponse header) { if (header.Status == 0) { return(string.Empty); } if (string.IsNullOrEmpty(header?.Message)) { return("Unknown error"); } return(header.Message); }
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(); }
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); } } } }
private static bool IsError(HeaderResponse header) { return(header == null || header.Status != 1); }
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); } } }