private Object handleResponse(StreamReader streamReader, bool stream, AdharaHFTListener listener) { try { JavaScriptSerializer serializer = new JavaScriptSerializer(); hftResponse response; String line; while ((line = streamReader.ReadLine()) != null) { try{ response = serializer.Deserialize <hftResponse>(line); } catch (Exception) { Console.WriteLine("Error reading: " + line); return(null); } if (response.getAuthorizationChallengeResponse != null) { return(response.getAuthorizationChallengeResponse.challenge); } if (response.getAuthorizationTokenResponse != null) { return(response.getAuthorizationTokenResponse.token); } if (response.getAccountResponse != null) { List <accountTick> accountTickList = new List <accountTick>(); if (response.getAccountResponse.account != null) { foreach (accountTick tick in response.getAccountResponse.account) { accountTickList.Add(tick); } } return(accountTickList); } if (response.getInterfaceResponse != null) { List <tinterfaceTick> tinterfaceTickList = new List <tinterfaceTick>(); if (response.getInterfaceResponse.tinterface != null) { foreach (tinterfaceTick tick in response.getInterfaceResponse.tinterface) { tinterfaceTickList.Add(tick); } } return(tinterfaceTickList); } if (response.getPriceResponse != null) { if (stream) { if (response.getPriceResponse.timestamp != null) { listener.timestampEvent(response.getPriceResponse.timestamp); } if (response.getPriceResponse.tick != null) { listener.priceEvent(response.getPriceResponse.tick); } if (response.getPriceResponse.heartbeat != null) { listener.heartbeatEvent(); } if (response.getPriceResponse.message != null) { listener.messageEvent(response.getPriceResponse.message); } } else { List <priceTick> priceTickList = new List <priceTick>(); if (response.getPriceResponse.tick != null) { foreach (priceTick tick in response.getPriceResponse.tick) { priceTickList.Add(tick); } } return(priceTickList); } } if (response.getPositionResponse != null) { if (stream) { if (response.getPositionResponse.timestamp != null) { listener.timestampEvent(response.getPositionResponse.timestamp); } if (response.getPositionResponse.accounting != null) { listener.accountingEvent(response.getPositionResponse.accounting); } if (response.getPositionResponse.assetposition != null) { listener.assetPositionEvent(response.getPositionResponse.assetposition); } if (response.getPositionResponse.securityposition != null) { listener.securityPositionEvent(response.getPositionResponse.securityposition); } if (response.getPositionResponse.heartbeat != null) { listener.positionHeartbeatEvent(response.getPositionResponse.heartbeat); } if (response.getPositionResponse.message != null) { listener.messageEvent(response.getPositionResponse.message); } } else { positionTick positiontick = new positionTick(); List <assetPositionTick> assetPositionTickList = new List <assetPositionTick>(); List <securityPositionTick> securityPositionTickList = new List <securityPositionTick>(); if (response.getPositionResponse.accounting != null) { positiontick.accountingTick = response.getPositionResponse.accounting; } if (response.getPositionResponse.assetposition != null) { foreach (assetPositionTick tick in response.getPositionResponse.assetposition) { assetPositionTickList.Add(tick); } } if (response.getPositionResponse.securityposition != null) { foreach (securityPositionTick tick in response.getPositionResponse.securityposition) { securityPositionTickList.Add(tick); } } positiontick.assetPositionTickList = assetPositionTickList; positiontick.securityPositionTickList = securityPositionTickList; return(positiontick); } } if (response.getOrderResponse != null) { if (stream) { if (response.getOrderResponse.timestamp != null) { listener.timestampEvent(response.getOrderResponse.timestamp); } if (response.getOrderResponse.order != null) { listener.orderEvent(response.getOrderResponse.order); } if (response.getOrderResponse.heartbeat != null) { listener.orderHeartbeatEvent(response.getOrderResponse.heartbeat); } if (response.getOrderResponse.message != null) { listener.messageEvent(response.getOrderResponse.message); } } else { List <orderTick> orderTickList = new List <orderTick>(); if (response.getOrderResponse.order != null) { foreach (orderTick tick in response.getOrderResponse.order) { orderTickList.Add(tick); } } return(orderTickList); } } if (response.setOrderResponse != null) { List <orderRequest> orderList = new List <orderRequest>(); if (response.setOrderResponse.timestamp != null) { //listener.timestampEvent(response.setOrderResponse.timestamp); } if (response.setOrderResponse.order != null) { foreach (orderRequest tick in response.setOrderResponse.order) { orderList.Add(tick); } } if (response.setOrderResponse.message != null) { //listener.messageEvent(response.setOrderResponse.message); } return(orderList); } if (response.cancelOrderResponse != null) { List <cancelTick> cancelTickList = new List <cancelTick>(); if (response.cancelOrderResponse.timestamp != null) { //listener.timestampEvent(response.cancelOrderResponse.timestamp); } if (response.cancelOrderResponse.order != null) { foreach (cancelTick tick in response.cancelOrderResponse.order) { cancelTickList.Add(tick); } } if (response.cancelOrderResponse.message != null) { //listener.messageEvent(response.cancelOrderResponse.message); } return(cancelTickList); } if (response.modifyOrderResponse != null) { List <modifyTick> modifyTickList = new List <modifyTick>(); if (response.modifyOrderResponse.timestamp != null) { //listener.timestampEvent(response.modifyOrderResponse.timestamp); } if (response.modifyOrderResponse.order != null) { foreach (modifyTick tick in response.modifyOrderResponse.order) { modifyTickList.Add(tick); } } if (response.modifyOrderResponse.message != null) { //listener.messageEvent(response.modifyOrderResponse.message); } return(modifyTickList); } if (response.getHistoricalPriceResponse != null) { List <candleTick> candleTickList = new List <candleTick>(); if (response.getHistoricalPriceResponse.candle != null) { foreach (candleTick tick in response.getHistoricalPriceResponse.candle) { candleTickList.Add(tick); } } if (response.getHistoricalPriceResponse.message != null) { //listener.messageEvent(response.getHistoricalPriceResponse.message); } return(candleTickList); } } return(null); } catch (WebException) { //Console.WriteLine(ex.Message); return(null); } catch (SocketException) { //Console.WriteLine(ex.Message); return(null); } catch (IOException) { //Console.WriteLine(ioex.Message); return(null); } }