private void OnDataSent(ConnectionDataEventArgs e)
        {
            var handler = DataSent;

            if (handler != null)
                handler(this, e);
        }
        /// <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);
        }
        private void OnDataReceived(ConnectionDataEventArgs e)
        {
            var handler = DataReceived;

            if (handler != null)
                handler(this, e);
        }
 /// <summary>
 /// Client data recieve handler.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnDataReceived(object sender, ConnectionDataEventArgs e)
 {
     var connection = (Connection)e.Connection;
     ((StratumMiner)connection.Client).Parse(e);
 }