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