protected override INodeStatsOperationResult CreateResult(BinaryResponse response)
        {
            if (stats == null)
            {
                stats = new Dictionary <string, string>();
            }

            var data = response.Data;

            // if empty key (last response packet response)
            // or if error
            // return the response object to break the loop and let the node process the next op.
            if (response.KeyLength == 0 || !response.Success)
            {
                return(new NodeStatsOperationResult {
                    Value = stats
                }.WithResponse(response));
            }

            // decode stat key/value
            var key   = NetworkOrderConverter.DecodeKey(data.Array, data.Offset, response.KeyLength);
            var value = NetworkOrderConverter.DecodeKey(data.Array, data.Offset + response.KeyLength, data.Count - response.KeyLength);

            stats[key] = value;

            return(null);            // we expect more response packets
        }