From ef2135aad62454e588006ef8beb7247022461e6c Mon Sep 17 00:00:00 2001 From: Valentin Deleplace Date: Fri, 25 Aug 2023 21:43:42 +0200 Subject: [PATCH] Memcache item timestamps (#323) * Add memcache item timestamps. * v1 require google.golang.org/protobuf. * Memcache new fields: use proto getters. --- go.mod | 1 + internal/memcache/memcache_service.pb.go | 3012 ++++++++++++------- internal/memcache/memcache_service.proto | 9 + memcache/memcache.go | 79 +- memcache/memcache_test.go | 49 + v2/internal/memcache/memcache_service.pb.go | 735 +++-- v2/internal/memcache/memcache_service.proto | 9 + v2/memcache/memcache.go | 79 +- v2/memcache/memcache_test.go | 49 + 9 files changed, 2675 insertions(+), 1347 deletions(-) diff --git a/go.mod b/go.mod index 5dd9f50f..f634d8d6 100644 --- a/go.mod +++ b/go.mod @@ -5,4 +5,5 @@ go 1.11 require ( github.com/golang/protobuf v1.5.2 golang.org/x/text v0.3.8 + google.golang.org/protobuf v1.26.0 ) diff --git a/internal/memcache/memcache_service.pb.go b/internal/memcache/memcache_service.pb.go index 2c133993..09523bec 100644 --- a/internal/memcache/memcache_service.pb.go +++ b/internal/memcache/memcache_service.pb.go @@ -1,22 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: google.golang.org/appengine/internal/memcache/memcache_service.proto +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.8 +// source: memcache_service.proto package memcache -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MemcacheServiceError_ErrorCode int32 @@ -28,39 +30,59 @@ const ( MemcacheServiceError_INVALID_VALUE MemcacheServiceError_ErrorCode = 6 ) -var MemcacheServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "UNSPECIFIED_ERROR", - 2: "NAMESPACE_NOT_SET", - 3: "PERMISSION_DENIED", - 6: "INVALID_VALUE", -} -var MemcacheServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "UNSPECIFIED_ERROR": 1, - "NAMESPACE_NOT_SET": 2, - "PERMISSION_DENIED": 3, - "INVALID_VALUE": 6, -} +// Enum value maps for MemcacheServiceError_ErrorCode. +var ( + MemcacheServiceError_ErrorCode_name = map[int32]string{ + 0: "OK", + 1: "UNSPECIFIED_ERROR", + 2: "NAMESPACE_NOT_SET", + 3: "PERMISSION_DENIED", + 6: "INVALID_VALUE", + } + MemcacheServiceError_ErrorCode_value = map[string]int32{ + "OK": 0, + "UNSPECIFIED_ERROR": 1, + "NAMESPACE_NOT_SET": 2, + "PERMISSION_DENIED": 3, + "INVALID_VALUE": 6, + } +) func (x MemcacheServiceError_ErrorCode) Enum() *MemcacheServiceError_ErrorCode { p := new(MemcacheServiceError_ErrorCode) *p = x return p } + func (x MemcacheServiceError_ErrorCode) String() string { - return proto.EnumName(MemcacheServiceError_ErrorCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MemcacheServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[0].Descriptor() +} + +func (MemcacheServiceError_ErrorCode) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[0] +} + +func (x MemcacheServiceError_ErrorCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *MemcacheServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheServiceError_ErrorCode_value, data, "MemcacheServiceError_ErrorCode") + +// Deprecated: Do not use. +func (x *MemcacheServiceError_ErrorCode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheServiceError_ErrorCode(value) + *x = MemcacheServiceError_ErrorCode(num) return nil } + +// Deprecated: Use MemcacheServiceError_ErrorCode.Descriptor instead. func (MemcacheServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{0, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{0, 0} } type MemcacheSetRequest_SetPolicy int32 @@ -72,37 +94,57 @@ const ( MemcacheSetRequest_CAS MemcacheSetRequest_SetPolicy = 4 ) -var MemcacheSetRequest_SetPolicy_name = map[int32]string{ - 1: "SET", - 2: "ADD", - 3: "REPLACE", - 4: "CAS", -} -var MemcacheSetRequest_SetPolicy_value = map[string]int32{ - "SET": 1, - "ADD": 2, - "REPLACE": 3, - "CAS": 4, -} +// Enum value maps for MemcacheSetRequest_SetPolicy. +var ( + MemcacheSetRequest_SetPolicy_name = map[int32]string{ + 1: "SET", + 2: "ADD", + 3: "REPLACE", + 4: "CAS", + } + MemcacheSetRequest_SetPolicy_value = map[string]int32{ + "SET": 1, + "ADD": 2, + "REPLACE": 3, + "CAS": 4, + } +) func (x MemcacheSetRequest_SetPolicy) Enum() *MemcacheSetRequest_SetPolicy { p := new(MemcacheSetRequest_SetPolicy) *p = x return p } + func (x MemcacheSetRequest_SetPolicy) String() string { - return proto.EnumName(MemcacheSetRequest_SetPolicy_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *MemcacheSetRequest_SetPolicy) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheSetRequest_SetPolicy_value, data, "MemcacheSetRequest_SetPolicy") + +func (MemcacheSetRequest_SetPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[1].Descriptor() +} + +func (MemcacheSetRequest_SetPolicy) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[1] +} + +func (x MemcacheSetRequest_SetPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MemcacheSetRequest_SetPolicy) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheSetRequest_SetPolicy(value) + *x = MemcacheSetRequest_SetPolicy(num) return nil } + +// Deprecated: Use MemcacheSetRequest_SetPolicy.Descriptor instead. func (MemcacheSetRequest_SetPolicy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{4, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{5, 0} } type MemcacheSetResponse_SetStatusCode int32 @@ -114,37 +156,57 @@ const ( MemcacheSetResponse_EXISTS MemcacheSetResponse_SetStatusCode = 4 ) -var MemcacheSetResponse_SetStatusCode_name = map[int32]string{ - 1: "STORED", - 2: "NOT_STORED", - 3: "ERROR", - 4: "EXISTS", -} -var MemcacheSetResponse_SetStatusCode_value = map[string]int32{ - "STORED": 1, - "NOT_STORED": 2, - "ERROR": 3, - "EXISTS": 4, -} +// Enum value maps for MemcacheSetResponse_SetStatusCode. +var ( + MemcacheSetResponse_SetStatusCode_name = map[int32]string{ + 1: "STORED", + 2: "NOT_STORED", + 3: "ERROR", + 4: "EXISTS", + } + MemcacheSetResponse_SetStatusCode_value = map[string]int32{ + "STORED": 1, + "NOT_STORED": 2, + "ERROR": 3, + "EXISTS": 4, + } +) func (x MemcacheSetResponse_SetStatusCode) Enum() *MemcacheSetResponse_SetStatusCode { p := new(MemcacheSetResponse_SetStatusCode) *p = x return p } + func (x MemcacheSetResponse_SetStatusCode) String() string { - return proto.EnumName(MemcacheSetResponse_SetStatusCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MemcacheSetResponse_SetStatusCode) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[2].Descriptor() +} + +func (MemcacheSetResponse_SetStatusCode) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[2] +} + +func (x MemcacheSetResponse_SetStatusCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *MemcacheSetResponse_SetStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheSetResponse_SetStatusCode_value, data, "MemcacheSetResponse_SetStatusCode") + +// Deprecated: Do not use. +func (x *MemcacheSetResponse_SetStatusCode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheSetResponse_SetStatusCode(value) + *x = MemcacheSetResponse_SetStatusCode(num) return nil } + +// Deprecated: Use MemcacheSetResponse_SetStatusCode.Descriptor instead. func (MemcacheSetResponse_SetStatusCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{5, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{6, 0} } type MemcacheDeleteResponse_DeleteStatusCode int32 @@ -154,33 +216,53 @@ const ( MemcacheDeleteResponse_NOT_FOUND MemcacheDeleteResponse_DeleteStatusCode = 2 ) -var MemcacheDeleteResponse_DeleteStatusCode_name = map[int32]string{ - 1: "DELETED", - 2: "NOT_FOUND", -} -var MemcacheDeleteResponse_DeleteStatusCode_value = map[string]int32{ - "DELETED": 1, - "NOT_FOUND": 2, -} +// Enum value maps for MemcacheDeleteResponse_DeleteStatusCode. +var ( + MemcacheDeleteResponse_DeleteStatusCode_name = map[int32]string{ + 1: "DELETED", + 2: "NOT_FOUND", + } + MemcacheDeleteResponse_DeleteStatusCode_value = map[string]int32{ + "DELETED": 1, + "NOT_FOUND": 2, + } +) func (x MemcacheDeleteResponse_DeleteStatusCode) Enum() *MemcacheDeleteResponse_DeleteStatusCode { p := new(MemcacheDeleteResponse_DeleteStatusCode) *p = x return p } + func (x MemcacheDeleteResponse_DeleteStatusCode) String() string { - return proto.EnumName(MemcacheDeleteResponse_DeleteStatusCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MemcacheDeleteResponse_DeleteStatusCode) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[3].Descriptor() } -func (x *MemcacheDeleteResponse_DeleteStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheDeleteResponse_DeleteStatusCode_value, data, "MemcacheDeleteResponse_DeleteStatusCode") + +func (MemcacheDeleteResponse_DeleteStatusCode) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[3] +} + +func (x MemcacheDeleteResponse_DeleteStatusCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MemcacheDeleteResponse_DeleteStatusCode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheDeleteResponse_DeleteStatusCode(value) + *x = MemcacheDeleteResponse_DeleteStatusCode(num) return nil } + +// Deprecated: Use MemcacheDeleteResponse_DeleteStatusCode.Descriptor instead. func (MemcacheDeleteResponse_DeleteStatusCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{7, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{8, 0} } type MemcacheIncrementRequest_Direction int32 @@ -190,33 +272,53 @@ const ( MemcacheIncrementRequest_DECREMENT MemcacheIncrementRequest_Direction = 2 ) -var MemcacheIncrementRequest_Direction_name = map[int32]string{ - 1: "INCREMENT", - 2: "DECREMENT", -} -var MemcacheIncrementRequest_Direction_value = map[string]int32{ - "INCREMENT": 1, - "DECREMENT": 2, -} +// Enum value maps for MemcacheIncrementRequest_Direction. +var ( + MemcacheIncrementRequest_Direction_name = map[int32]string{ + 1: "INCREMENT", + 2: "DECREMENT", + } + MemcacheIncrementRequest_Direction_value = map[string]int32{ + "INCREMENT": 1, + "DECREMENT": 2, + } +) func (x MemcacheIncrementRequest_Direction) Enum() *MemcacheIncrementRequest_Direction { p := new(MemcacheIncrementRequest_Direction) *p = x return p } + func (x MemcacheIncrementRequest_Direction) String() string { - return proto.EnumName(MemcacheIncrementRequest_Direction_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MemcacheIncrementRequest_Direction) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[4].Descriptor() } -func (x *MemcacheIncrementRequest_Direction) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheIncrementRequest_Direction_value, data, "MemcacheIncrementRequest_Direction") + +func (MemcacheIncrementRequest_Direction) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[4] +} + +func (x MemcacheIncrementRequest_Direction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MemcacheIncrementRequest_Direction) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheIncrementRequest_Direction(value) + *x = MemcacheIncrementRequest_Direction(num) return nil } + +// Deprecated: Use MemcacheIncrementRequest_Direction.Descriptor instead. func (MemcacheIncrementRequest_Direction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{8, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{9, 0} } type MemcacheIncrementResponse_IncrementStatusCode int32 @@ -227,1336 +329,2198 @@ const ( MemcacheIncrementResponse_ERROR MemcacheIncrementResponse_IncrementStatusCode = 3 ) -var MemcacheIncrementResponse_IncrementStatusCode_name = map[int32]string{ - 1: "OK", - 2: "NOT_CHANGED", - 3: "ERROR", -} -var MemcacheIncrementResponse_IncrementStatusCode_value = map[string]int32{ - "OK": 1, - "NOT_CHANGED": 2, - "ERROR": 3, -} +// Enum value maps for MemcacheIncrementResponse_IncrementStatusCode. +var ( + MemcacheIncrementResponse_IncrementStatusCode_name = map[int32]string{ + 1: "OK", + 2: "NOT_CHANGED", + 3: "ERROR", + } + MemcacheIncrementResponse_IncrementStatusCode_value = map[string]int32{ + "OK": 1, + "NOT_CHANGED": 2, + "ERROR": 3, + } +) func (x MemcacheIncrementResponse_IncrementStatusCode) Enum() *MemcacheIncrementResponse_IncrementStatusCode { p := new(MemcacheIncrementResponse_IncrementStatusCode) *p = x return p } + func (x MemcacheIncrementResponse_IncrementStatusCode) String() string { - return proto.EnumName(MemcacheIncrementResponse_IncrementStatusCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MemcacheIncrementResponse_IncrementStatusCode) Descriptor() protoreflect.EnumDescriptor { + return file_memcache_service_proto_enumTypes[5].Descriptor() +} + +func (MemcacheIncrementResponse_IncrementStatusCode) Type() protoreflect.EnumType { + return &file_memcache_service_proto_enumTypes[5] +} + +func (x MemcacheIncrementResponse_IncrementStatusCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *MemcacheIncrementResponse_IncrementStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheIncrementResponse_IncrementStatusCode_value, data, "MemcacheIncrementResponse_IncrementStatusCode") + +// Deprecated: Do not use. +func (x *MemcacheIncrementResponse_IncrementStatusCode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = MemcacheIncrementResponse_IncrementStatusCode(value) + *x = MemcacheIncrementResponse_IncrementStatusCode(num) return nil } + +// Deprecated: Use MemcacheIncrementResponse_IncrementStatusCode.Descriptor instead. func (MemcacheIncrementResponse_IncrementStatusCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{9, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{10, 0} } type MemcacheServiceError struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *MemcacheServiceError) Reset() { *m = MemcacheServiceError{} } -func (m *MemcacheServiceError) String() string { return proto.CompactTextString(m) } -func (*MemcacheServiceError) ProtoMessage() {} -func (*MemcacheServiceError) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{0} -} -func (m *MemcacheServiceError) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheServiceError.Unmarshal(m, b) -} -func (m *MemcacheServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheServiceError.Marshal(b, m, deterministic) -} -func (dst *MemcacheServiceError) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheServiceError.Merge(dst, src) -} -func (m *MemcacheServiceError) XXX_Size() int { - return xxx_messageInfo_MemcacheServiceError.Size(m) +func (x *MemcacheServiceError) Reset() { + *x = MemcacheServiceError{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheServiceError) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheServiceError.DiscardUnknown(m) + +func (x *MemcacheServiceError) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheServiceError proto.InternalMessageInfo +func (*MemcacheServiceError) ProtoMessage() {} -type AppOverride struct { - AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"` - NumMemcachegBackends *int32 `protobuf:"varint,2,opt,name=num_memcacheg_backends,json=numMemcachegBackends" json:"num_memcacheg_backends,omitempty"` // Deprecated: Do not use. - IgnoreShardlock *bool `protobuf:"varint,3,opt,name=ignore_shardlock,json=ignoreShardlock" json:"ignore_shardlock,omitempty"` // Deprecated: Do not use. - MemcachePoolHint *string `protobuf:"bytes,4,opt,name=memcache_pool_hint,json=memcachePoolHint" json:"memcache_pool_hint,omitempty"` // Deprecated: Do not use. - MemcacheShardingStrategy []byte `protobuf:"bytes,5,opt,name=memcache_sharding_strategy,json=memcacheShardingStrategy" json:"memcache_sharding_strategy,omitempty"` // Deprecated: Do not use. - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AppOverride) Reset() { *m = AppOverride{} } -func (m *AppOverride) String() string { return proto.CompactTextString(m) } -func (*AppOverride) ProtoMessage() {} -func (*AppOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{1} +func (x *MemcacheServiceError) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *AppOverride) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AppOverride.Unmarshal(m, b) + +// Deprecated: Use MemcacheServiceError.ProtoReflect.Descriptor instead. +func (*MemcacheServiceError) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{0} } -func (m *AppOverride) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AppOverride.Marshal(b, m, deterministic) + +type AppOverride struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"` + // Deprecated: Do not use. + NumMemcachegBackends *int32 `protobuf:"varint,2,opt,name=num_memcacheg_backends,json=numMemcachegBackends" json:"num_memcacheg_backends,omitempty"` + // Deprecated: Do not use. + IgnoreShardlock *bool `protobuf:"varint,3,opt,name=ignore_shardlock,json=ignoreShardlock" json:"ignore_shardlock,omitempty"` + // Deprecated: Do not use. + MemcachePoolHint *string `protobuf:"bytes,4,opt,name=memcache_pool_hint,json=memcachePoolHint" json:"memcache_pool_hint,omitempty"` + // Deprecated: Do not use. + MemcacheShardingStrategy []byte `protobuf:"bytes,5,opt,name=memcache_sharding_strategy,json=memcacheShardingStrategy" json:"memcache_sharding_strategy,omitempty"` } -func (dst *AppOverride) XXX_Merge(src proto.Message) { - xxx_messageInfo_AppOverride.Merge(dst, src) + +func (x *AppOverride) Reset() { + *x = AppOverride{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *AppOverride) XXX_Size() int { - return xxx_messageInfo_AppOverride.Size(m) + +func (x *AppOverride) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AppOverride) XXX_DiscardUnknown() { - xxx_messageInfo_AppOverride.DiscardUnknown(m) + +func (*AppOverride) ProtoMessage() {} + +func (x *AppOverride) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AppOverride proto.InternalMessageInfo +// Deprecated: Use AppOverride.ProtoReflect.Descriptor instead. +func (*AppOverride) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{1} +} -func (m *AppOverride) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId +func (x *AppOverride) GetAppId() string { + if x != nil && x.AppId != nil { + return *x.AppId } return "" } // Deprecated: Do not use. -func (m *AppOverride) GetNumMemcachegBackends() int32 { - if m != nil && m.NumMemcachegBackends != nil { - return *m.NumMemcachegBackends +func (x *AppOverride) GetNumMemcachegBackends() int32 { + if x != nil && x.NumMemcachegBackends != nil { + return *x.NumMemcachegBackends } return 0 } // Deprecated: Do not use. -func (m *AppOverride) GetIgnoreShardlock() bool { - if m != nil && m.IgnoreShardlock != nil { - return *m.IgnoreShardlock +func (x *AppOverride) GetIgnoreShardlock() bool { + if x != nil && x.IgnoreShardlock != nil { + return *x.IgnoreShardlock } return false } // Deprecated: Do not use. -func (m *AppOverride) GetMemcachePoolHint() string { - if m != nil && m.MemcachePoolHint != nil { - return *m.MemcachePoolHint +func (x *AppOverride) GetMemcachePoolHint() string { + if x != nil && x.MemcachePoolHint != nil { + return *x.MemcachePoolHint } return "" } // Deprecated: Do not use. -func (m *AppOverride) GetMemcacheShardingStrategy() []byte { - if m != nil { - return m.MemcacheShardingStrategy +func (x *AppOverride) GetMemcacheShardingStrategy() []byte { + if x != nil { + return x.MemcacheShardingStrategy } return nil } type MemcacheGetRequest struct { - Key [][]byte `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` - NameSpace *string `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - ForCas *bool `protobuf:"varint,4,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"` - Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MemcacheGetRequest) Reset() { *m = MemcacheGetRequest{} } -func (m *MemcacheGetRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetRequest) ProtoMessage() {} -func (*MemcacheGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{2} -} -func (m *MemcacheGetRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGetRequest.Unmarshal(m, b) -} -func (m *MemcacheGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGetRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key [][]byte `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` + NameSpace *string `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + ForCas *bool `protobuf:"varint,4,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"` + Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` + ForPeek *bool `protobuf:"varint,6,opt,name=for_peek,json=forPeek,def=0" json:"for_peek,omitempty"` } -func (dst *MemcacheGetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGetRequest.Merge(dst, src) + +// Default values for MemcacheGetRequest fields. +const ( + Default_MemcacheGetRequest_NameSpace = string("") + Default_MemcacheGetRequest_ForPeek = bool(false) +) + +func (x *MemcacheGetRequest) Reset() { + *x = MemcacheGetRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheGetRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheGetRequest.Size(m) + +func (x *MemcacheGetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheGetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGetRequest.DiscardUnknown(m) + +func (*MemcacheGetRequest) ProtoMessage() {} + +func (x *MemcacheGetRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheGetRequest proto.InternalMessageInfo +// Deprecated: Use MemcacheGetRequest.ProtoReflect.Descriptor instead. +func (*MemcacheGetRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{2} +} -func (m *MemcacheGetRequest) GetKey() [][]byte { - if m != nil { - return m.Key +func (x *MemcacheGetRequest) GetKey() [][]byte { + if x != nil { + return x.Key } return nil } -func (m *MemcacheGetRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace +func (x *MemcacheGetRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace } - return "" + return Default_MemcacheGetRequest_NameSpace } -func (m *MemcacheGetRequest) GetForCas() bool { - if m != nil && m.ForCas != nil { - return *m.ForCas +func (x *MemcacheGetRequest) GetForCas() bool { + if x != nil && x.ForCas != nil { + return *x.ForCas } return false } -func (m *MemcacheGetRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheGetRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } return nil } -type MemcacheGetResponse struct { - Item []*MemcacheGetResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MemcacheGetRequest) GetForPeek() bool { + if x != nil && x.ForPeek != nil { + return *x.ForPeek + } + return Default_MemcacheGetRequest_ForPeek } -func (m *MemcacheGetResponse) Reset() { *m = MemcacheGetResponse{} } -func (m *MemcacheGetResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetResponse) ProtoMessage() {} -func (*MemcacheGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{3} -} -func (m *MemcacheGetResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGetResponse.Unmarshal(m, b) -} -func (m *MemcacheGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGetResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheGetResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGetResponse.Merge(dst, src) -} -func (m *MemcacheGetResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheGetResponse.Size(m) -} -func (m *MemcacheGetResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGetResponse.DiscardUnknown(m) -} +type ItemTimestamps struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var xxx_messageInfo_MemcacheGetResponse proto.InternalMessageInfo + ExpirationTimeSec *int64 `protobuf:"varint,1,opt,name=expiration_time_sec,json=expirationTimeSec" json:"expiration_time_sec,omitempty"` + LastAccessTimeSec *int64 `protobuf:"varint,2,opt,name=last_access_time_sec,json=lastAccessTimeSec" json:"last_access_time_sec,omitempty"` + DeleteLockTimeSec *int64 `protobuf:"varint,3,opt,name=delete_lock_time_sec,json=deleteLockTimeSec" json:"delete_lock_time_sec,omitempty"` +} -func (m *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_Item { - if m != nil { - return m.Item +func (x *ItemTimestamps) Reset() { + *x = ItemTimestamps{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type MemcacheGetResponse_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` - CasId *uint64 `protobuf:"fixed64,5,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` - ExpiresInSeconds *int32 `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds" json:"expires_in_seconds,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MemcacheGetResponse_Item) Reset() { *m = MemcacheGetResponse_Item{} } -func (m *MemcacheGetResponse_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetResponse_Item) ProtoMessage() {} -func (*MemcacheGetResponse_Item) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{3, 0} -} -func (m *MemcacheGetResponse_Item) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGetResponse_Item.Unmarshal(m, b) -} -func (m *MemcacheGetResponse_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGetResponse_Item.Marshal(b, m, deterministic) -} -func (dst *MemcacheGetResponse_Item) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGetResponse_Item.Merge(dst, src) -} -func (m *MemcacheGetResponse_Item) XXX_Size() int { - return xxx_messageInfo_MemcacheGetResponse_Item.Size(m) -} -func (m *MemcacheGetResponse_Item) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGetResponse_Item.DiscardUnknown(m) +func (x *ItemTimestamps) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheGetResponse_Item proto.InternalMessageInfo +func (*ItemTimestamps) ProtoMessage() {} -func (m *MemcacheGetResponse_Item) GetKey() []byte { - if m != nil { - return m.Key +func (x *ItemTimestamps) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *MemcacheGetResponse_Item) GetValue() []byte { - if m != nil { - return m.Value - } - return nil +// Deprecated: Use ItemTimestamps.ProtoReflect.Descriptor instead. +func (*ItemTimestamps) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{3} } -func (m *MemcacheGetResponse_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags +func (x *ItemTimestamps) GetExpirationTimeSec() int64 { + if x != nil && x.ExpirationTimeSec != nil { + return *x.ExpirationTimeSec } return 0 } -func (m *MemcacheGetResponse_Item) GetCasId() uint64 { - if m != nil && m.CasId != nil { - return *m.CasId +func (x *ItemTimestamps) GetLastAccessTimeSec() int64 { + if x != nil && x.LastAccessTimeSec != nil { + return *x.LastAccessTimeSec } return 0 } -func (m *MemcacheGetResponse_Item) GetExpiresInSeconds() int32 { - if m != nil && m.ExpiresInSeconds != nil { - return *m.ExpiresInSeconds +func (x *ItemTimestamps) GetDeleteLockTimeSec() int64 { + if x != nil && x.DeleteLockTimeSec != nil { + return *x.DeleteLockTimeSec } return 0 } -type MemcacheSetRequest struct { - Item []*MemcacheSetRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` - NameSpace *string `protobuf:"bytes,7,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,10,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MemcacheGetResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheSetRequest) Reset() { *m = MemcacheSetRequest{} } -func (m *MemcacheSetRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetRequest) ProtoMessage() {} -func (*MemcacheSetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{4} -} -func (m *MemcacheSetRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheSetRequest.Unmarshal(m, b) + Item []*MemcacheGetResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` } -func (m *MemcacheSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheSetRequest.Marshal(b, m, deterministic) -} -func (dst *MemcacheSetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheSetRequest.Merge(dst, src) -} -func (m *MemcacheSetRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheSetRequest.Size(m) + +func (x *MemcacheGetResponse) Reset() { + *x = MemcacheGetResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheSetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheSetRequest.DiscardUnknown(m) + +func (x *MemcacheGetResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheSetRequest proto.InternalMessageInfo +func (*MemcacheGetResponse) ProtoMessage() {} -func (m *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_Item { - if m != nil { - return m.Item +func (x *MemcacheGetResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *MemcacheSetRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" +// Deprecated: Use MemcacheGetResponse.ProtoReflect.Descriptor instead. +func (*MemcacheGetResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{4} } -func (m *MemcacheSetRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_Item { + if x != nil { + return x.Item } return nil } -type MemcacheSetRequest_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` - SetPolicy *MemcacheSetRequest_SetPolicy `protobuf:"varint,5,opt,name=set_policy,json=setPolicy,enum=appengine.MemcacheSetRequest_SetPolicy,def=1" json:"set_policy,omitempty"` - ExpirationTime *uint32 `protobuf:"fixed32,6,opt,name=expiration_time,json=expirationTime,def=0" json:"expiration_time,omitempty"` - CasId *uint64 `protobuf:"fixed64,8,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` - ForCas *bool `protobuf:"varint,9,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MemcacheSetRequest_Item) Reset() { *m = MemcacheSetRequest_Item{} } -func (m *MemcacheSetRequest_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetRequest_Item) ProtoMessage() {} -func (*MemcacheSetRequest_Item) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{4, 0} -} -func (m *MemcacheSetRequest_Item) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheSetRequest_Item.Unmarshal(m, b) -} -func (m *MemcacheSetRequest_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheSetRequest_Item.Marshal(b, m, deterministic) -} -func (dst *MemcacheSetRequest_Item) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheSetRequest_Item.Merge(dst, src) -} -func (m *MemcacheSetRequest_Item) XXX_Size() int { - return xxx_messageInfo_MemcacheSetRequest_Item.Size(m) -} -func (m *MemcacheSetRequest_Item) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheSetRequest_Item.DiscardUnknown(m) -} +type MemcacheSetRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var xxx_messageInfo_MemcacheSetRequest_Item proto.InternalMessageInfo + Item []*MemcacheSetRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` + NameSpace *string `protobuf:"bytes,7,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + Override *AppOverride `protobuf:"bytes,10,opt,name=override" json:"override,omitempty"` +} -const Default_MemcacheSetRequest_Item_SetPolicy MemcacheSetRequest_SetPolicy = MemcacheSetRequest_SET -const Default_MemcacheSetRequest_Item_ExpirationTime uint32 = 0 +// Default values for MemcacheSetRequest fields. +const ( + Default_MemcacheSetRequest_NameSpace = string("") +) -func (m *MemcacheSetRequest_Item) GetKey() []byte { - if m != nil { - return m.Key +func (x *MemcacheSetRequest) Reset() { + *x = MemcacheSetRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *MemcacheSetRequest_Item) GetValue() []byte { - if m != nil { - return m.Value - } - return nil +func (x *MemcacheSetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheSetRequest_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags +func (*MemcacheSetRequest) ProtoMessage() {} + +func (x *MemcacheSetRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *MemcacheSetRequest_Item) GetSetPolicy() MemcacheSetRequest_SetPolicy { - if m != nil && m.SetPolicy != nil { - return *m.SetPolicy - } - return Default_MemcacheSetRequest_Item_SetPolicy +// Deprecated: Use MemcacheSetRequest.ProtoReflect.Descriptor instead. +func (*MemcacheSetRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{5} } -func (m *MemcacheSetRequest_Item) GetExpirationTime() uint32 { - if m != nil && m.ExpirationTime != nil { - return *m.ExpirationTime +func (x *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_Item { + if x != nil { + return x.Item } - return Default_MemcacheSetRequest_Item_ExpirationTime + return nil } -func (m *MemcacheSetRequest_Item) GetCasId() uint64 { - if m != nil && m.CasId != nil { - return *m.CasId +func (x *MemcacheSetRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace } - return 0 + return Default_MemcacheSetRequest_NameSpace } -func (m *MemcacheSetRequest_Item) GetForCas() bool { - if m != nil && m.ForCas != nil { - return *m.ForCas +func (x *MemcacheSetRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } - return false + return nil } type MemcacheSetResponse struct { - SetStatus []MemcacheSetResponse_SetStatusCode `protobuf:"varint,1,rep,name=set_status,json=setStatus,enum=appengine.MemcacheSetResponse_SetStatusCode" json:"set_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheSetResponse) Reset() { *m = MemcacheSetResponse{} } -func (m *MemcacheSetResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetResponse) ProtoMessage() {} -func (*MemcacheSetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{5} -} -func (m *MemcacheSetResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheSetResponse.Unmarshal(m, b) + SetStatus []MemcacheSetResponse_SetStatusCode `protobuf:"varint,1,rep,name=set_status,json=setStatus,enum=appengine.MemcacheSetResponse_SetStatusCode" json:"set_status,omitempty"` } -func (m *MemcacheSetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheSetResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheSetResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheSetResponse.Merge(dst, src) + +func (x *MemcacheSetResponse) Reset() { + *x = MemcacheSetResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheSetResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheSetResponse.Size(m) + +func (x *MemcacheSetResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheSetResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheSetResponse.DiscardUnknown(m) + +func (*MemcacheSetResponse) ProtoMessage() {} + +func (x *MemcacheSetResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheSetResponse proto.InternalMessageInfo +// Deprecated: Use MemcacheSetResponse.ProtoReflect.Descriptor instead. +func (*MemcacheSetResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{6} +} -func (m *MemcacheSetResponse) GetSetStatus() []MemcacheSetResponse_SetStatusCode { - if m != nil { - return m.SetStatus +func (x *MemcacheSetResponse) GetSetStatus() []MemcacheSetResponse_SetStatusCode { + if x != nil { + return x.SetStatus } return nil } type MemcacheDeleteRequest struct { - Item []*MemcacheDeleteRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` - NameSpace *string `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheDeleteRequest) Reset() { *m = MemcacheDeleteRequest{} } -func (m *MemcacheDeleteRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteRequest) ProtoMessage() {} -func (*MemcacheDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{6} -} -func (m *MemcacheDeleteRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheDeleteRequest.Unmarshal(m, b) -} -func (m *MemcacheDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheDeleteRequest.Marshal(b, m, deterministic) -} -func (dst *MemcacheDeleteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheDeleteRequest.Merge(dst, src) + Item []*MemcacheDeleteRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` + NameSpace *string `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` } -func (m *MemcacheDeleteRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheDeleteRequest.Size(m) + +// Default values for MemcacheDeleteRequest fields. +const ( + Default_MemcacheDeleteRequest_NameSpace = string("") +) + +func (x *MemcacheDeleteRequest) Reset() { + *x = MemcacheDeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheDeleteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheDeleteRequest.DiscardUnknown(m) + +func (x *MemcacheDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheDeleteRequest proto.InternalMessageInfo +func (*MemcacheDeleteRequest) ProtoMessage() {} -func (m *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_Item { - if m != nil { - return m.Item +func (x *MemcacheDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *MemcacheDeleteRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" +// Deprecated: Use MemcacheDeleteRequest.ProtoReflect.Descriptor instead. +func (*MemcacheDeleteRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{7} } -func (m *MemcacheDeleteRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_Item { + if x != nil { + return x.Item } return nil } -type MemcacheDeleteRequest_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - DeleteTime *uint32 `protobuf:"fixed32,3,opt,name=delete_time,json=deleteTime,def=0" json:"delete_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MemcacheDeleteRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace + } + return Default_MemcacheDeleteRequest_NameSpace } -func (m *MemcacheDeleteRequest_Item) Reset() { *m = MemcacheDeleteRequest_Item{} } -func (m *MemcacheDeleteRequest_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteRequest_Item) ProtoMessage() {} -func (*MemcacheDeleteRequest_Item) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{6, 0} -} -func (m *MemcacheDeleteRequest_Item) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheDeleteRequest_Item.Unmarshal(m, b) -} -func (m *MemcacheDeleteRequest_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheDeleteRequest_Item.Marshal(b, m, deterministic) -} -func (dst *MemcacheDeleteRequest_Item) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheDeleteRequest_Item.Merge(dst, src) -} -func (m *MemcacheDeleteRequest_Item) XXX_Size() int { - return xxx_messageInfo_MemcacheDeleteRequest_Item.Size(m) -} -func (m *MemcacheDeleteRequest_Item) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheDeleteRequest_Item.DiscardUnknown(m) +func (x *MemcacheDeleteRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override + } + return nil } -var xxx_messageInfo_MemcacheDeleteRequest_Item proto.InternalMessageInfo +type MemcacheDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -const Default_MemcacheDeleteRequest_Item_DeleteTime uint32 = 0 + DeleteStatus []MemcacheDeleteResponse_DeleteStatusCode `protobuf:"varint,1,rep,name=delete_status,json=deleteStatus,enum=appengine.MemcacheDeleteResponse_DeleteStatusCode" json:"delete_status,omitempty"` +} -func (m *MemcacheDeleteRequest_Item) GetKey() []byte { - if m != nil { - return m.Key +func (x *MemcacheDeleteResponse) Reset() { + *x = MemcacheDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *MemcacheDeleteRequest_Item) GetDeleteTime() uint32 { - if m != nil && m.DeleteTime != nil { - return *m.DeleteTime - } - return Default_MemcacheDeleteRequest_Item_DeleteTime +func (x *MemcacheDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type MemcacheDeleteResponse struct { - DeleteStatus []MemcacheDeleteResponse_DeleteStatusCode `protobuf:"varint,1,rep,name=delete_status,json=deleteStatus,enum=appengine.MemcacheDeleteResponse_DeleteStatusCode" json:"delete_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (*MemcacheDeleteResponse) ProtoMessage() {} + +func (x *MemcacheDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MemcacheDeleteResponse) Reset() { *m = MemcacheDeleteResponse{} } -func (m *MemcacheDeleteResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteResponse) ProtoMessage() {} +// Deprecated: Use MemcacheDeleteResponse.ProtoReflect.Descriptor instead. func (*MemcacheDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{7} -} -func (m *MemcacheDeleteResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheDeleteResponse.Unmarshal(m, b) -} -func (m *MemcacheDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheDeleteResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheDeleteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheDeleteResponse.Merge(dst, src) -} -func (m *MemcacheDeleteResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheDeleteResponse.Size(m) -} -func (m *MemcacheDeleteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheDeleteResponse.DiscardUnknown(m) + return file_memcache_service_proto_rawDescGZIP(), []int{8} } -var xxx_messageInfo_MemcacheDeleteResponse proto.InternalMessageInfo - -func (m *MemcacheDeleteResponse) GetDeleteStatus() []MemcacheDeleteResponse_DeleteStatusCode { - if m != nil { - return m.DeleteStatus +func (x *MemcacheDeleteResponse) GetDeleteStatus() []MemcacheDeleteResponse_DeleteStatusCode { + if x != nil { + return x.DeleteStatus } return nil } type MemcacheIncrementRequest struct { - Key []byte `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` - NameSpace *string `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - Delta *uint64 `protobuf:"varint,2,opt,name=delta,def=1" json:"delta,omitempty"` - Direction *MemcacheIncrementRequest_Direction `protobuf:"varint,3,opt,name=direction,enum=appengine.MemcacheIncrementRequest_Direction,def=1" json:"direction,omitempty"` - InitialValue *uint64 `protobuf:"varint,5,opt,name=initial_value,json=initialValue" json:"initial_value,omitempty"` - InitialFlags *uint32 `protobuf:"fixed32,6,opt,name=initial_flags,json=initialFlags" json:"initial_flags,omitempty"` - Override *AppOverride `protobuf:"bytes,7,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MemcacheIncrementRequest) Reset() { *m = MemcacheIncrementRequest{} } -func (m *MemcacheIncrementRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheIncrementRequest) ProtoMessage() {} -func (*MemcacheIncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{8} -} -func (m *MemcacheIncrementRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheIncrementRequest.Unmarshal(m, b) -} -func (m *MemcacheIncrementRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheIncrementRequest.Marshal(b, m, deterministic) -} -func (dst *MemcacheIncrementRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheIncrementRequest.Merge(dst, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key []byte `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` + NameSpace *string `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + Delta *uint64 `protobuf:"varint,2,opt,name=delta,def=1" json:"delta,omitempty"` + Direction *MemcacheIncrementRequest_Direction `protobuf:"varint,3,opt,name=direction,enum=appengine.MemcacheIncrementRequest_Direction,def=1" json:"direction,omitempty"` + InitialValue *uint64 `protobuf:"varint,5,opt,name=initial_value,json=initialValue" json:"initial_value,omitempty"` + InitialFlags *uint32 `protobuf:"fixed32,6,opt,name=initial_flags,json=initialFlags" json:"initial_flags,omitempty"` + Override *AppOverride `protobuf:"bytes,7,opt,name=override" json:"override,omitempty"` } -func (m *MemcacheIncrementRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheIncrementRequest.Size(m) + +// Default values for MemcacheIncrementRequest fields. +const ( + Default_MemcacheIncrementRequest_NameSpace = string("") + Default_MemcacheIncrementRequest_Delta = uint64(1) + Default_MemcacheIncrementRequest_Direction = MemcacheIncrementRequest_INCREMENT +) + +func (x *MemcacheIncrementRequest) Reset() { + *x = MemcacheIncrementRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheIncrementRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheIncrementRequest.DiscardUnknown(m) + +func (x *MemcacheIncrementRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheIncrementRequest proto.InternalMessageInfo +func (*MemcacheIncrementRequest) ProtoMessage() {} + +func (x *MemcacheIncrementRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} -const Default_MemcacheIncrementRequest_Delta uint64 = 1 -const Default_MemcacheIncrementRequest_Direction MemcacheIncrementRequest_Direction = MemcacheIncrementRequest_INCREMENT +// Deprecated: Use MemcacheIncrementRequest.ProtoReflect.Descriptor instead. +func (*MemcacheIncrementRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{9} +} -func (m *MemcacheIncrementRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *MemcacheIncrementRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *MemcacheIncrementRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace +func (x *MemcacheIncrementRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace } - return "" + return Default_MemcacheIncrementRequest_NameSpace } -func (m *MemcacheIncrementRequest) GetDelta() uint64 { - if m != nil && m.Delta != nil { - return *m.Delta +func (x *MemcacheIncrementRequest) GetDelta() uint64 { + if x != nil && x.Delta != nil { + return *x.Delta } return Default_MemcacheIncrementRequest_Delta } -func (m *MemcacheIncrementRequest) GetDirection() MemcacheIncrementRequest_Direction { - if m != nil && m.Direction != nil { - return *m.Direction +func (x *MemcacheIncrementRequest) GetDirection() MemcacheIncrementRequest_Direction { + if x != nil && x.Direction != nil { + return *x.Direction } return Default_MemcacheIncrementRequest_Direction } -func (m *MemcacheIncrementRequest) GetInitialValue() uint64 { - if m != nil && m.InitialValue != nil { - return *m.InitialValue +func (x *MemcacheIncrementRequest) GetInitialValue() uint64 { + if x != nil && x.InitialValue != nil { + return *x.InitialValue } return 0 } -func (m *MemcacheIncrementRequest) GetInitialFlags() uint32 { - if m != nil && m.InitialFlags != nil { - return *m.InitialFlags +func (x *MemcacheIncrementRequest) GetInitialFlags() uint32 { + if x != nil && x.InitialFlags != nil { + return *x.InitialFlags } return 0 } -func (m *MemcacheIncrementRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheIncrementRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } return nil } type MemcacheIncrementResponse struct { - NewValue *uint64 `protobuf:"varint,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"` - IncrementStatus *MemcacheIncrementResponse_IncrementStatusCode `protobuf:"varint,2,opt,name=increment_status,json=incrementStatus,enum=appengine.MemcacheIncrementResponse_IncrementStatusCode" json:"increment_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheIncrementResponse) Reset() { *m = MemcacheIncrementResponse{} } -func (m *MemcacheIncrementResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheIncrementResponse) ProtoMessage() {} -func (*MemcacheIncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{9} -} -func (m *MemcacheIncrementResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheIncrementResponse.Unmarshal(m, b) + NewValue *uint64 `protobuf:"varint,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"` + IncrementStatus *MemcacheIncrementResponse_IncrementStatusCode `protobuf:"varint,2,opt,name=increment_status,json=incrementStatus,enum=appengine.MemcacheIncrementResponse_IncrementStatusCode" json:"increment_status,omitempty"` } -func (m *MemcacheIncrementResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheIncrementResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheIncrementResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheIncrementResponse.Merge(dst, src) + +func (x *MemcacheIncrementResponse) Reset() { + *x = MemcacheIncrementResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheIncrementResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheIncrementResponse.Size(m) + +func (x *MemcacheIncrementResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheIncrementResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheIncrementResponse.DiscardUnknown(m) + +func (*MemcacheIncrementResponse) ProtoMessage() {} + +func (x *MemcacheIncrementResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheIncrementResponse proto.InternalMessageInfo +// Deprecated: Use MemcacheIncrementResponse.ProtoReflect.Descriptor instead. +func (*MemcacheIncrementResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{10} +} -func (m *MemcacheIncrementResponse) GetNewValue() uint64 { - if m != nil && m.NewValue != nil { - return *m.NewValue +func (x *MemcacheIncrementResponse) GetNewValue() uint64 { + if x != nil && x.NewValue != nil { + return *x.NewValue } return 0 } -func (m *MemcacheIncrementResponse) GetIncrementStatus() MemcacheIncrementResponse_IncrementStatusCode { - if m != nil && m.IncrementStatus != nil { - return *m.IncrementStatus +func (x *MemcacheIncrementResponse) GetIncrementStatus() MemcacheIncrementResponse_IncrementStatusCode { + if x != nil && x.IncrementStatus != nil { + return *x.IncrementStatus } return MemcacheIncrementResponse_OK } type MemcacheBatchIncrementRequest struct { - NameSpace *string `protobuf:"bytes,1,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - Item []*MemcacheIncrementRequest `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"` - Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheBatchIncrementRequest) Reset() { *m = MemcacheBatchIncrementRequest{} } -func (m *MemcacheBatchIncrementRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheBatchIncrementRequest) ProtoMessage() {} -func (*MemcacheBatchIncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{10} -} -func (m *MemcacheBatchIncrementRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheBatchIncrementRequest.Unmarshal(m, b) + NameSpace *string `protobuf:"bytes,1,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + Item []*MemcacheIncrementRequest `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"` + Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` } -func (m *MemcacheBatchIncrementRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheBatchIncrementRequest.Marshal(b, m, deterministic) -} -func (dst *MemcacheBatchIncrementRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheBatchIncrementRequest.Merge(dst, src) + +// Default values for MemcacheBatchIncrementRequest fields. +const ( + Default_MemcacheBatchIncrementRequest_NameSpace = string("") +) + +func (x *MemcacheBatchIncrementRequest) Reset() { + *x = MemcacheBatchIncrementRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheBatchIncrementRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheBatchIncrementRequest.Size(m) + +func (x *MemcacheBatchIncrementRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheBatchIncrementRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheBatchIncrementRequest.DiscardUnknown(m) + +func (*MemcacheBatchIncrementRequest) ProtoMessage() {} + +func (x *MemcacheBatchIncrementRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheBatchIncrementRequest proto.InternalMessageInfo +// Deprecated: Use MemcacheBatchIncrementRequest.ProtoReflect.Descriptor instead. +func (*MemcacheBatchIncrementRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{11} +} -func (m *MemcacheBatchIncrementRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace +func (x *MemcacheBatchIncrementRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace } - return "" + return Default_MemcacheBatchIncrementRequest_NameSpace } -func (m *MemcacheBatchIncrementRequest) GetItem() []*MemcacheIncrementRequest { - if m != nil { - return m.Item +func (x *MemcacheBatchIncrementRequest) GetItem() []*MemcacheIncrementRequest { + if x != nil { + return x.Item } return nil } -func (m *MemcacheBatchIncrementRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheBatchIncrementRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } return nil } type MemcacheBatchIncrementResponse struct { - Item []*MemcacheIncrementResponse `protobuf:"bytes,1,rep,name=item" json:"item,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheBatchIncrementResponse) Reset() { *m = MemcacheBatchIncrementResponse{} } -func (m *MemcacheBatchIncrementResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheBatchIncrementResponse) ProtoMessage() {} -func (*MemcacheBatchIncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{11} -} -func (m *MemcacheBatchIncrementResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheBatchIncrementResponse.Unmarshal(m, b) + Item []*MemcacheIncrementResponse `protobuf:"bytes,1,rep,name=item" json:"item,omitempty"` } -func (m *MemcacheBatchIncrementResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheBatchIncrementResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheBatchIncrementResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheBatchIncrementResponse.Merge(dst, src) + +func (x *MemcacheBatchIncrementResponse) Reset() { + *x = MemcacheBatchIncrementResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheBatchIncrementResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheBatchIncrementResponse.Size(m) + +func (x *MemcacheBatchIncrementResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheBatchIncrementResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheBatchIncrementResponse.DiscardUnknown(m) + +func (*MemcacheBatchIncrementResponse) ProtoMessage() {} + +func (x *MemcacheBatchIncrementResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheBatchIncrementResponse proto.InternalMessageInfo +// Deprecated: Use MemcacheBatchIncrementResponse.ProtoReflect.Descriptor instead. +func (*MemcacheBatchIncrementResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{12} +} -func (m *MemcacheBatchIncrementResponse) GetItem() []*MemcacheIncrementResponse { - if m != nil { - return m.Item +func (x *MemcacheBatchIncrementResponse) GetItem() []*MemcacheIncrementResponse { + if x != nil { + return x.Item } return nil } type MemcacheFlushRequest struct { - Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheFlushRequest) Reset() { *m = MemcacheFlushRequest{} } -func (m *MemcacheFlushRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheFlushRequest) ProtoMessage() {} -func (*MemcacheFlushRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{12} -} -func (m *MemcacheFlushRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheFlushRequest.Unmarshal(m, b) + Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` } -func (m *MemcacheFlushRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheFlushRequest.Marshal(b, m, deterministic) -} -func (dst *MemcacheFlushRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheFlushRequest.Merge(dst, src) + +func (x *MemcacheFlushRequest) Reset() { + *x = MemcacheFlushRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheFlushRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheFlushRequest.Size(m) + +func (x *MemcacheFlushRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheFlushRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheFlushRequest.DiscardUnknown(m) + +func (*MemcacheFlushRequest) ProtoMessage() {} + +func (x *MemcacheFlushRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheFlushRequest proto.InternalMessageInfo +// Deprecated: Use MemcacheFlushRequest.ProtoReflect.Descriptor instead. +func (*MemcacheFlushRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{13} +} -func (m *MemcacheFlushRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheFlushRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } return nil } type MemcacheFlushResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *MemcacheFlushResponse) Reset() { *m = MemcacheFlushResponse{} } -func (m *MemcacheFlushResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheFlushResponse) ProtoMessage() {} -func (*MemcacheFlushResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{13} -} -func (m *MemcacheFlushResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheFlushResponse.Unmarshal(m, b) -} -func (m *MemcacheFlushResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheFlushResponse.Marshal(b, m, deterministic) -} -func (dst *MemcacheFlushResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheFlushResponse.Merge(dst, src) -} -func (m *MemcacheFlushResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheFlushResponse.Size(m) +func (x *MemcacheFlushResponse) Reset() { + *x = MemcacheFlushResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheFlushResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheFlushResponse.DiscardUnknown(m) + +func (x *MemcacheFlushResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MemcacheFlushResponse proto.InternalMessageInfo +func (*MemcacheFlushResponse) ProtoMessage() {} -type MemcacheStatsRequest struct { - Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MemcacheFlushResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MemcacheStatsRequest) Reset() { *m = MemcacheStatsRequest{} } -func (m *MemcacheStatsRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheStatsRequest) ProtoMessage() {} -func (*MemcacheStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{14} -} -func (m *MemcacheStatsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheStatsRequest.Unmarshal(m, b) +// Deprecated: Use MemcacheFlushResponse.ProtoReflect.Descriptor instead. +func (*MemcacheFlushResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{14} } -func (m *MemcacheStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheStatsRequest.Marshal(b, m, deterministic) + +type MemcacheStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` } -func (dst *MemcacheStatsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheStatsRequest.Merge(dst, src) + +func (x *MemcacheStatsRequest) Reset() { + *x = MemcacheStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheStatsRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheStatsRequest.Size(m) + +func (x *MemcacheStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheStatsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheStatsRequest.DiscardUnknown(m) + +func (*MemcacheStatsRequest) ProtoMessage() {} + +func (x *MemcacheStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheStatsRequest proto.InternalMessageInfo +// Deprecated: Use MemcacheStatsRequest.ProtoReflect.Descriptor instead. +func (*MemcacheStatsRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{15} +} -func (m *MemcacheStatsRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheStatsRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override } return nil } type MergedNamespaceStats struct { - Hits *uint64 `protobuf:"varint,1,req,name=hits" json:"hits,omitempty"` - Misses *uint64 `protobuf:"varint,2,req,name=misses" json:"misses,omitempty"` - ByteHits *uint64 `protobuf:"varint,3,req,name=byte_hits,json=byteHits" json:"byte_hits,omitempty"` - Items *uint64 `protobuf:"varint,4,req,name=items" json:"items,omitempty"` - Bytes *uint64 `protobuf:"varint,5,req,name=bytes" json:"bytes,omitempty"` - OldestItemAge *uint32 `protobuf:"fixed32,6,req,name=oldest_item_age,json=oldestItemAge" json:"oldest_item_age,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MergedNamespaceStats) Reset() { *m = MergedNamespaceStats{} } -func (m *MergedNamespaceStats) String() string { return proto.CompactTextString(m) } -func (*MergedNamespaceStats) ProtoMessage() {} -func (*MergedNamespaceStats) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{15} -} -func (m *MergedNamespaceStats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MergedNamespaceStats.Unmarshal(m, b) -} -func (m *MergedNamespaceStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MergedNamespaceStats.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hits *uint64 `protobuf:"varint,1,req,name=hits" json:"hits,omitempty"` + Misses *uint64 `protobuf:"varint,2,req,name=misses" json:"misses,omitempty"` + ByteHits *uint64 `protobuf:"varint,3,req,name=byte_hits,json=byteHits" json:"byte_hits,omitempty"` + Items *uint64 `protobuf:"varint,4,req,name=items" json:"items,omitempty"` + Bytes *uint64 `protobuf:"varint,5,req,name=bytes" json:"bytes,omitempty"` + OldestItemAge *uint32 `protobuf:"fixed32,6,req,name=oldest_item_age,json=oldestItemAge" json:"oldest_item_age,omitempty"` } -func (dst *MergedNamespaceStats) XXX_Merge(src proto.Message) { - xxx_messageInfo_MergedNamespaceStats.Merge(dst, src) + +func (x *MergedNamespaceStats) Reset() { + *x = MergedNamespaceStats{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MergedNamespaceStats) XXX_Size() int { - return xxx_messageInfo_MergedNamespaceStats.Size(m) + +func (x *MergedNamespaceStats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MergedNamespaceStats) XXX_DiscardUnknown() { - xxx_messageInfo_MergedNamespaceStats.DiscardUnknown(m) + +func (*MergedNamespaceStats) ProtoMessage() {} + +func (x *MergedNamespaceStats) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MergedNamespaceStats proto.InternalMessageInfo +// Deprecated: Use MergedNamespaceStats.ProtoReflect.Descriptor instead. +func (*MergedNamespaceStats) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{16} +} -func (m *MergedNamespaceStats) GetHits() uint64 { - if m != nil && m.Hits != nil { - return *m.Hits +func (x *MergedNamespaceStats) GetHits() uint64 { + if x != nil && x.Hits != nil { + return *x.Hits } return 0 } -func (m *MergedNamespaceStats) GetMisses() uint64 { - if m != nil && m.Misses != nil { - return *m.Misses +func (x *MergedNamespaceStats) GetMisses() uint64 { + if x != nil && x.Misses != nil { + return *x.Misses } return 0 } -func (m *MergedNamespaceStats) GetByteHits() uint64 { - if m != nil && m.ByteHits != nil { - return *m.ByteHits +func (x *MergedNamespaceStats) GetByteHits() uint64 { + if x != nil && x.ByteHits != nil { + return *x.ByteHits } return 0 } -func (m *MergedNamespaceStats) GetItems() uint64 { - if m != nil && m.Items != nil { - return *m.Items +func (x *MergedNamespaceStats) GetItems() uint64 { + if x != nil && x.Items != nil { + return *x.Items } return 0 } -func (m *MergedNamespaceStats) GetBytes() uint64 { - if m != nil && m.Bytes != nil { - return *m.Bytes +func (x *MergedNamespaceStats) GetBytes() uint64 { + if x != nil && x.Bytes != nil { + return *x.Bytes } return 0 } -func (m *MergedNamespaceStats) GetOldestItemAge() uint32 { - if m != nil && m.OldestItemAge != nil { - return *m.OldestItemAge +func (x *MergedNamespaceStats) GetOldestItemAge() uint32 { + if x != nil && x.OldestItemAge != nil { + return *x.OldestItemAge } return 0 } type MemcacheStatsResponse struct { - Stats *MergedNamespaceStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Stats *MergedNamespaceStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` +} + +func (x *MemcacheStatsResponse) Reset() { + *x = MemcacheStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemcacheStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheStatsResponse) Reset() { *m = MemcacheStatsResponse{} } -func (m *MemcacheStatsResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheStatsResponse) ProtoMessage() {} +func (*MemcacheStatsResponse) ProtoMessage() {} + +func (x *MemcacheStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemcacheStatsResponse.ProtoReflect.Descriptor instead. func (*MemcacheStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{16} + return file_memcache_service_proto_rawDescGZIP(), []int{17} +} + +func (x *MemcacheStatsResponse) GetStats() *MergedNamespaceStats { + if x != nil { + return x.Stats + } + return nil +} + +type MemcacheGrabTailRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemCount *int32 `protobuf:"varint,1,req,name=item_count,json=itemCount" json:"item_count,omitempty"` + NameSpace *string `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` + Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` +} + +// Default values for MemcacheGrabTailRequest fields. +const ( + Default_MemcacheGrabTailRequest_NameSpace = string("") +) + +func (x *MemcacheGrabTailRequest) Reset() { + *x = MemcacheGrabTailRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemcacheGrabTailRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemcacheGrabTailRequest) ProtoMessage() {} + +func (x *MemcacheGrabTailRequest) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemcacheGrabTailRequest.ProtoReflect.Descriptor instead. +func (*MemcacheGrabTailRequest) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{18} +} + +func (x *MemcacheGrabTailRequest) GetItemCount() int32 { + if x != nil && x.ItemCount != nil { + return *x.ItemCount + } + return 0 } -func (m *MemcacheStatsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheStatsResponse.Unmarshal(m, b) + +func (x *MemcacheGrabTailRequest) GetNameSpace() string { + if x != nil && x.NameSpace != nil { + return *x.NameSpace + } + return Default_MemcacheGrabTailRequest_NameSpace +} + +func (x *MemcacheGrabTailRequest) GetOverride() *AppOverride { + if x != nil { + return x.Override + } + return nil } -func (m *MemcacheStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheStatsResponse.Marshal(b, m, deterministic) + +type MemcacheGrabTailResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Item []*MemcacheGrabTailResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` } -func (dst *MemcacheStatsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheStatsResponse.Merge(dst, src) + +func (x *MemcacheGrabTailResponse) Reset() { + *x = MemcacheGrabTailResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheStatsResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheStatsResponse.Size(m) + +func (x *MemcacheGrabTailResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheStatsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheStatsResponse.DiscardUnknown(m) + +func (*MemcacheGrabTailResponse) ProtoMessage() {} + +func (x *MemcacheGrabTailResponse) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemcacheStatsResponse proto.InternalMessageInfo +// Deprecated: Use MemcacheGrabTailResponse.ProtoReflect.Descriptor instead. +func (*MemcacheGrabTailResponse) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{19} +} -func (m *MemcacheStatsResponse) GetStats() *MergedNamespaceStats { - if m != nil { - return m.Stats +func (x *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_Item { + if x != nil { + return x.Item } return nil } -type MemcacheGrabTailRequest struct { - ItemCount *int32 `protobuf:"varint,1,req,name=item_count,json=itemCount" json:"item_count,omitempty"` - NameSpace *string `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type MemcacheGetResponse_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` + Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` + Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` + CasId *uint64 `protobuf:"fixed64,5,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` + ExpiresInSeconds *int32 `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds" json:"expires_in_seconds,omitempty"` + Timestamps *ItemTimestamps `protobuf:"bytes,8,opt,name=timestamps" json:"timestamps,omitempty"` + IsDeleteLocked *bool `protobuf:"varint,9,opt,name=is_delete_locked,json=isDeleteLocked" json:"is_delete_locked,omitempty"` } -func (m *MemcacheGrabTailRequest) Reset() { *m = MemcacheGrabTailRequest{} } -func (m *MemcacheGrabTailRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailRequest) ProtoMessage() {} -func (*MemcacheGrabTailRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{17} +func (x *MemcacheGetResponse_Item) Reset() { + *x = MemcacheGetResponse_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheGrabTailRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGrabTailRequest.Unmarshal(m, b) + +func (x *MemcacheGetResponse_Item) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheGrabTailRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGrabTailRequest.Marshal(b, m, deterministic) + +func (*MemcacheGetResponse_Item) ProtoMessage() {} + +func (x *MemcacheGetResponse_Item) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (dst *MemcacheGrabTailRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGrabTailRequest.Merge(dst, src) + +// Deprecated: Use MemcacheGetResponse_Item.ProtoReflect.Descriptor instead. +func (*MemcacheGetResponse_Item) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{4, 0} } -func (m *MemcacheGrabTailRequest) XXX_Size() int { - return xxx_messageInfo_MemcacheGrabTailRequest.Size(m) + +func (x *MemcacheGetResponse_Item) GetKey() []byte { + if x != nil { + return x.Key + } + return nil } -func (m *MemcacheGrabTailRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGrabTailRequest.DiscardUnknown(m) + +func (x *MemcacheGetResponse_Item) GetValue() []byte { + if x != nil { + return x.Value + } + return nil } -var xxx_messageInfo_MemcacheGrabTailRequest proto.InternalMessageInfo +func (x *MemcacheGetResponse_Item) GetFlags() uint32 { + if x != nil && x.Flags != nil { + return *x.Flags + } + return 0 +} -func (m *MemcacheGrabTailRequest) GetItemCount() int32 { - if m != nil && m.ItemCount != nil { - return *m.ItemCount +func (x *MemcacheGetResponse_Item) GetCasId() uint64 { + if x != nil && x.CasId != nil { + return *x.CasId } return 0 } -func (m *MemcacheGrabTailRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace +func (x *MemcacheGetResponse_Item) GetExpiresInSeconds() int32 { + if x != nil && x.ExpiresInSeconds != nil { + return *x.ExpiresInSeconds } - return "" + return 0 } -func (m *MemcacheGrabTailRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override +func (x *MemcacheGetResponse_Item) GetTimestamps() *ItemTimestamps { + if x != nil { + return x.Timestamps } return nil } -type MemcacheGrabTailResponse struct { - Item []*MemcacheGrabTailResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MemcacheGetResponse_Item) GetIsDeleteLocked() bool { + if x != nil && x.IsDeleteLocked != nil { + return *x.IsDeleteLocked + } + return false } -func (m *MemcacheGrabTailResponse) Reset() { *m = MemcacheGrabTailResponse{} } -func (m *MemcacheGrabTailResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailResponse) ProtoMessage() {} -func (*MemcacheGrabTailResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{18} -} -func (m *MemcacheGrabTailResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGrabTailResponse.Unmarshal(m, b) +type MemcacheSetRequest_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` + Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` + Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` + SetPolicy *MemcacheSetRequest_SetPolicy `protobuf:"varint,5,opt,name=set_policy,json=setPolicy,enum=appengine.MemcacheSetRequest_SetPolicy,def=1" json:"set_policy,omitempty"` + ExpirationTime *uint32 `protobuf:"fixed32,6,opt,name=expiration_time,json=expirationTime,def=0" json:"expiration_time,omitempty"` + CasId *uint64 `protobuf:"fixed64,8,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` + ForCas *bool `protobuf:"varint,9,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"` } -func (m *MemcacheGrabTailResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGrabTailResponse.Marshal(b, m, deterministic) + +// Default values for MemcacheSetRequest_Item fields. +const ( + Default_MemcacheSetRequest_Item_SetPolicy = MemcacheSetRequest_SET + Default_MemcacheSetRequest_Item_ExpirationTime = uint32(0) +) + +func (x *MemcacheSetRequest_Item) Reset() { + *x = MemcacheSetRequest_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (dst *MemcacheGrabTailResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGrabTailResponse.Merge(dst, src) + +func (x *MemcacheSetRequest_Item) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheGrabTailResponse) XXX_Size() int { - return xxx_messageInfo_MemcacheGrabTailResponse.Size(m) + +func (*MemcacheSetRequest_Item) ProtoMessage() {} + +func (x *MemcacheSetRequest_Item) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MemcacheGrabTailResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGrabTailResponse.DiscardUnknown(m) + +// Deprecated: Use MemcacheSetRequest_Item.ProtoReflect.Descriptor instead. +func (*MemcacheSetRequest_Item) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{5, 0} } -var xxx_messageInfo_MemcacheGrabTailResponse proto.InternalMessageInfo +func (x *MemcacheSetRequest_Item) GetKey() []byte { + if x != nil { + return x.Key + } + return nil +} -func (m *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_Item { - if m != nil { - return m.Item +func (x *MemcacheSetRequest_Item) GetValue() []byte { + if x != nil { + return x.Value } return nil } -type MemcacheGrabTailResponse_Item struct { - Value []byte `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,3,opt,name=flags" json:"flags,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MemcacheSetRequest_Item) GetFlags() uint32 { + if x != nil && x.Flags != nil { + return *x.Flags + } + return 0 } -func (m *MemcacheGrabTailResponse_Item) Reset() { *m = MemcacheGrabTailResponse_Item{} } -func (m *MemcacheGrabTailResponse_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailResponse_Item) ProtoMessage() {} -func (*MemcacheGrabTailResponse_Item) Descriptor() ([]byte, []int) { - return fileDescriptor_memcache_service_e327a14e42649a60, []int{18, 0} +func (x *MemcacheSetRequest_Item) GetSetPolicy() MemcacheSetRequest_SetPolicy { + if x != nil && x.SetPolicy != nil { + return *x.SetPolicy + } + return Default_MemcacheSetRequest_Item_SetPolicy +} + +func (x *MemcacheSetRequest_Item) GetExpirationTime() uint32 { + if x != nil && x.ExpirationTime != nil { + return *x.ExpirationTime + } + return Default_MemcacheSetRequest_Item_ExpirationTime +} + +func (x *MemcacheSetRequest_Item) GetCasId() uint64 { + if x != nil && x.CasId != nil { + return *x.CasId + } + return 0 +} + +func (x *MemcacheSetRequest_Item) GetForCas() bool { + if x != nil && x.ForCas != nil { + return *x.ForCas + } + return false +} + +type MemcacheDeleteRequest_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` + DeleteTime *uint32 `protobuf:"fixed32,3,opt,name=delete_time,json=deleteTime,def=0" json:"delete_time,omitempty"` +} + +// Default values for MemcacheDeleteRequest_Item fields. +const ( + Default_MemcacheDeleteRequest_Item_DeleteTime = uint32(0) +) + +func (x *MemcacheDeleteRequest_Item) Reset() { + *x = MemcacheDeleteRequest_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MemcacheGrabTailResponse_Item) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemcacheGrabTailResponse_Item.Unmarshal(m, b) + +func (x *MemcacheDeleteRequest_Item) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemcacheGrabTailResponse_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MemcacheGrabTailResponse_Item.Marshal(b, m, deterministic) + +func (*MemcacheDeleteRequest_Item) ProtoMessage() {} + +func (x *MemcacheDeleteRequest_Item) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (dst *MemcacheGrabTailResponse_Item) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemcacheGrabTailResponse_Item.Merge(dst, src) + +// Deprecated: Use MemcacheDeleteRequest_Item.ProtoReflect.Descriptor instead. +func (*MemcacheDeleteRequest_Item) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{7, 0} } -func (m *MemcacheGrabTailResponse_Item) XXX_Size() int { - return xxx_messageInfo_MemcacheGrabTailResponse_Item.Size(m) + +func (x *MemcacheDeleteRequest_Item) GetKey() []byte { + if x != nil { + return x.Key + } + return nil } -func (m *MemcacheGrabTailResponse_Item) XXX_DiscardUnknown() { - xxx_messageInfo_MemcacheGrabTailResponse_Item.DiscardUnknown(m) + +func (x *MemcacheDeleteRequest_Item) GetDeleteTime() uint32 { + if x != nil && x.DeleteTime != nil { + return *x.DeleteTime + } + return Default_MemcacheDeleteRequest_Item_DeleteTime } -var xxx_messageInfo_MemcacheGrabTailResponse_Item proto.InternalMessageInfo +type MemcacheGrabTailResponse_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MemcacheGrabTailResponse_Item) GetValue() []byte { - if m != nil { - return m.Value + Value []byte `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` + Flags *uint32 `protobuf:"fixed32,3,opt,name=flags" json:"flags,omitempty"` +} + +func (x *MemcacheGrabTailResponse_Item) Reset() { + *x = MemcacheGrabTailResponse_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemcacheGrabTailResponse_Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemcacheGrabTailResponse_Item) ProtoMessage() {} + +func (x *MemcacheGrabTailResponse_Item) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemcacheGrabTailResponse_Item.ProtoReflect.Descriptor instead. +func (*MemcacheGrabTailResponse_Item) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{19, 0} +} + +func (x *MemcacheGrabTailResponse_Item) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *MemcacheGrabTailResponse_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags +func (x *MemcacheGrabTailResponse_Item) GetFlags() uint32 { + if x != nil && x.Flags != nil { + return *x.Flags } return 0 } -func init() { - proto.RegisterType((*MemcacheServiceError)(nil), "appengine.MemcacheServiceError") - proto.RegisterType((*AppOverride)(nil), "appengine.AppOverride") - proto.RegisterType((*MemcacheGetRequest)(nil), "appengine.MemcacheGetRequest") - proto.RegisterType((*MemcacheGetResponse)(nil), "appengine.MemcacheGetResponse") - proto.RegisterType((*MemcacheGetResponse_Item)(nil), "appengine.MemcacheGetResponse.Item") - proto.RegisterType((*MemcacheSetRequest)(nil), "appengine.MemcacheSetRequest") - proto.RegisterType((*MemcacheSetRequest_Item)(nil), "appengine.MemcacheSetRequest.Item") - proto.RegisterType((*MemcacheSetResponse)(nil), "appengine.MemcacheSetResponse") - proto.RegisterType((*MemcacheDeleteRequest)(nil), "appengine.MemcacheDeleteRequest") - proto.RegisterType((*MemcacheDeleteRequest_Item)(nil), "appengine.MemcacheDeleteRequest.Item") - proto.RegisterType((*MemcacheDeleteResponse)(nil), "appengine.MemcacheDeleteResponse") - proto.RegisterType((*MemcacheIncrementRequest)(nil), "appengine.MemcacheIncrementRequest") - proto.RegisterType((*MemcacheIncrementResponse)(nil), "appengine.MemcacheIncrementResponse") - proto.RegisterType((*MemcacheBatchIncrementRequest)(nil), "appengine.MemcacheBatchIncrementRequest") - proto.RegisterType((*MemcacheBatchIncrementResponse)(nil), "appengine.MemcacheBatchIncrementResponse") - proto.RegisterType((*MemcacheFlushRequest)(nil), "appengine.MemcacheFlushRequest") - proto.RegisterType((*MemcacheFlushResponse)(nil), "appengine.MemcacheFlushResponse") - proto.RegisterType((*MemcacheStatsRequest)(nil), "appengine.MemcacheStatsRequest") - proto.RegisterType((*MergedNamespaceStats)(nil), "appengine.MergedNamespaceStats") - proto.RegisterType((*MemcacheStatsResponse)(nil), "appengine.MemcacheStatsResponse") - proto.RegisterType((*MemcacheGrabTailRequest)(nil), "appengine.MemcacheGrabTailRequest") - proto.RegisterType((*MemcacheGrabTailResponse)(nil), "appengine.MemcacheGrabTailResponse") - proto.RegisterType((*MemcacheGrabTailResponse_Item)(nil), "appengine.MemcacheGrabTailResponse.Item") -} - -func init() { - proto.RegisterFile("google.golang.org/appengine/internal/memcache/memcache_service.proto", fileDescriptor_memcache_service_e327a14e42649a60) -} - -var fileDescriptor_memcache_service_e327a14e42649a60 = []byte{ - // 1379 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x92, 0xdb, 0xc4, - 0x16, 0x8e, 0x24, 0xff, 0xe9, 0x78, 0x7e, 0x94, 0xce, 0x64, 0xe2, 0x3b, 0xb7, 0x72, 0xe3, 0x52, - 0xee, 0xbd, 0x18, 0x2a, 0x71, 0x82, 0x29, 0x20, 0x99, 0xca, 0x02, 0x8f, 0xad, 0x49, 0x44, 0x66, - 0xec, 0xa9, 0x96, 0x33, 0x50, 0xd9, 0xa8, 0x3a, 0x72, 0x47, 0xa3, 0x1a, 0x59, 0x12, 0x6a, 0x39, - 0x21, 0x4b, 0x8a, 0x15, 0x55, 0xb0, 0xe3, 0x05, 0xd8, 0xb0, 0x63, 0xc5, 0x3b, 0xf0, 0x0c, 0x14, - 0x7b, 0x8a, 0x15, 0xef, 0x40, 0x75, 0x4b, 0xb2, 0x65, 0x8f, 0x67, 0x98, 0x02, 0x76, 0x3a, 0xa7, - 0x4f, 0xab, 0xcf, 0x77, 0xbe, 0xaf, 0x4f, 0x1f, 0xe8, 0xbb, 0x61, 0xe8, 0xfa, 0xb4, 0xed, 0x86, - 0x3e, 0x09, 0xdc, 0x76, 0x18, 0xbb, 0xf7, 0x48, 0x14, 0xd1, 0xc0, 0xf5, 0x02, 0x7a, 0xcf, 0x0b, - 0x12, 0x1a, 0x07, 0xc4, 0xbf, 0x37, 0xa1, 0x13, 0x87, 0x38, 0x27, 0x74, 0xf6, 0x61, 0x33, 0x1a, - 0xbf, 0xf2, 0x1c, 0xda, 0x8e, 0xe2, 0x30, 0x09, 0x91, 0x3a, 0xdb, 0xa3, 0x7f, 0x29, 0xc1, 0xd6, - 0x61, 0x16, 0x65, 0xa5, 0x41, 0x46, 0x1c, 0x87, 0xb1, 0x7e, 0x0a, 0xaa, 0xf8, 0xe8, 0x85, 0x63, - 0x8a, 0x2a, 0x20, 0x0f, 0x9f, 0x6a, 0x57, 0xd0, 0x75, 0xb8, 0xfa, 0x6c, 0x60, 0x1d, 0x19, 0x3d, - 0x73, 0xdf, 0x34, 0xfa, 0xb6, 0x81, 0xf1, 0x10, 0x6b, 0x12, 0x77, 0x0f, 0xba, 0x87, 0x86, 0x75, - 0xd4, 0xed, 0x19, 0xf6, 0x60, 0x38, 0xb2, 0x2d, 0x63, 0xa4, 0xc9, 0xdc, 0x7d, 0x64, 0xe0, 0x43, - 0xd3, 0xb2, 0xcc, 0xe1, 0xc0, 0xee, 0x1b, 0x03, 0xd3, 0xe8, 0x6b, 0x0a, 0xba, 0x0a, 0xeb, 0xe6, - 0xe0, 0xb8, 0x7b, 0x60, 0xf6, 0xed, 0xe3, 0xee, 0xc1, 0x33, 0x43, 0xab, 0xe8, 0x5f, 0xc8, 0x50, - 0xef, 0x46, 0xd1, 0xf0, 0x15, 0x8d, 0x63, 0x6f, 0x4c, 0xd1, 0x75, 0xa8, 0x90, 0x28, 0xb2, 0xbd, - 0x71, 0x43, 0x6a, 0xca, 0x2d, 0x15, 0x97, 0x49, 0x14, 0x99, 0x63, 0xf4, 0x00, 0xb6, 0x83, 0xe9, - 0xc4, 0xce, 0x51, 0xb9, 0xf6, 0x0b, 0xe2, 0x9c, 0xd2, 0x60, 0xcc, 0x1a, 0x72, 0x53, 0x6a, 0x95, - 0xf7, 0xe4, 0x86, 0x84, 0xb7, 0x82, 0xe9, 0x24, 0x07, 0xe4, 0xee, 0x65, 0xeb, 0xe8, 0x2e, 0x68, - 0x9e, 0x1b, 0x84, 0x31, 0xb5, 0xd9, 0x09, 0x89, 0xc7, 0x7e, 0xe8, 0x9c, 0x36, 0x94, 0xa6, 0xd4, - 0xaa, 0x89, 0x3d, 0x9b, 0xe9, 0x9a, 0x95, 0x2f, 0xa1, 0xfb, 0x80, 0x66, 0xa5, 0x8b, 0xc2, 0xd0, - 0xb7, 0x4f, 0xbc, 0x20, 0x69, 0x94, 0x9a, 0x52, 0x4b, 0x15, 0x1b, 0xb4, 0x7c, 0xf5, 0x28, 0x0c, - 0xfd, 0x27, 0x5e, 0x90, 0xa0, 0x8f, 0x60, 0x67, 0x5e, 0x6c, 0xfe, 0x1f, 0x2f, 0x70, 0x6d, 0x96, - 0xc4, 0x24, 0xa1, 0xee, 0x9b, 0x46, 0xb9, 0x29, 0xb5, 0xd6, 0xc4, 0xce, 0x46, 0x1e, 0x65, 0x65, - 0x41, 0x56, 0x16, 0xa3, 0x7f, 0x2b, 0x01, 0xca, 0x13, 0x7f, 0x4c, 0x13, 0x4c, 0x3f, 0x9b, 0x52, - 0x96, 0x20, 0x0d, 0x94, 0x53, 0xfa, 0xa6, 0x21, 0x35, 0x95, 0xd6, 0x1a, 0xe6, 0x9f, 0xe8, 0x16, - 0x40, 0x40, 0x26, 0xd4, 0x66, 0x11, 0x71, 0xa8, 0x40, 0xae, 0xee, 0x5e, 0xc1, 0x2a, 0xf7, 0x59, - 0xdc, 0x85, 0x6e, 0x40, 0xf5, 0x65, 0x18, 0xdb, 0x0e, 0x61, 0x22, 0xe5, 0x1a, 0xae, 0xbc, 0x0c, - 0xe3, 0x1e, 0x61, 0xa8, 0x03, 0xb5, 0x30, 0x2b, 0xb1, 0x48, 0xa9, 0xde, 0xd9, 0x6e, 0xcf, 0xa4, - 0xd0, 0x2e, 0x10, 0x80, 0x67, 0x71, 0xfa, 0x2f, 0x12, 0x5c, 0x5b, 0x48, 0x8b, 0x45, 0x61, 0xc0, - 0x28, 0xfa, 0x10, 0x4a, 0x5e, 0x42, 0x27, 0x22, 0x31, 0xe8, 0xdc, 0x2e, 0xfc, 0x67, 0x45, 0x74, - 0xdb, 0x4c, 0xe8, 0x04, 0x8b, 0x0d, 0x3b, 0x5f, 0x49, 0x50, 0xe2, 0x66, 0x8e, 0x4c, 0x6e, 0xca, - 0x39, 0xb2, 0x2d, 0x28, 0xbf, 0x22, 0xfe, 0x94, 0x36, 0x14, 0xe1, 0x4b, 0x0d, 0xee, 0x7d, 0xe9, - 0x13, 0x37, 0x05, 0x53, 0xc5, 0xa9, 0xc1, 0x25, 0xe2, 0x10, 0xc6, 0x25, 0xc2, 0x91, 0x54, 0x70, - 0xd9, 0x21, 0xcc, 0x1c, 0xa3, 0x3b, 0x80, 0xe8, 0xe7, 0x91, 0x17, 0x53, 0x66, 0x7b, 0x81, 0xcd, - 0xa8, 0x13, 0x72, 0x79, 0x54, 0xb8, 0x3c, 0xb0, 0x96, 0xad, 0x98, 0x81, 0x95, 0xfa, 0xf5, 0x9f, - 0x94, 0x79, 0xcd, 0xad, 0x79, 0xcd, 0x3f, 0x58, 0xc0, 0xa6, 0xaf, 0xc0, 0x36, 0x0f, 0x2e, 0x40, - 0x5b, 0x62, 0xa6, 0x7a, 0x96, 0x99, 0x22, 0x01, 0x70, 0x39, 0x02, 0x76, 0x7e, 0xff, 0x67, 0xea, - 0xf5, 0x14, 0x80, 0xd1, 0xc4, 0x8e, 0x42, 0xdf, 0x73, 0x52, 0x41, 0x6e, 0x74, 0xde, 0xba, 0x18, - 0x99, 0x45, 0x93, 0x23, 0x11, 0xbe, 0xab, 0x58, 0xc6, 0x08, 0xab, 0x2c, 0xb7, 0xd1, 0x3b, 0xb0, - 0x29, 0x6a, 0x49, 0x12, 0x2f, 0x0c, 0xec, 0xc4, 0x9b, 0x50, 0x51, 0xe2, 0xea, 0xae, 0x74, 0x1f, - 0x6f, 0xcc, 0x57, 0x46, 0xde, 0x84, 0x16, 0x88, 0xaa, 0x15, 0x89, 0x2a, 0x88, 0x54, 0x2d, 0x8a, - 0x54, 0x7f, 0x0f, 0xd4, 0xd9, 0xc1, 0xa8, 0x0a, 0xfc, 0x68, 0x4d, 0xe2, 0x1f, 0xdd, 0x7e, 0x5f, - 0x93, 0x51, 0x1d, 0xaa, 0xd8, 0x38, 0x3a, 0xe8, 0xf6, 0x0c, 0x4d, 0xe1, 0xde, 0x5e, 0xd7, 0xd2, - 0x4a, 0xfa, 0xf7, 0x05, 0x95, 0x5a, 0x05, 0x95, 0x66, 0xa8, 0x59, 0x42, 0x92, 0x29, 0x13, 0x7c, - 0x6e, 0x74, 0xee, 0x9c, 0x87, 0x3a, 0xd3, 0xaa, 0x45, 0x13, 0x4b, 0xc4, 0xf3, 0xd6, 0x27, 0x50, - 0xa7, 0xa6, 0xbe, 0x07, 0xeb, 0x0b, 0x6b, 0x08, 0xa0, 0x62, 0x8d, 0x86, 0xd8, 0xe8, 0x6b, 0x12, - 0xda, 0x00, 0x10, 0x9d, 0x2f, 0xb5, 0x65, 0xa4, 0x42, 0x39, 0x6d, 0x8f, 0x0a, 0x0f, 0x33, 0x3e, - 0x35, 0xad, 0x11, 0x4f, 0xf4, 0x57, 0x09, 0xae, 0xe7, 0x87, 0xf6, 0xa9, 0x4f, 0x13, 0x9a, 0x8b, - 0xee, 0xe1, 0x82, 0xe8, 0xfe, 0xb7, 0x22, 0xc9, 0x85, 0xf8, 0xf3, 0x75, 0x57, 0xba, 0x58, 0x77, - 0x97, 0xbc, 0xf8, 0x3b, 0x8f, 0xce, 0x95, 0x9d, 0x0e, 0xf5, 0xb1, 0x48, 0x25, 0x65, 0x5e, 0xc9, - 0x99, 0x87, 0xd4, 0xcb, 0x59, 0xd7, 0xbf, 0x93, 0x60, 0x7b, 0x39, 0xef, 0x8c, 0x93, 0x4f, 0x60, - 0x3d, 0xdb, 0xbe, 0x40, 0x4b, 0xe7, 0x02, 0xc4, 0x19, 0x33, 0xa9, 0x59, 0x20, 0x67, 0x6d, 0x5c, - 0xf0, 0xe8, 0x6d, 0xd0, 0x96, 0x23, 0xb8, 0x5c, 0xfa, 0xc6, 0x81, 0x31, 0x12, 0x1c, 0xad, 0x83, - 0xca, 0x39, 0xda, 0x1f, 0x3e, 0x1b, 0xf4, 0x35, 0x59, 0xff, 0x4d, 0x86, 0x46, 0x7e, 0x92, 0x19, - 0x38, 0x31, 0x9d, 0xd0, 0xe0, 0x6c, 0xdf, 0x95, 0x57, 0xf7, 0xdd, 0xd2, 0xaa, 0xbe, 0x5b, 0x1e, - 0x53, 0x3f, 0x21, 0xa2, 0x27, 0x97, 0x76, 0xa5, 0x77, 0x71, 0x6a, 0xa3, 0x63, 0x50, 0xc7, 0x5e, - 0x4c, 0x1d, 0x7e, 0x27, 0x44, 0xb9, 0x36, 0x3a, 0x77, 0x57, 0xa0, 0x5d, 0xce, 0xa1, 0xdd, 0xcf, - 0x37, 0xed, 0xaa, 0xe6, 0xa0, 0x87, 0x8d, 0x43, 0x63, 0x30, 0xc2, 0xf3, 0x5f, 0xa1, 0xdb, 0xb0, - 0xee, 0x05, 0x5e, 0xe2, 0x11, 0xdf, 0x4e, 0xfb, 0x00, 0xe7, 0xb6, 0x84, 0xd7, 0x32, 0xe7, 0xb1, - 0x68, 0x07, 0x85, 0xa0, 0xb4, 0x2d, 0x88, 0x9b, 0x3a, 0x0b, 0xda, 0x17, 0xdd, 0xa1, 0x28, 0x90, - 0xea, 0x25, 0x5f, 0x86, 0xb7, 0x41, 0x9d, 0x25, 0xc8, 0x4b, 0x3b, 0x4b, 0x31, 0xad, 0x74, 0xdf, - 0xc8, 0x4d, 0x59, 0xff, 0x59, 0x82, 0x7f, 0xad, 0x40, 0x99, 0x09, 0xe2, 0xdf, 0xa0, 0x06, 0xf4, - 0x75, 0x06, 0x41, 0x12, 0x10, 0x6a, 0x01, 0x7d, 0x9d, 0xa6, 0xef, 0x80, 0xe6, 0xe5, 0x3b, 0x72, - 0xc1, 0xc8, 0xa2, 0x84, 0x0f, 0x2e, 0x2e, 0x61, 0xfe, 0xf2, 0xe4, 0x9e, 0x82, 0x6c, 0x36, 0xbd, - 0x45, 0xa7, 0xfe, 0x10, 0xae, 0xad, 0x88, 0xcb, 0xc6, 0x1e, 0x09, 0x6d, 0x42, 0x9d, 0xeb, 0xa6, - 0xf7, 0xa4, 0x3b, 0x78, 0xbc, 0x74, 0xb9, 0xf5, 0x1f, 0x24, 0xb8, 0x99, 0x9f, 0xbe, 0x47, 0x12, - 0xe7, 0xe4, 0x8c, 0x92, 0x16, 0x75, 0x23, 0x9d, 0xd5, 0x4d, 0xfe, 0x94, 0xca, 0x4d, 0xa5, 0x55, - 0x5f, 0xf9, 0x94, 0x2e, 0xff, 0x33, 0xbb, 0xf7, 0x45, 0xd6, 0x94, 0x4b, 0xb2, 0xf6, 0x1c, 0xfe, - 0x73, 0x5e, 0xba, 0x19, 0x1d, 0x0f, 0x0a, 0x8d, 0xa8, 0xde, 0xf9, 0xef, 0x65, 0xaa, 0x9c, 0xe6, - 0xa3, 0x7f, 0x3c, 0x9f, 0x25, 0xf7, 0xfd, 0x29, 0x3b, 0xc9, 0x2b, 0x50, 0xcc, 0x53, 0xba, 0x64, - 0x9e, 0x37, 0xe6, 0x7d, 0x32, 0xfb, 0x57, 0x7a, 0x54, 0xf1, 0x10, 0x4e, 0x15, 0xfb, 0x3b, 0x87, - 0xfc, 0x28, 0xa6, 0xdf, 0xd8, 0xa5, 0xe3, 0x01, 0x99, 0x50, 0x41, 0x90, 0xf8, 0x27, 0x42, 0x50, - 0x3a, 0xf1, 0x12, 0x26, 0xae, 0x7f, 0x09, 0x8b, 0x6f, 0xb4, 0x0d, 0x95, 0x89, 0xc7, 0x18, 0x65, - 0xa2, 0x17, 0x96, 0x70, 0x66, 0x71, 0xf9, 0xbe, 0x78, 0x93, 0x50, 0x5b, 0x6c, 0x50, 0xc4, 0x52, - 0x8d, 0x3b, 0x9e, 0xf0, 0x4d, 0x5b, 0x50, 0xe6, 0xa5, 0xe1, 0x8f, 0x31, 0x5f, 0x48, 0x0d, 0xee, - 0xe5, 0x11, 0xac, 0x51, 0x4e, 0xbd, 0xc2, 0x40, 0xff, 0x87, 0xcd, 0xd0, 0x1f, 0x53, 0x96, 0xd8, - 0x3c, 0xca, 0x26, 0x2e, 0x7f, 0x55, 0xe5, 0x56, 0x15, 0xaf, 0xa7, 0x6e, 0xde, 0x8e, 0xbb, 0x2e, - 0xd5, 0x07, 0xf3, 0xd2, 0x64, 0x15, 0xc8, 0x98, 0x7b, 0x1f, 0xca, 0xfc, 0x86, 0xb0, 0x0c, 0xff, - 0xad, 0x05, 0xea, 0xce, 0xa2, 0xc4, 0x69, 0xb4, 0xfe, 0x8d, 0x04, 0x37, 0x66, 0x43, 0x5b, 0x4c, - 0x5e, 0x8c, 0x88, 0xe7, 0xe7, 0x55, 0xbd, 0x09, 0x20, 0x92, 0x71, 0xc2, 0x69, 0x90, 0x88, 0x72, - 0x94, 0xb1, 0xca, 0x3d, 0x3d, 0xee, 0xf8, 0xf3, 0x59, 0xf4, 0xaf, 0x48, 0xf4, 0x6b, 0x69, 0xde, - 0x97, 0xe7, 0xf9, 0x64, 0x18, 0x1f, 0x2d, 0x3c, 0x93, 0xad, 0x55, 0x73, 0xe7, 0xd2, 0x96, 0xe2, - 0xf0, 0xd9, 0xc9, 0x1e, 0xb5, 0xd9, 0xe4, 0x24, 0xaf, 0x9c, 0x9c, 0x94, 0xc2, 0xe4, 0xb4, 0x07, - 0xcf, 0x6b, 0xf9, 0xd0, 0xfe, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0x76, 0x8b, 0xe6, 0x6b, 0x80, - 0x0d, 0x00, 0x00, +var File_memcache_service_proto protoreflect.FileDescriptor + +var file_memcache_service_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6b, 0x0a, 0x09, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, + 0x00, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x41, 0x4d, 0x45, + 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, + 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, + 0x4e, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x0b, 0x41, 0x70, + 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, + 0x12, 0x38, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x12, 0x6d, 0x65, 0x6d, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x1a, 0x6d, + 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0xb6, 0x01, + 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f, 0x63, + 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61, 0x73, + 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, + 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x65, 0x6b, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, + 0x6f, 0x72, 0x50, 0x65, 0x65, 0x6b, 0x22, 0xa2, 0x01, 0x0a, 0x0e, 0x49, 0x74, 0x65, 0x6d, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x14, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, + 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x22, 0xbf, 0x02, 0x0a, 0x13, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0a, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, + 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0xee, 0x01, 0x0a, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, + 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, + 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, + 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x22, 0xc6, 0x03, + 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, + 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, + 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x1a, 0xed, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x03, 0x53, 0x45, 0x54, 0x52, 0x09, 0x73, 0x65, 0x74, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, + 0x30, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f, + 0x63, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61, + 0x73, 0x22, 0x33, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x07, + 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x07, 0x0a, + 0x03, 0x43, 0x41, 0x53, 0x10, 0x04, 0x22, 0xa6, 0x01, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, + 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, + 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x09, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x42, 0x0a, 0x0d, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, + 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f, + 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22, + 0xe5, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x69, 0x74, 0x65, + 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, + 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x3c, 0x0a, 0x04, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0a, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2e, 0x0a, 0x10, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xe7, 0x02, 0x0a, 0x18, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x05, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x31, 0x52, 0x05, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, + 0x54, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, + 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, + 0x45, 0x4e, 0x54, 0x10, 0x02, 0x22, 0xd8, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x63, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x61, 0x70, 0x70, + 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, + 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, + 0x22, 0xad, 0x01, 0x0a, 0x1d, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, + 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x32, 0x0a, 0x08, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x22, 0x5a, 0x0a, 0x1e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x4a, 0x0a, 0x14, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, + 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb3, 0x01, + 0x0a, 0x14, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x02, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, + 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6f, + 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x06, + 0x20, 0x02, 0x28, 0x07, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, + 0x41, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, + 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x02, 0x28, 0x05, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, + 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x28, + 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x32, + 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, + 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, +} + +var ( + file_memcache_service_proto_rawDescOnce sync.Once + file_memcache_service_proto_rawDescData = file_memcache_service_proto_rawDesc +) + +func file_memcache_service_proto_rawDescGZIP() []byte { + file_memcache_service_proto_rawDescOnce.Do(func() { + file_memcache_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_memcache_service_proto_rawDescData) + }) + return file_memcache_service_proto_rawDescData +} + +var file_memcache_service_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_memcache_service_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_memcache_service_proto_goTypes = []interface{}{ + (MemcacheServiceError_ErrorCode)(0), // 0: appengine.MemcacheServiceError.ErrorCode + (MemcacheSetRequest_SetPolicy)(0), // 1: appengine.MemcacheSetRequest.SetPolicy + (MemcacheSetResponse_SetStatusCode)(0), // 2: appengine.MemcacheSetResponse.SetStatusCode + (MemcacheDeleteResponse_DeleteStatusCode)(0), // 3: appengine.MemcacheDeleteResponse.DeleteStatusCode + (MemcacheIncrementRequest_Direction)(0), // 4: appengine.MemcacheIncrementRequest.Direction + (MemcacheIncrementResponse_IncrementStatusCode)(0), // 5: appengine.MemcacheIncrementResponse.IncrementStatusCode + (*MemcacheServiceError)(nil), // 6: appengine.MemcacheServiceError + (*AppOverride)(nil), // 7: appengine.AppOverride + (*MemcacheGetRequest)(nil), // 8: appengine.MemcacheGetRequest + (*ItemTimestamps)(nil), // 9: appengine.ItemTimestamps + (*MemcacheGetResponse)(nil), // 10: appengine.MemcacheGetResponse + (*MemcacheSetRequest)(nil), // 11: appengine.MemcacheSetRequest + (*MemcacheSetResponse)(nil), // 12: appengine.MemcacheSetResponse + (*MemcacheDeleteRequest)(nil), // 13: appengine.MemcacheDeleteRequest + (*MemcacheDeleteResponse)(nil), // 14: appengine.MemcacheDeleteResponse + (*MemcacheIncrementRequest)(nil), // 15: appengine.MemcacheIncrementRequest + (*MemcacheIncrementResponse)(nil), // 16: appengine.MemcacheIncrementResponse + (*MemcacheBatchIncrementRequest)(nil), // 17: appengine.MemcacheBatchIncrementRequest + (*MemcacheBatchIncrementResponse)(nil), // 18: appengine.MemcacheBatchIncrementResponse + (*MemcacheFlushRequest)(nil), // 19: appengine.MemcacheFlushRequest + (*MemcacheFlushResponse)(nil), // 20: appengine.MemcacheFlushResponse + (*MemcacheStatsRequest)(nil), // 21: appengine.MemcacheStatsRequest + (*MergedNamespaceStats)(nil), // 22: appengine.MergedNamespaceStats + (*MemcacheStatsResponse)(nil), // 23: appengine.MemcacheStatsResponse + (*MemcacheGrabTailRequest)(nil), // 24: appengine.MemcacheGrabTailRequest + (*MemcacheGrabTailResponse)(nil), // 25: appengine.MemcacheGrabTailResponse + (*MemcacheGetResponse_Item)(nil), // 26: appengine.MemcacheGetResponse.Item + (*MemcacheSetRequest_Item)(nil), // 27: appengine.MemcacheSetRequest.Item + (*MemcacheDeleteRequest_Item)(nil), // 28: appengine.MemcacheDeleteRequest.Item + (*MemcacheGrabTailResponse_Item)(nil), // 29: appengine.MemcacheGrabTailResponse.Item +} +var file_memcache_service_proto_depIdxs = []int32{ + 7, // 0: appengine.MemcacheGetRequest.override:type_name -> appengine.AppOverride + 26, // 1: appengine.MemcacheGetResponse.item:type_name -> appengine.MemcacheGetResponse.Item + 27, // 2: appengine.MemcacheSetRequest.item:type_name -> appengine.MemcacheSetRequest.Item + 7, // 3: appengine.MemcacheSetRequest.override:type_name -> appengine.AppOverride + 2, // 4: appengine.MemcacheSetResponse.set_status:type_name -> appengine.MemcacheSetResponse.SetStatusCode + 28, // 5: appengine.MemcacheDeleteRequest.item:type_name -> appengine.MemcacheDeleteRequest.Item + 7, // 6: appengine.MemcacheDeleteRequest.override:type_name -> appengine.AppOverride + 3, // 7: appengine.MemcacheDeleteResponse.delete_status:type_name -> appengine.MemcacheDeleteResponse.DeleteStatusCode + 4, // 8: appengine.MemcacheIncrementRequest.direction:type_name -> appengine.MemcacheIncrementRequest.Direction + 7, // 9: appengine.MemcacheIncrementRequest.override:type_name -> appengine.AppOverride + 5, // 10: appengine.MemcacheIncrementResponse.increment_status:type_name -> appengine.MemcacheIncrementResponse.IncrementStatusCode + 15, // 11: appengine.MemcacheBatchIncrementRequest.item:type_name -> appengine.MemcacheIncrementRequest + 7, // 12: appengine.MemcacheBatchIncrementRequest.override:type_name -> appengine.AppOverride + 16, // 13: appengine.MemcacheBatchIncrementResponse.item:type_name -> appengine.MemcacheIncrementResponse + 7, // 14: appengine.MemcacheFlushRequest.override:type_name -> appengine.AppOverride + 7, // 15: appengine.MemcacheStatsRequest.override:type_name -> appengine.AppOverride + 22, // 16: appengine.MemcacheStatsResponse.stats:type_name -> appengine.MergedNamespaceStats + 7, // 17: appengine.MemcacheGrabTailRequest.override:type_name -> appengine.AppOverride + 29, // 18: appengine.MemcacheGrabTailResponse.item:type_name -> appengine.MemcacheGrabTailResponse.Item + 9, // 19: appengine.MemcacheGetResponse.Item.timestamps:type_name -> appengine.ItemTimestamps + 1, // 20: appengine.MemcacheSetRequest.Item.set_policy:type_name -> appengine.MemcacheSetRequest.SetPolicy + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name +} + +func init() { file_memcache_service_proto_init() } +func file_memcache_service_proto_init() { + if File_memcache_service_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_memcache_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheServiceError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppOverride); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGetRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemTimestamps); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGetResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheSetRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheSetResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheDeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheIncrementRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheIncrementResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheBatchIncrementRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheBatchIncrementResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheFlushRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheFlushResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MergedNamespaceStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGrabTailRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGrabTailResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGetResponse_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheSetRequest_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheDeleteRequest_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheGrabTailResponse_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_memcache_service_proto_rawDesc, + NumEnums: 6, + NumMessages: 24, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_memcache_service_proto_goTypes, + DependencyIndexes: file_memcache_service_proto_depIdxs, + EnumInfos: file_memcache_service_proto_enumTypes, + MessageInfos: file_memcache_service_proto_msgTypes, + }.Build() + File_memcache_service_proto = out.File + file_memcache_service_proto_rawDesc = nil + file_memcache_service_proto_goTypes = nil + file_memcache_service_proto_depIdxs = nil } diff --git a/internal/memcache/memcache_service.proto b/internal/memcache/memcache_service.proto index 5f0edcdc..3802ef93 100644 --- a/internal/memcache/memcache_service.proto +++ b/internal/memcache/memcache_service.proto @@ -27,6 +27,13 @@ message MemcacheGetRequest { optional string name_space = 2 [default = ""]; optional bool for_cas = 4; optional AppOverride override = 5; + optional bool for_peek = 6 [default = false]; +} + +message ItemTimestamps { + optional int64 expiration_time_sec = 1; + optional int64 last_access_time_sec = 2; + optional int64 delete_lock_time_sec = 3; } message MemcacheGetResponse { @@ -36,6 +43,8 @@ message MemcacheGetResponse { optional fixed32 flags = 4; optional fixed64 cas_id = 5; optional int32 expires_in_seconds = 6; + optional ItemTimestamps timestamps = 8; + optional bool is_delete_locked = 9; } } diff --git a/memcache/memcache.go b/memcache/memcache.go index 2d4d911e..81751d70 100644 --- a/memcache/memcache.go +++ b/memcache/memcache.go @@ -81,6 +81,21 @@ type Item struct { // casID is a client-opaque value used for compare-and-swap operations. // Zero means that compare-and-swap is not used. casID uint64 + + // ItemTimestamps are server values only returned when calling Peek and PeekMulti. + // The timestamps are nil when calling Get and GetMulti. + Timestamps ItemTimestamps +} + +// ItemTimestamps are timestamps optionally provided by the server. +// See Peek and PeekMulti. +type ItemTimestamps struct { + // Expiration is related to Item.Expiration but it is a Time (not a Duration), + // provided by the server. It is not meant to be set by the user. + Expiration *time.Time + // LastAccess is the last time the Item was accessed. + LastAccess *time.Time + // The proto also includes delete_lock_time_sec, which is ignored in the Go lib. } const ( @@ -90,14 +105,34 @@ const ( // protoToItem converts a protocol buffer item to a Go struct. func protoToItem(p *pb.MemcacheGetResponse_Item) *Item { + if p.GetIsDeleteLocked() { + // "delete lock" for a duration is not a feature available in the Go lib. + // Such items may exist in memcache though, e.g. created by the Java lib. + // In this case, nil is more appropriate than an item with empty value. + // For a single Get, nil will translate to ErrCacheMiss. + return nil + } return &Item{ Key: string(p.Key), Value: p.Value, Flags: p.GetFlags(), casID: p.GetCasId(), + Timestamps: ItemTimestamps{ + Expiration: timeSecToTime(p.GetTimestamps().GetExpirationTimeSec()), + LastAccess: timeSecToTime(p.GetTimestamps().GetLastAccessTimeSec()), + }, } } +// For convenience, we interpret a 0 unix second timestamp as a nil *Time. +func timeSecToTime(s int64) *time.Time { + if s == 0 { + return nil + } + t := time.Unix(s, 0) + return &t +} + // If err is an appengine.MultiError, return its first element. Otherwise, return err. func singleError(err error) error { if me, ok := err.(appengine.MultiError); ok { @@ -109,7 +144,35 @@ func singleError(err error) error { // Get gets the item for the given key. ErrCacheMiss is returned for a memcache // cache miss. The key must be at most 250 bytes in length. func Get(c context.Context, key string) (*Item, error) { - m, err := GetMulti(c, []string{key}) + cas, peek := true, false + return get(c, key, cas, peek) +} + +// GetMulti is a batch version of Get. The returned map from keys to items may +// have fewer elements than the input slice, due to memcache cache misses. +// Each key must be at most 250 bytes in length. +func GetMulti(c context.Context, key []string) (map[string]*Item, error) { + cas, peek := true, false + return getMulti(c, key, cas, peek) +} + +// Peek gets the item for the given key and additionally populates Item.Timestamps. +// ErrCacheMiss is returned for a memcache cache miss. The key must be at most 250 +// bytes in length. +func Peek(c context.Context, key string) (*Item, error) { + cas, peek := true, true + return get(c, key, cas, peek) +} + +// PeekMulti is a batch version of Peek. It is similar to GetMulti but +// additionally populates Item.Timestamps. +func PeekMulti(c context.Context, key []string) (map[string]*Item, error) { + cas, peek := true, true + return getMulti(c, key, cas, peek) +} + +func get(c context.Context, key string, forCas bool, forPeek bool) (*Item, error) { + m, err := getMulti(c, []string{key}, forCas, forPeek) if err != nil { return nil, err } @@ -119,10 +182,7 @@ func Get(c context.Context, key string) (*Item, error) { return m[key], nil } -// GetMulti is a batch version of Get. The returned map from keys to items may -// have fewer elements than the input slice, due to memcache cache misses. -// Each key must be at most 250 bytes in length. -func GetMulti(c context.Context, key []string) (map[string]*Item, error) { +func getMulti(c context.Context, key []string, forCas bool, forPeek bool) (map[string]*Item, error) { if len(key) == 0 { return nil, nil } @@ -131,8 +191,9 @@ func GetMulti(c context.Context, key []string) (map[string]*Item, error) { keyAsBytes[i] = []byte(k) } req := &pb.MemcacheGetRequest{ - Key: keyAsBytes, - ForCas: proto.Bool(true), + Key: keyAsBytes, + ForCas: proto.Bool(forCas), + ForPeek: proto.Bool(forPeek), } res := &pb.MemcacheGetResponse{} if err := internal.Call(c, "memcache", "Get", req, res); err != nil { @@ -141,7 +202,9 @@ func GetMulti(c context.Context, key []string) (map[string]*Item, error) { m := make(map[string]*Item, len(res.Item)) for _, p := range res.Item { t := protoToItem(p) - m[t.Key] = t + if t != nil { + m[t.Key] = t + } } return m, nil } diff --git a/memcache/memcache_test.go b/memcache/memcache_test.go index 1dc7da47..e09ccf36 100644 --- a/memcache/memcache_test.go +++ b/memcache/memcache_test.go @@ -261,3 +261,52 @@ func TestGetMultiEmpty(t *testing.T) { t.Error("Service was called but should not have been") } } + +func TestPeekRequest(t *testing.T) { + serviceCalled := false + key := "lyric" + value := "Where the buffalo roam" + t1, t2 := int64(1690570000), int64(1690564666) + + c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { + // Test request. + if n := len(req.Key); n != 1 { + t.Errorf("got %d want 1", n) + return nil + } + if k := string(req.Key[0]); k != key { + t.Errorf("got %q want %q", k, key) + } + + // Response + res.Item = []*pb.MemcacheGetResponse_Item{ + { + Key: []byte(key), + Value: []byte(value), + Timestamps: &pb.ItemTimestamps{ + ExpirationTimeSec: &t1, + LastAccessTimeSec: &t2, + }, + }, + } + serviceCalled = true + return nil + }) + + item, err := Peek(c, key) + if !serviceCalled { + t.Error("Service was not called as expected") + } + if err != nil { + t.Errorf("got %v want nil", err) + } + if item == nil || item.Key != key || string(item.Value) != value { + t.Errorf("got %q, %q want {%q,%q}, nil", item, err, key, value) + } + if item.Timestamps.Expiration.Unix() != t1 { + t.Errorf("got %d, want %d", item.Timestamps.Expiration.Unix(), t1) + } + if item.Timestamps.LastAccess.Unix() != t2 { + t.Errorf("got %d, want %d", item.Timestamps.LastAccess.Unix(), t2) + } +} diff --git a/v2/internal/memcache/memcache_service.pb.go b/v2/internal/memcache/memcache_service.pb.go index 870aec33..6df50065 100644 --- a/v2/internal/memcache/memcache_service.pb.go +++ b/v2/internal/memcache/memcache_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.28.1 +// protoc v3.21.8 // source: memcache_service.proto package memcache @@ -144,7 +144,7 @@ func (x *MemcacheSetRequest_SetPolicy) UnmarshalJSON(b []byte) error { // Deprecated: Use MemcacheSetRequest_SetPolicy.Descriptor instead. func (MemcacheSetRequest_SetPolicy) EnumDescriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{4, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{5, 0} } type MemcacheSetResponse_SetStatusCode int32 @@ -206,7 +206,7 @@ func (x *MemcacheSetResponse_SetStatusCode) UnmarshalJSON(b []byte) error { // Deprecated: Use MemcacheSetResponse_SetStatusCode.Descriptor instead. func (MemcacheSetResponse_SetStatusCode) EnumDescriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{5, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{6, 0} } type MemcacheDeleteResponse_DeleteStatusCode int32 @@ -262,7 +262,7 @@ func (x *MemcacheDeleteResponse_DeleteStatusCode) UnmarshalJSON(b []byte) error // Deprecated: Use MemcacheDeleteResponse_DeleteStatusCode.Descriptor instead. func (MemcacheDeleteResponse_DeleteStatusCode) EnumDescriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{7, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{8, 0} } type MemcacheIncrementRequest_Direction int32 @@ -318,7 +318,7 @@ func (x *MemcacheIncrementRequest_Direction) UnmarshalJSON(b []byte) error { // Deprecated: Use MemcacheIncrementRequest_Direction.Descriptor instead. func (MemcacheIncrementRequest_Direction) EnumDescriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{8, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{9, 0} } type MemcacheIncrementResponse_IncrementStatusCode int32 @@ -377,7 +377,7 @@ func (x *MemcacheIncrementResponse_IncrementStatusCode) UnmarshalJSON(b []byte) // Deprecated: Use MemcacheIncrementResponse_IncrementStatusCode.Descriptor instead. func (MemcacheIncrementResponse_IncrementStatusCode) EnumDescriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{9, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{10, 0} } type MemcacheServiceError struct { @@ -514,11 +514,13 @@ type MemcacheGetRequest struct { NameSpace *string `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"` ForCas *bool `protobuf:"varint,4,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"` Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` + ForPeek *bool `protobuf:"varint,6,opt,name=for_peek,json=forPeek,def=0" json:"for_peek,omitempty"` } // Default values for MemcacheGetRequest fields. const ( Default_MemcacheGetRequest_NameSpace = string("") + Default_MemcacheGetRequest_ForPeek = bool(false) ) func (x *MemcacheGetRequest) Reset() { @@ -581,6 +583,76 @@ func (x *MemcacheGetRequest) GetOverride() *AppOverride { return nil } +func (x *MemcacheGetRequest) GetForPeek() bool { + if x != nil && x.ForPeek != nil { + return *x.ForPeek + } + return Default_MemcacheGetRequest_ForPeek +} + +type ItemTimestamps struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExpirationTimeSec *int64 `protobuf:"varint,1,opt,name=expiration_time_sec,json=expirationTimeSec" json:"expiration_time_sec,omitempty"` + LastAccessTimeSec *int64 `protobuf:"varint,2,opt,name=last_access_time_sec,json=lastAccessTimeSec" json:"last_access_time_sec,omitempty"` + DeleteLockTimeSec *int64 `protobuf:"varint,3,opt,name=delete_lock_time_sec,json=deleteLockTimeSec" json:"delete_lock_time_sec,omitempty"` +} + +func (x *ItemTimestamps) Reset() { + *x = ItemTimestamps{} + if protoimpl.UnsafeEnabled { + mi := &file_memcache_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemTimestamps) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemTimestamps) ProtoMessage() {} + +func (x *ItemTimestamps) ProtoReflect() protoreflect.Message { + mi := &file_memcache_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ItemTimestamps.ProtoReflect.Descriptor instead. +func (*ItemTimestamps) Descriptor() ([]byte, []int) { + return file_memcache_service_proto_rawDescGZIP(), []int{3} +} + +func (x *ItemTimestamps) GetExpirationTimeSec() int64 { + if x != nil && x.ExpirationTimeSec != nil { + return *x.ExpirationTimeSec + } + return 0 +} + +func (x *ItemTimestamps) GetLastAccessTimeSec() int64 { + if x != nil && x.LastAccessTimeSec != nil { + return *x.LastAccessTimeSec + } + return 0 +} + +func (x *ItemTimestamps) GetDeleteLockTimeSec() int64 { + if x != nil && x.DeleteLockTimeSec != nil { + return *x.DeleteLockTimeSec + } + return 0 +} + type MemcacheGetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -592,7 +664,7 @@ type MemcacheGetResponse struct { func (x *MemcacheGetResponse) Reset() { *x = MemcacheGetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[3] + mi := &file_memcache_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -605,7 +677,7 @@ func (x *MemcacheGetResponse) String() string { func (*MemcacheGetResponse) ProtoMessage() {} func (x *MemcacheGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[3] + mi := &file_memcache_service_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -618,7 +690,7 @@ func (x *MemcacheGetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheGetResponse.ProtoReflect.Descriptor instead. func (*MemcacheGetResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{3} + return file_memcache_service_proto_rawDescGZIP(), []int{4} } func (x *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_Item { @@ -646,7 +718,7 @@ const ( func (x *MemcacheSetRequest) Reset() { *x = MemcacheSetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[4] + mi := &file_memcache_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -659,7 +731,7 @@ func (x *MemcacheSetRequest) String() string { func (*MemcacheSetRequest) ProtoMessage() {} func (x *MemcacheSetRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[4] + mi := &file_memcache_service_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -672,7 +744,7 @@ func (x *MemcacheSetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheSetRequest.ProtoReflect.Descriptor instead. func (*MemcacheSetRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{4} + return file_memcache_service_proto_rawDescGZIP(), []int{5} } func (x *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_Item { @@ -707,7 +779,7 @@ type MemcacheSetResponse struct { func (x *MemcacheSetResponse) Reset() { *x = MemcacheSetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[5] + mi := &file_memcache_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -720,7 +792,7 @@ func (x *MemcacheSetResponse) String() string { func (*MemcacheSetResponse) ProtoMessage() {} func (x *MemcacheSetResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[5] + mi := &file_memcache_service_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -733,7 +805,7 @@ func (x *MemcacheSetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheSetResponse.ProtoReflect.Descriptor instead. func (*MemcacheSetResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{5} + return file_memcache_service_proto_rawDescGZIP(), []int{6} } func (x *MemcacheSetResponse) GetSetStatus() []MemcacheSetResponse_SetStatusCode { @@ -761,7 +833,7 @@ const ( func (x *MemcacheDeleteRequest) Reset() { *x = MemcacheDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[6] + mi := &file_memcache_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -774,7 +846,7 @@ func (x *MemcacheDeleteRequest) String() string { func (*MemcacheDeleteRequest) ProtoMessage() {} func (x *MemcacheDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[6] + mi := &file_memcache_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -787,7 +859,7 @@ func (x *MemcacheDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheDeleteRequest.ProtoReflect.Descriptor instead. func (*MemcacheDeleteRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{6} + return file_memcache_service_proto_rawDescGZIP(), []int{7} } func (x *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_Item { @@ -822,7 +894,7 @@ type MemcacheDeleteResponse struct { func (x *MemcacheDeleteResponse) Reset() { *x = MemcacheDeleteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[7] + mi := &file_memcache_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -835,7 +907,7 @@ func (x *MemcacheDeleteResponse) String() string { func (*MemcacheDeleteResponse) ProtoMessage() {} func (x *MemcacheDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[7] + mi := &file_memcache_service_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -848,7 +920,7 @@ func (x *MemcacheDeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheDeleteResponse.ProtoReflect.Descriptor instead. func (*MemcacheDeleteResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{7} + return file_memcache_service_proto_rawDescGZIP(), []int{8} } func (x *MemcacheDeleteResponse) GetDeleteStatus() []MemcacheDeleteResponse_DeleteStatusCode { @@ -882,7 +954,7 @@ const ( func (x *MemcacheIncrementRequest) Reset() { *x = MemcacheIncrementRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[8] + mi := &file_memcache_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -895,7 +967,7 @@ func (x *MemcacheIncrementRequest) String() string { func (*MemcacheIncrementRequest) ProtoMessage() {} func (x *MemcacheIncrementRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[8] + mi := &file_memcache_service_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -908,7 +980,7 @@ func (x *MemcacheIncrementRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheIncrementRequest.ProtoReflect.Descriptor instead. func (*MemcacheIncrementRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{8} + return file_memcache_service_proto_rawDescGZIP(), []int{9} } func (x *MemcacheIncrementRequest) GetKey() []byte { @@ -972,7 +1044,7 @@ type MemcacheIncrementResponse struct { func (x *MemcacheIncrementResponse) Reset() { *x = MemcacheIncrementResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[9] + mi := &file_memcache_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -985,7 +1057,7 @@ func (x *MemcacheIncrementResponse) String() string { func (*MemcacheIncrementResponse) ProtoMessage() {} func (x *MemcacheIncrementResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[9] + mi := &file_memcache_service_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -998,7 +1070,7 @@ func (x *MemcacheIncrementResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheIncrementResponse.ProtoReflect.Descriptor instead. func (*MemcacheIncrementResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{9} + return file_memcache_service_proto_rawDescGZIP(), []int{10} } func (x *MemcacheIncrementResponse) GetNewValue() uint64 { @@ -1033,7 +1105,7 @@ const ( func (x *MemcacheBatchIncrementRequest) Reset() { *x = MemcacheBatchIncrementRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[10] + mi := &file_memcache_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1046,7 +1118,7 @@ func (x *MemcacheBatchIncrementRequest) String() string { func (*MemcacheBatchIncrementRequest) ProtoMessage() {} func (x *MemcacheBatchIncrementRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[10] + mi := &file_memcache_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1059,7 +1131,7 @@ func (x *MemcacheBatchIncrementRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheBatchIncrementRequest.ProtoReflect.Descriptor instead. func (*MemcacheBatchIncrementRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{10} + return file_memcache_service_proto_rawDescGZIP(), []int{11} } func (x *MemcacheBatchIncrementRequest) GetNameSpace() string { @@ -1094,7 +1166,7 @@ type MemcacheBatchIncrementResponse struct { func (x *MemcacheBatchIncrementResponse) Reset() { *x = MemcacheBatchIncrementResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[11] + mi := &file_memcache_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1107,7 +1179,7 @@ func (x *MemcacheBatchIncrementResponse) String() string { func (*MemcacheBatchIncrementResponse) ProtoMessage() {} func (x *MemcacheBatchIncrementResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[11] + mi := &file_memcache_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1120,7 +1192,7 @@ func (x *MemcacheBatchIncrementResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheBatchIncrementResponse.ProtoReflect.Descriptor instead. func (*MemcacheBatchIncrementResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{11} + return file_memcache_service_proto_rawDescGZIP(), []int{12} } func (x *MemcacheBatchIncrementResponse) GetItem() []*MemcacheIncrementResponse { @@ -1141,7 +1213,7 @@ type MemcacheFlushRequest struct { func (x *MemcacheFlushRequest) Reset() { *x = MemcacheFlushRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[12] + mi := &file_memcache_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1154,7 +1226,7 @@ func (x *MemcacheFlushRequest) String() string { func (*MemcacheFlushRequest) ProtoMessage() {} func (x *MemcacheFlushRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[12] + mi := &file_memcache_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1167,7 +1239,7 @@ func (x *MemcacheFlushRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheFlushRequest.ProtoReflect.Descriptor instead. func (*MemcacheFlushRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{12} + return file_memcache_service_proto_rawDescGZIP(), []int{13} } func (x *MemcacheFlushRequest) GetOverride() *AppOverride { @@ -1186,7 +1258,7 @@ type MemcacheFlushResponse struct { func (x *MemcacheFlushResponse) Reset() { *x = MemcacheFlushResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[13] + mi := &file_memcache_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1199,7 +1271,7 @@ func (x *MemcacheFlushResponse) String() string { func (*MemcacheFlushResponse) ProtoMessage() {} func (x *MemcacheFlushResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[13] + mi := &file_memcache_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1212,7 +1284,7 @@ func (x *MemcacheFlushResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheFlushResponse.ProtoReflect.Descriptor instead. func (*MemcacheFlushResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{13} + return file_memcache_service_proto_rawDescGZIP(), []int{14} } type MemcacheStatsRequest struct { @@ -1226,7 +1298,7 @@ type MemcacheStatsRequest struct { func (x *MemcacheStatsRequest) Reset() { *x = MemcacheStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[14] + mi := &file_memcache_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +1311,7 @@ func (x *MemcacheStatsRequest) String() string { func (*MemcacheStatsRequest) ProtoMessage() {} func (x *MemcacheStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[14] + mi := &file_memcache_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +1324,7 @@ func (x *MemcacheStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheStatsRequest.ProtoReflect.Descriptor instead. func (*MemcacheStatsRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{14} + return file_memcache_service_proto_rawDescGZIP(), []int{15} } func (x *MemcacheStatsRequest) GetOverride() *AppOverride { @@ -1278,7 +1350,7 @@ type MergedNamespaceStats struct { func (x *MergedNamespaceStats) Reset() { *x = MergedNamespaceStats{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[15] + mi := &file_memcache_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1291,7 +1363,7 @@ func (x *MergedNamespaceStats) String() string { func (*MergedNamespaceStats) ProtoMessage() {} func (x *MergedNamespaceStats) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[15] + mi := &file_memcache_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1304,7 +1376,7 @@ func (x *MergedNamespaceStats) ProtoReflect() protoreflect.Message { // Deprecated: Use MergedNamespaceStats.ProtoReflect.Descriptor instead. func (*MergedNamespaceStats) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{15} + return file_memcache_service_proto_rawDescGZIP(), []int{16} } func (x *MergedNamespaceStats) GetHits() uint64 { @@ -1360,7 +1432,7 @@ type MemcacheStatsResponse struct { func (x *MemcacheStatsResponse) Reset() { *x = MemcacheStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[16] + mi := &file_memcache_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1373,7 +1445,7 @@ func (x *MemcacheStatsResponse) String() string { func (*MemcacheStatsResponse) ProtoMessage() {} func (x *MemcacheStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[16] + mi := &file_memcache_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1386,7 +1458,7 @@ func (x *MemcacheStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheStatsResponse.ProtoReflect.Descriptor instead. func (*MemcacheStatsResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{16} + return file_memcache_service_proto_rawDescGZIP(), []int{17} } func (x *MemcacheStatsResponse) GetStats() *MergedNamespaceStats { @@ -1414,7 +1486,7 @@ const ( func (x *MemcacheGrabTailRequest) Reset() { *x = MemcacheGrabTailRequest{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[17] + mi := &file_memcache_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1427,7 +1499,7 @@ func (x *MemcacheGrabTailRequest) String() string { func (*MemcacheGrabTailRequest) ProtoMessage() {} func (x *MemcacheGrabTailRequest) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[17] + mi := &file_memcache_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1440,7 +1512,7 @@ func (x *MemcacheGrabTailRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheGrabTailRequest.ProtoReflect.Descriptor instead. func (*MemcacheGrabTailRequest) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{17} + return file_memcache_service_proto_rawDescGZIP(), []int{18} } func (x *MemcacheGrabTailRequest) GetItemCount() int32 { @@ -1475,7 +1547,7 @@ type MemcacheGrabTailResponse struct { func (x *MemcacheGrabTailResponse) Reset() { *x = MemcacheGrabTailResponse{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[18] + mi := &file_memcache_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1488,7 +1560,7 @@ func (x *MemcacheGrabTailResponse) String() string { func (*MemcacheGrabTailResponse) ProtoMessage() {} func (x *MemcacheGrabTailResponse) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[18] + mi := &file_memcache_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1501,7 +1573,7 @@ func (x *MemcacheGrabTailResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheGrabTailResponse.ProtoReflect.Descriptor instead. func (*MemcacheGrabTailResponse) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{18} + return file_memcache_service_proto_rawDescGZIP(), []int{19} } func (x *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_Item { @@ -1516,17 +1588,19 @@ type MemcacheGetResponse_Item struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` - CasId *uint64 `protobuf:"fixed64,5,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` - ExpiresInSeconds *int32 `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds" json:"expires_in_seconds,omitempty"` + Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` + Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` + Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` + CasId *uint64 `protobuf:"fixed64,5,opt,name=cas_id,json=casId" json:"cas_id,omitempty"` + ExpiresInSeconds *int32 `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds" json:"expires_in_seconds,omitempty"` + Timestamps *ItemTimestamps `protobuf:"bytes,8,opt,name=timestamps" json:"timestamps,omitempty"` + IsDeleteLocked *bool `protobuf:"varint,9,opt,name=is_delete_locked,json=isDeleteLocked" json:"is_delete_locked,omitempty"` } func (x *MemcacheGetResponse_Item) Reset() { *x = MemcacheGetResponse_Item{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[19] + mi := &file_memcache_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1539,7 +1613,7 @@ func (x *MemcacheGetResponse_Item) String() string { func (*MemcacheGetResponse_Item) ProtoMessage() {} func (x *MemcacheGetResponse_Item) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[19] + mi := &file_memcache_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1552,7 +1626,7 @@ func (x *MemcacheGetResponse_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheGetResponse_Item.ProtoReflect.Descriptor instead. func (*MemcacheGetResponse_Item) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{3, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{4, 0} } func (x *MemcacheGetResponse_Item) GetKey() []byte { @@ -1590,6 +1664,20 @@ func (x *MemcacheGetResponse_Item) GetExpiresInSeconds() int32 { return 0 } +func (x *MemcacheGetResponse_Item) GetTimestamps() *ItemTimestamps { + if x != nil { + return x.Timestamps + } + return nil +} + +func (x *MemcacheGetResponse_Item) GetIsDeleteLocked() bool { + if x != nil && x.IsDeleteLocked != nil { + return *x.IsDeleteLocked + } + return false +} + type MemcacheSetRequest_Item struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1613,7 +1701,7 @@ const ( func (x *MemcacheSetRequest_Item) Reset() { *x = MemcacheSetRequest_Item{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[20] + mi := &file_memcache_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1714,7 @@ func (x *MemcacheSetRequest_Item) String() string { func (*MemcacheSetRequest_Item) ProtoMessage() {} func (x *MemcacheSetRequest_Item) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[20] + mi := &file_memcache_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1727,7 @@ func (x *MemcacheSetRequest_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheSetRequest_Item.ProtoReflect.Descriptor instead. func (*MemcacheSetRequest_Item) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{4, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{5, 0} } func (x *MemcacheSetRequest_Item) GetKey() []byte { @@ -1708,7 +1796,7 @@ const ( func (x *MemcacheDeleteRequest_Item) Reset() { *x = MemcacheDeleteRequest_Item{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[21] + mi := &file_memcache_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1721,7 +1809,7 @@ func (x *MemcacheDeleteRequest_Item) String() string { func (*MemcacheDeleteRequest_Item) ProtoMessage() {} func (x *MemcacheDeleteRequest_Item) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[21] + mi := &file_memcache_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1734,7 +1822,7 @@ func (x *MemcacheDeleteRequest_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheDeleteRequest_Item.ProtoReflect.Descriptor instead. func (*MemcacheDeleteRequest_Item) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{6, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{7, 0} } func (x *MemcacheDeleteRequest_Item) GetKey() []byte { @@ -1763,7 +1851,7 @@ type MemcacheGrabTailResponse_Item struct { func (x *MemcacheGrabTailResponse_Item) Reset() { *x = MemcacheGrabTailResponse_Item{} if protoimpl.UnsafeEnabled { - mi := &file_memcache_service_proto_msgTypes[22] + mi := &file_memcache_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1776,7 +1864,7 @@ func (x *MemcacheGrabTailResponse_Item) String() string { func (*MemcacheGrabTailResponse_Item) ProtoMessage() {} func (x *MemcacheGrabTailResponse_Item) ProtoReflect() protoreflect.Message { - mi := &file_memcache_service_proto_msgTypes[22] + mi := &file_memcache_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1789,7 +1877,7 @@ func (x *MemcacheGrabTailResponse_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MemcacheGrabTailResponse_Item.ProtoReflect.Descriptor instead. func (*MemcacheGrabTailResponse_Item) Descriptor() ([]byte, []int) { - return file_memcache_service_proto_rawDescGZIP(), []int{18, 0} + return file_memcache_service_proto_rawDescGZIP(), []int{19, 0} } func (x *MemcacheGrabTailResponse_Item) GetValue() []byte { @@ -1836,7 +1924,7 @@ var file_memcache_service_proto_rawDesc = []byte{ 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x22, 0x97, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, + 0x22, 0xb9, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, @@ -1845,190 +1933,209 @@ var file_memcache_service_proto_rawDesc = []byte{ 0x43, 0x61, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x13, 0x4d, - 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, - 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x89, - 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xcf, 0x03, 0x0a, 0x12, 0x4d, - 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x39, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, - 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, - 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, - 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, - 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x1a, 0xf0, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x73, - 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, - 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x03, 0x53, 0x45, 0x54, - 0x52, 0x09, 0x73, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x0f, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x17, - 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61, 0x73, 0x22, 0x33, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, - 0x45, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x41, 0x53, 0x10, 0x04, 0x22, 0xa9, 0x01, 0x0a, - 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x42, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22, 0xeb, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, - 0x32, 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, - 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, - 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, - 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x3c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2e, 0x0a, - 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xed, 0x02, - 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, - 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, - 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x31, 0x52, - 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x70, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x09, 0x49, 0x4e, 0x43, - 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0c, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x22, 0xdb, 0x01, - 0x0a, 0x19, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, - 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x66, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x0f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x39, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, - 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, - 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0xb3, 0x01, 0x0a, 0x1d, - 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3a, - 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, - 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, - 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x22, 0x5d, 0x0a, 0x1e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, - 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, - 0x22, 0x4d, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, - 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52, 0x04, - 0x68, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x02, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x62, 0x79, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, - 0x08, 0x62, 0x79, 0x74, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, - 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x02, 0x28, 0x07, 0x52, 0x0d, - 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x67, 0x65, 0x22, 0x51, 0x0a, - 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x22, 0x90, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, - 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, - 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a, + 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x66, 0x6f, + 0x72, 0x5f, 0x70, 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x50, 0x65, 0x65, 0x6b, 0x22, 0xa2, 0x01, 0x0a, + 0x0e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, + 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, + 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, + 0x61, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, + 0x12, 0x2f, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, + 0x63, 0x22, 0xc5, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x69, 0x74, 0x65, + 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0xf1, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, + 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, + 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, + 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, + 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x22, 0xcf, 0x03, 0x0a, 0x12, 0x4d, 0x65, + 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x25, + 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, + 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x08, - 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, - 0x69, 0x64, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3f, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x2b, + 0x69, 0x64, 0x65, 0x1a, 0xf0, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x73, 0x65, + 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, - 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, - 0x6d, 0x1a, 0x32, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x03, 0x53, 0x45, 0x54, 0x52, + 0x09, 0x73, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x0f, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x43, 0x61, 0x73, 0x22, 0x33, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, + 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x41, 0x53, 0x10, 0x04, 0x22, 0xa9, 0x01, 0x0a, 0x13, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x42, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x45, + 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22, 0xeb, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, + 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, + 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, + 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x3c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x22, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2e, 0x0a, 0x10, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xed, 0x02, 0x0a, + 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, + 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x05, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x31, 0x52, 0x05, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x09, 0x49, 0x4e, 0x43, 0x52, + 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0c, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x22, 0x29, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, + 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x22, 0xdb, 0x01, 0x0a, + 0x19, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, + 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, + 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x66, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0f, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x39, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0f, + 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, + 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0xb3, 0x01, 0x0a, 0x1d, 0x4d, + 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3a, 0x0a, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, + 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, + 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x22, 0x5d, 0x0a, 0x1e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, + 0x4d, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x17, + 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x4d, 0x65, 0x72, 0x67, 0x65, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52, 0x04, 0x68, + 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x02, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x79, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x08, + 0x62, 0x79, 0x74, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x02, 0x28, 0x07, 0x52, 0x0d, 0x6f, + 0x6c, 0x64, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x15, + 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, + 0x90, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, + 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, + 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, + 0x09, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, + 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x2b, 0x2e, + 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x1a, 0x32, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, + 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, } var ( @@ -2044,7 +2151,7 @@ func file_memcache_service_proto_rawDescGZIP() []byte { } var file_memcache_service_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_memcache_service_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_memcache_service_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_memcache_service_proto_goTypes = []interface{}{ (MemcacheServiceError_ErrorCode)(0), // 0: appengine.v2.MemcacheServiceError.ErrorCode (MemcacheSetRequest_SetPolicy)(0), // 1: appengine.v2.MemcacheSetRequest.SetPolicy @@ -2055,53 +2162,55 @@ var file_memcache_service_proto_goTypes = []interface{}{ (*MemcacheServiceError)(nil), // 6: appengine.v2.MemcacheServiceError (*AppOverride)(nil), // 7: appengine.v2.AppOverride (*MemcacheGetRequest)(nil), // 8: appengine.v2.MemcacheGetRequest - (*MemcacheGetResponse)(nil), // 9: appengine.v2.MemcacheGetResponse - (*MemcacheSetRequest)(nil), // 10: appengine.v2.MemcacheSetRequest - (*MemcacheSetResponse)(nil), // 11: appengine.v2.MemcacheSetResponse - (*MemcacheDeleteRequest)(nil), // 12: appengine.v2.MemcacheDeleteRequest - (*MemcacheDeleteResponse)(nil), // 13: appengine.v2.MemcacheDeleteResponse - (*MemcacheIncrementRequest)(nil), // 14: appengine.v2.MemcacheIncrementRequest - (*MemcacheIncrementResponse)(nil), // 15: appengine.v2.MemcacheIncrementResponse - (*MemcacheBatchIncrementRequest)(nil), // 16: appengine.v2.MemcacheBatchIncrementRequest - (*MemcacheBatchIncrementResponse)(nil), // 17: appengine.v2.MemcacheBatchIncrementResponse - (*MemcacheFlushRequest)(nil), // 18: appengine.v2.MemcacheFlushRequest - (*MemcacheFlushResponse)(nil), // 19: appengine.v2.MemcacheFlushResponse - (*MemcacheStatsRequest)(nil), // 20: appengine.v2.MemcacheStatsRequest - (*MergedNamespaceStats)(nil), // 21: appengine.v2.MergedNamespaceStats - (*MemcacheStatsResponse)(nil), // 22: appengine.v2.MemcacheStatsResponse - (*MemcacheGrabTailRequest)(nil), // 23: appengine.v2.MemcacheGrabTailRequest - (*MemcacheGrabTailResponse)(nil), // 24: appengine.v2.MemcacheGrabTailResponse - (*MemcacheGetResponse_Item)(nil), // 25: appengine.v2.MemcacheGetResponse.Item - (*MemcacheSetRequest_Item)(nil), // 26: appengine.v2.MemcacheSetRequest.Item - (*MemcacheDeleteRequest_Item)(nil), // 27: appengine.v2.MemcacheDeleteRequest.Item - (*MemcacheGrabTailResponse_Item)(nil), // 28: appengine.v2.MemcacheGrabTailResponse.Item + (*ItemTimestamps)(nil), // 9: appengine.v2.ItemTimestamps + (*MemcacheGetResponse)(nil), // 10: appengine.v2.MemcacheGetResponse + (*MemcacheSetRequest)(nil), // 11: appengine.v2.MemcacheSetRequest + (*MemcacheSetResponse)(nil), // 12: appengine.v2.MemcacheSetResponse + (*MemcacheDeleteRequest)(nil), // 13: appengine.v2.MemcacheDeleteRequest + (*MemcacheDeleteResponse)(nil), // 14: appengine.v2.MemcacheDeleteResponse + (*MemcacheIncrementRequest)(nil), // 15: appengine.v2.MemcacheIncrementRequest + (*MemcacheIncrementResponse)(nil), // 16: appengine.v2.MemcacheIncrementResponse + (*MemcacheBatchIncrementRequest)(nil), // 17: appengine.v2.MemcacheBatchIncrementRequest + (*MemcacheBatchIncrementResponse)(nil), // 18: appengine.v2.MemcacheBatchIncrementResponse + (*MemcacheFlushRequest)(nil), // 19: appengine.v2.MemcacheFlushRequest + (*MemcacheFlushResponse)(nil), // 20: appengine.v2.MemcacheFlushResponse + (*MemcacheStatsRequest)(nil), // 21: appengine.v2.MemcacheStatsRequest + (*MergedNamespaceStats)(nil), // 22: appengine.v2.MergedNamespaceStats + (*MemcacheStatsResponse)(nil), // 23: appengine.v2.MemcacheStatsResponse + (*MemcacheGrabTailRequest)(nil), // 24: appengine.v2.MemcacheGrabTailRequest + (*MemcacheGrabTailResponse)(nil), // 25: appengine.v2.MemcacheGrabTailResponse + (*MemcacheGetResponse_Item)(nil), // 26: appengine.v2.MemcacheGetResponse.Item + (*MemcacheSetRequest_Item)(nil), // 27: appengine.v2.MemcacheSetRequest.Item + (*MemcacheDeleteRequest_Item)(nil), // 28: appengine.v2.MemcacheDeleteRequest.Item + (*MemcacheGrabTailResponse_Item)(nil), // 29: appengine.v2.MemcacheGrabTailResponse.Item } var file_memcache_service_proto_depIdxs = []int32{ 7, // 0: appengine.v2.MemcacheGetRequest.override:type_name -> appengine.v2.AppOverride - 25, // 1: appengine.v2.MemcacheGetResponse.item:type_name -> appengine.v2.MemcacheGetResponse.Item - 26, // 2: appengine.v2.MemcacheSetRequest.item:type_name -> appengine.v2.MemcacheSetRequest.Item + 26, // 1: appengine.v2.MemcacheGetResponse.item:type_name -> appengine.v2.MemcacheGetResponse.Item + 27, // 2: appengine.v2.MemcacheSetRequest.item:type_name -> appengine.v2.MemcacheSetRequest.Item 7, // 3: appengine.v2.MemcacheSetRequest.override:type_name -> appengine.v2.AppOverride 2, // 4: appengine.v2.MemcacheSetResponse.set_status:type_name -> appengine.v2.MemcacheSetResponse.SetStatusCode - 27, // 5: appengine.v2.MemcacheDeleteRequest.item:type_name -> appengine.v2.MemcacheDeleteRequest.Item + 28, // 5: appengine.v2.MemcacheDeleteRequest.item:type_name -> appengine.v2.MemcacheDeleteRequest.Item 7, // 6: appengine.v2.MemcacheDeleteRequest.override:type_name -> appengine.v2.AppOverride 3, // 7: appengine.v2.MemcacheDeleteResponse.delete_status:type_name -> appengine.v2.MemcacheDeleteResponse.DeleteStatusCode 4, // 8: appengine.v2.MemcacheIncrementRequest.direction:type_name -> appengine.v2.MemcacheIncrementRequest.Direction 7, // 9: appengine.v2.MemcacheIncrementRequest.override:type_name -> appengine.v2.AppOverride 5, // 10: appengine.v2.MemcacheIncrementResponse.increment_status:type_name -> appengine.v2.MemcacheIncrementResponse.IncrementStatusCode - 14, // 11: appengine.v2.MemcacheBatchIncrementRequest.item:type_name -> appengine.v2.MemcacheIncrementRequest + 15, // 11: appengine.v2.MemcacheBatchIncrementRequest.item:type_name -> appengine.v2.MemcacheIncrementRequest 7, // 12: appengine.v2.MemcacheBatchIncrementRequest.override:type_name -> appengine.v2.AppOverride - 15, // 13: appengine.v2.MemcacheBatchIncrementResponse.item:type_name -> appengine.v2.MemcacheIncrementResponse + 16, // 13: appengine.v2.MemcacheBatchIncrementResponse.item:type_name -> appengine.v2.MemcacheIncrementResponse 7, // 14: appengine.v2.MemcacheFlushRequest.override:type_name -> appengine.v2.AppOverride 7, // 15: appengine.v2.MemcacheStatsRequest.override:type_name -> appengine.v2.AppOverride - 21, // 16: appengine.v2.MemcacheStatsResponse.stats:type_name -> appengine.v2.MergedNamespaceStats + 22, // 16: appengine.v2.MemcacheStatsResponse.stats:type_name -> appengine.v2.MergedNamespaceStats 7, // 17: appengine.v2.MemcacheGrabTailRequest.override:type_name -> appengine.v2.AppOverride - 28, // 18: appengine.v2.MemcacheGrabTailResponse.item:type_name -> appengine.v2.MemcacheGrabTailResponse.Item - 1, // 19: appengine.v2.MemcacheSetRequest.Item.set_policy:type_name -> appengine.v2.MemcacheSetRequest.SetPolicy - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 29, // 18: appengine.v2.MemcacheGrabTailResponse.item:type_name -> appengine.v2.MemcacheGrabTailResponse.Item + 9, // 19: appengine.v2.MemcacheGetResponse.Item.timestamps:type_name -> appengine.v2.ItemTimestamps + 1, // 20: appengine.v2.MemcacheSetRequest.Item.set_policy:type_name -> appengine.v2.MemcacheSetRequest.SetPolicy + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_memcache_service_proto_init() } @@ -2147,7 +2256,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheGetResponse); i { + switch v := v.(*ItemTimestamps); i { case 0: return &v.state case 1: @@ -2159,7 +2268,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheSetRequest); i { + switch v := v.(*MemcacheGetResponse); i { case 0: return &v.state case 1: @@ -2171,7 +2280,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheSetResponse); i { + switch v := v.(*MemcacheSetRequest); i { case 0: return &v.state case 1: @@ -2183,7 +2292,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheDeleteRequest); i { + switch v := v.(*MemcacheSetResponse); i { case 0: return &v.state case 1: @@ -2195,7 +2304,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheDeleteResponse); i { + switch v := v.(*MemcacheDeleteRequest); i { case 0: return &v.state case 1: @@ -2207,7 +2316,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheIncrementRequest); i { + switch v := v.(*MemcacheDeleteResponse); i { case 0: return &v.state case 1: @@ -2219,7 +2328,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheIncrementResponse); i { + switch v := v.(*MemcacheIncrementRequest); i { case 0: return &v.state case 1: @@ -2231,7 +2340,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheBatchIncrementRequest); i { + switch v := v.(*MemcacheIncrementResponse); i { case 0: return &v.state case 1: @@ -2243,7 +2352,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheBatchIncrementResponse); i { + switch v := v.(*MemcacheBatchIncrementRequest); i { case 0: return &v.state case 1: @@ -2255,7 +2364,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheFlushRequest); i { + switch v := v.(*MemcacheBatchIncrementResponse); i { case 0: return &v.state case 1: @@ -2267,7 +2376,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheFlushResponse); i { + switch v := v.(*MemcacheFlushRequest); i { case 0: return &v.state case 1: @@ -2279,7 +2388,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheStatsRequest); i { + switch v := v.(*MemcacheFlushResponse); i { case 0: return &v.state case 1: @@ -2291,7 +2400,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MergedNamespaceStats); i { + switch v := v.(*MemcacheStatsRequest); i { case 0: return &v.state case 1: @@ -2303,7 +2412,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheStatsResponse); i { + switch v := v.(*MergedNamespaceStats); i { case 0: return &v.state case 1: @@ -2315,7 +2424,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheGrabTailRequest); i { + switch v := v.(*MemcacheStatsResponse); i { case 0: return &v.state case 1: @@ -2327,7 +2436,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheGrabTailResponse); i { + switch v := v.(*MemcacheGrabTailRequest); i { case 0: return &v.state case 1: @@ -2339,7 +2448,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheGetResponse_Item); i { + switch v := v.(*MemcacheGrabTailResponse); i { case 0: return &v.state case 1: @@ -2351,7 +2460,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheSetRequest_Item); i { + switch v := v.(*MemcacheGetResponse_Item); i { case 0: return &v.state case 1: @@ -2363,7 +2472,7 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemcacheDeleteRequest_Item); i { + switch v := v.(*MemcacheSetRequest_Item); i { case 0: return &v.state case 1: @@ -2375,6 +2484,18 @@ func file_memcache_service_proto_init() { } } file_memcache_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemcacheDeleteRequest_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_memcache_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MemcacheGrabTailResponse_Item); i { case 0: return &v.state @@ -2393,7 +2514,7 @@ func file_memcache_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_memcache_service_proto_rawDesc, NumEnums: 6, - NumMessages: 23, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/v2/internal/memcache/memcache_service.proto b/v2/internal/memcache/memcache_service.proto index a27c6d3c..1b0b470b 100644 --- a/v2/internal/memcache/memcache_service.proto +++ b/v2/internal/memcache/memcache_service.proto @@ -27,6 +27,13 @@ message MemcacheGetRequest { optional string name_space = 2 [default = ""]; optional bool for_cas = 4; optional AppOverride override = 5; + optional bool for_peek = 6 [default = false]; +} + +message ItemTimestamps { + optional int64 expiration_time_sec = 1; + optional int64 last_access_time_sec = 2; + optional int64 delete_lock_time_sec = 3; } message MemcacheGetResponse { @@ -36,6 +43,8 @@ message MemcacheGetResponse { optional fixed32 flags = 4; optional fixed64 cas_id = 5; optional int32 expires_in_seconds = 6; + optional ItemTimestamps timestamps = 8; + optional bool is_delete_locked = 9; } } diff --git a/v2/memcache/memcache.go b/v2/memcache/memcache.go index 577f6061..f6ef1686 100644 --- a/v2/memcache/memcache.go +++ b/v2/memcache/memcache.go @@ -81,6 +81,21 @@ type Item struct { // casID is a client-opaque value used for compare-and-swap operations. // Zero means that compare-and-swap is not used. casID uint64 + + // ItemTimestamps are server values only returned when calling Peek and PeekMulti. + // The timestamps are nil when calling Get and GetMulti. + Timestamps ItemTimestamps +} + +// ItemTimestamps are timestamps optionally provided by the server. +// See Peek and PeekMulti. +type ItemTimestamps struct { + // Expiration is related to Item.Expiration but it is a Time (not a Duration), + // provided by the server. It is not meant to be set by the user. + Expiration *time.Time + // LastAccess is the last time the Item was accessed. + LastAccess *time.Time + // The proto also includes delete_lock_time_sec, which is ignored in the Go lib. } const ( @@ -90,14 +105,34 @@ const ( // protoToItem converts a protocol buffer item to a Go struct. func protoToItem(p *pb.MemcacheGetResponse_Item) *Item { + if p.GetIsDeleteLocked() { + // "delete lock" for a duration is not a feature available in the Go lib. + // Such items may exist in memcache though, e.g. created by the Java lib. + // In this case, nil is more appropriate than an item with empty value. + // For a single Get, nil will translate to ErrCacheMiss. + return nil + } return &Item{ Key: string(p.Key), Value: p.Value, Flags: p.GetFlags(), casID: p.GetCasId(), + Timestamps: ItemTimestamps{ + Expiration: timeSecToTime(p.GetTimestamps().GetExpirationTimeSec()), + LastAccess: timeSecToTime(p.GetTimestamps().GetLastAccessTimeSec()), + }, } } +// For convenience, we interpret a 0 unix second timestamp as a nil *Time. +func timeSecToTime(s int64) *time.Time { + if s == 0 { + return nil + } + t := time.Unix(s, 0) + return &t +} + // If err is an appengine.MultiError, return its first element. Otherwise, return err. func singleError(err error) error { if me, ok := err.(appengine.MultiError); ok { @@ -109,7 +144,35 @@ func singleError(err error) error { // Get gets the item for the given key. ErrCacheMiss is returned for a memcache // cache miss. The key must be at most 250 bytes in length. func Get(c context.Context, key string) (*Item, error) { - m, err := GetMulti(c, []string{key}) + cas, peek := true, false + return get(c, key, cas, peek) +} + +// GetMulti is a batch version of Get. The returned map from keys to items may +// have fewer elements than the input slice, due to memcache cache misses. +// Each key must be at most 250 bytes in length. +func GetMulti(c context.Context, key []string) (map[string]*Item, error) { + cas, peek := true, false + return getMulti(c, key, cas, peek) +} + +// Peek gets the item for the given key and additionally populates Item.Timestamps. +// ErrCacheMiss is returned for a memcache cache miss. The key must be at most 250 +// bytes in length. +func Peek(c context.Context, key string) (*Item, error) { + cas, peek := true, true + return get(c, key, cas, peek) +} + +// PeekMulti is a batch version of Peek. It is similar to GetMulti but +// additionally populates Item.Timestamps. +func PeekMulti(c context.Context, key []string) (map[string]*Item, error) { + cas, peek := true, true + return getMulti(c, key, cas, peek) +} + +func get(c context.Context, key string, forCas bool, forPeek bool) (*Item, error) { + m, err := getMulti(c, []string{key}, forCas, forPeek) if err != nil { return nil, err } @@ -119,10 +182,7 @@ func Get(c context.Context, key string) (*Item, error) { return m[key], nil } -// GetMulti is a batch version of Get. The returned map from keys to items may -// have fewer elements than the input slice, due to memcache cache misses. -// Each key must be at most 250 bytes in length. -func GetMulti(c context.Context, key []string) (map[string]*Item, error) { +func getMulti(c context.Context, key []string, forCas bool, forPeek bool) (map[string]*Item, error) { if len(key) == 0 { return nil, nil } @@ -131,8 +191,9 @@ func GetMulti(c context.Context, key []string) (map[string]*Item, error) { keyAsBytes[i] = []byte(k) } req := &pb.MemcacheGetRequest{ - Key: keyAsBytes, - ForCas: proto.Bool(true), + Key: keyAsBytes, + ForCas: proto.Bool(forCas), + ForPeek: proto.Bool(forPeek), } res := &pb.MemcacheGetResponse{} if err := internal.Call(c, "memcache", "Get", req, res); err != nil { @@ -141,7 +202,9 @@ func GetMulti(c context.Context, key []string) (map[string]*Item, error) { m := make(map[string]*Item, len(res.Item)) for _, p := range res.Item { t := protoToItem(p) - m[t.Key] = t + if t != nil { + m[t.Key] = t + } } return m, nil } diff --git a/v2/memcache/memcache_test.go b/v2/memcache/memcache_test.go index 59de0cde..f5d19f19 100644 --- a/v2/memcache/memcache_test.go +++ b/v2/memcache/memcache_test.go @@ -261,3 +261,52 @@ func TestGetMultiEmpty(t *testing.T) { t.Error("Service was called but should not have been") } } + +func TestPeekRequest(t *testing.T) { + serviceCalled := false + key := "lyric" + value := "Where the buffalo roam" + t1, t2 := int64(1690570000), int64(1690564666) + + c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { + // Test request. + if n := len(req.Key); n != 1 { + t.Errorf("got %d want 1", n) + return nil + } + if k := string(req.Key[0]); k != key { + t.Errorf("got %q want %q", k, key) + } + + // Response + res.Item = []*pb.MemcacheGetResponse_Item{ + { + Key: []byte(key), + Value: []byte(value), + Timestamps: &pb.ItemTimestamps{ + ExpirationTimeSec: &t1, + LastAccessTimeSec: &t2, + }, + }, + } + serviceCalled = true + return nil + }) + + item, err := Peek(c, key) + if !serviceCalled { + t.Error("Service was not called as expected") + } + if err != nil { + t.Errorf("got %v want nil", err) + } + if item == nil || item.Key != key || string(item.Value) != value { + t.Errorf("got %q, %q want {%q,%q}, nil", item, err, key, value) + } + if item.Timestamps.Expiration.Unix() != t1 { + t.Errorf("got %d, want %d", item.Timestamps.Expiration.Unix(), t1) + } + if item.Timestamps.LastAccess.Unix() != t2 { + t.Errorf("got %d, want %d", item.Timestamps.LastAccess.Unix(), t2) + } +}