/// <summary> /// Parses the incoming data. /// </summary> /// <param name="e"></param> public void Parse(ConnectionDataEventArgs e) { Log.ForContext<StratumMiner>().Verbose("Recv:\n{0}", e.Data.ToEncodedString().PrettifyJson()); var rpcResultHandler = new AsyncCallback( callback => { var asyncData = ((JsonRpcStateAsync)callback); var result = asyncData.Result + "\n"; // quick hack. var response = Encoding.UTF8.GetBytes(result); var context = (SocketServiceContext) asyncData.AsyncState; var miner = (StratumMiner)context.Miner; miner.Connection.Send(response); Log.ForContext<StratumMiner>().Verbose("Reply:\n{0}", result.PrettifyJson()); }); var line = e.Data.ToEncodedString(); line = line.Replace("\n", ""); // quick hack! var rpcRequest = new SocketServiceRequest(line); var rpcContext = new SocketServiceContext(this, rpcRequest); var async = new JsonRpcStateAsync(rpcResultHandler, rpcContext) { JsonRpc = line }; JsonRpcProcessor.Process(async, rpcContext); }
public SocketServiceContext(IMiner miner, SocketServiceRequest request) { Miner = miner; Request = request; }