Ejemplo n.º 1
0
 private static byte[] BuildResposne(Opcode opcode, BinaryResponseStatus status, int opaque, ulong cas, string key, byte[] value, byte[] extra)
 {
     BinaryResponse response = new BinaryResponse();
     response.Header.Opcode = opcode;
     response.Header.Status = status;
     response.Header.Opaque = opaque;
     response.Header.CAS = cas;
     response.PayLoad.Key = MemcachedEncoding.BinaryConverter.GetBytes(key);
     response.PayLoad.Value = value;
     response.PayLoad.Extra = extra;
     return response.BuildResponse();
 }
Ejemplo n.º 2
0
        private static byte[] BuildResposne(Opcode opcode, BinaryResponseStatus status, int opaque, ulong cas, string key, byte[] value, byte[] extra)
        {
            BinaryResponse response = new BinaryResponse();

            response.Header.Opcode = opcode;
            response.Header.Status = status;
            response.Header.Opaque = opaque;
            response.Header.CAS    = cas;
            response.PayLoad.Key   = MemcachedEncoding.BinaryConverter.GetBytes(key);
            response.PayLoad.Value = value;
            response.PayLoad.Extra = extra;
            return(response.BuildResponse());
        }
Ejemplo n.º 3
0
        public static byte[] BuildFlushResponse(FlushCommand command)
        {
            BinaryResponseStatus status = BinaryResponseStatus.no_error;

            if (command.OperationResult.ReturnResult != Result.SUCCESS)
            {
                status = BinaryResponseStatus.invalid_arguments;
            }
            else
            {
                if (command.NoReply == true)
                {
                    return(null);
                }
            }
            return(BuildResposne(command.Opcode, status, command.Opaque, 0, null, null, null));
        }
Ejemplo n.º 4
0
        public static byte[] BuildDeleteResponse(DeleteCommand command)
        {
            BinaryResponseStatus status = BinaryResponseStatus.no_error;

            if (command.OperationResult.ReturnResult != Result.SUCCESS)
            {
                status = BinaryResponseStatus.key_not_found;
            }
            else
            {
                if (command.NoReply == true)
                {
                    return(null);
                }
            }
            return(BuildResposne(command.Opcode, status, command.Opaque, 0, null, null, null));
        }
Ejemplo n.º 5
0
        public static byte[] BuildCounterResponse(CounterCommand command)
        {
            byte[] value = null;
            BinaryResponseStatus status = BinaryResponseStatus.no_error;
            ulong cas = 0;

            if (command.ExceptionOccured)
            {
                status = BinaryResponseStatus.item_not_stored;
            }
            else
            {
                switch (command.OperationResult.ReturnResult)
                {
                case Result.ITEM_TYPE_MISMATCHED:
                    status = BinaryResponseStatus.incr_decr_on_nonnumeric_value;
                    value  = MemcachedEncoding.BinaryConverter.GetBytes("Increment or decrement on non-numeric value");
                    break;

                case Result.ITEM_NOT_FOUND:
                    status = BinaryResponseStatus.key_not_found;
                    value  = MemcachedEncoding.BinaryConverter.GetBytes("NOT_FOUND");
                    break;

                case Result.SUCCESS:
                    if (command.NoReply == true)
                    {
                        return(null);
                    }
                    cas = (ulong)command.OperationResult.Value;
                    ulong response = (command.OperationResult as MutateOpResult).MutateResult;
                    value = MemcachedEncoding.BinaryConverter.GetBytes(response);
                    break;

                case Result.ITEM_MODIFIED:
                    status = BinaryResponseStatus.key_exists;
                    break;
                }
            }
            return(BuildResposne(command.Opcode, status, command.Opaque, cas, null, value, null));
        }
Ejemplo n.º 6
0
        public static byte[] BuildStorageResponse(StorageCommand command)
        {
            BinaryResponseStatus status = BinaryResponseStatus.no_error;
            ulong cas = 0;

            if (command.ExceptionOccured)
            {
                status = BinaryResponseStatus.item_not_stored;
            }
            else
            {
                switch (command.OperationResult.ReturnResult)
                {
                case Result.SUCCESS:
                    if (command.NoReply == true)
                    {
                        return(null);
                    }
                    cas = (ulong)command.OperationResult.Value;
                    break;

                case Result.ITEM_EXISTS:
                    status = BinaryResponseStatus.key_exists;
                    break;

                case Result.ITEM_NOT_FOUND:
                    status = BinaryResponseStatus.key_not_found;
                    break;

                case Result.ITEM_MODIFIED:
                    status = BinaryResponseStatus.key_exists;
                    break;

                default:
                    status = BinaryResponseStatus.item_not_stored;
                    break;
                }
            }
            return(BuildResposne(command.Opcode, status, command.Opaque, cas, null, null, null));
        }
Ejemplo n.º 7
0
        public static byte[] BuildGetResponse(GetCommand command)
        {
            string key = "";

            byte[] value = new byte[0];
            uint   flag  = 0;
            ulong  cas   = 0;
            BinaryResponseStatus status = BinaryResponseStatus.no_error;

            if (command.ExceptionOccured)
            {
                status = BinaryResponseStatus.key_not_found;
            }
            else if (command.Results.Count > 0)
            {
                cas   = command.Results[0].Version;
                value = command.Results[0].Value as byte[];
                flag  = command.Results[0].Flag;

                if (command.Opcode == Opcode.GetK)
                {
                    key = command.Results[0].Key;
                }
            }
            else
            {
                if (command.NoReply == true)
                {
                    return(null);
                }
                status = BinaryResponseStatus.key_not_found;
            }

            byte[] flagBytes = MemcachedEncoding.BinaryConverter.GetBytes(flag);
            return(BuildResposne(command.Opcode, status, command.Opaque, cas, key, value, flagBytes));
        }