diff --git a/README.md b/README.md index 12fee5c..08ea2e3 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Most of us are game developers, not Kubernetes experts. ## Features -- [x] Open Match compatible Frontend Service (gRPC only) +- [x] Open Match compatible Frontend Service (gRPC, gRPC-Web and [Connect](https://connectrpc.com/docs/protocol/)) - [x] Create/Get/Watch/Delete ticket - [ ] Backfill - [x] Run match functions and propose matches @@ -38,6 +38,11 @@ And **Assigner** assigns a GameServer info to the established matches. The following is a minimal code. See [examples/](./examples) for a more actual example. ```go +import ( + "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" +) + var matchProfile = &pb.MatchProfile{...} func MakeMatches(ctx context.Context, profile *pb.MatchProfile, poolTickets minimatch.PoolTickets) ([]*pb.Match, error) { @@ -81,6 +86,7 @@ import ( "testing" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" ) func TestSimpleMatch(t *testing.T) { diff --git a/api/openmatch/frontend.proto b/api/openmatch/frontend.proto new file mode 100644 index 0000000..acf79d8 --- /dev/null +++ b/api/openmatch/frontend.proto @@ -0,0 +1,64 @@ +syntax = "proto3"; + +package openmatch; + +import "openmatch/messages.proto"; +import "google/protobuf/empty.proto"; + +message CreateTicketRequest { + Ticket ticket = 1; +} + +message DeleteTicketRequest { + string ticket_id = 1; +} + +message GetTicketRequest { + string ticket_id = 1; +} + +message WatchAssignmentsRequest { + string ticket_id = 1; +} + +message WatchAssignmentsResponse { + Assignment assignment = 1; +} + +message AcknowledgeBackfillRequest { + string backfill_id = 1; + Assignment assignment = 2; +} + +message AcknowledgeBackfillResponse { + Backfill backfill = 1; + repeated Ticket tickets = 2; +} + +message CreateBackfillRequest { + Backfill backfill = 1; +} + +message DeleteBackfillRequest { + string backfill_id = 1; +} + +message GetBackfillRequest { + string backfill_id = 1; +} + +message UpdateBackfillRequest { + Backfill backfill = 1; +} + +service FrontendService { + rpc CreateTicket(CreateTicketRequest) returns (Ticket); + rpc DeleteTicket(DeleteTicketRequest) returns (google.protobuf.Empty); + rpc GetTicket(GetTicketRequest) returns (Ticket); + rpc WatchAssignments(WatchAssignmentsRequest) returns (stream WatchAssignmentsResponse); + rpc AcknowledgeBackfill(AcknowledgeBackfillRequest) returns (AcknowledgeBackfillResponse); + rpc CreateBackfill(CreateBackfillRequest) returns (Backfill); + rpc DeleteBackfill(DeleteBackfillRequest) returns (google.protobuf.Empty); + rpc GetBackfill(GetBackfillRequest) returns (Backfill); + rpc UpdateBackfill(UpdateBackfillRequest) returns (Backfill); +} diff --git a/api/openmatch/messages.proto b/api/openmatch/messages.proto new file mode 100644 index 0000000..3a4947d --- /dev/null +++ b/api/openmatch/messages.proto @@ -0,0 +1,92 @@ +syntax = "proto3"; + +package openmatch; + +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; + +message Ticket { + string id = 1; + Assignment assignment = 3; + SearchFields search_fields = 4; + map extensions = 5; + map persistent_field = 6; + google.protobuf.Timestamp create_time = 7; + reserved 2; +} + +message SearchFields { + map double_args = 1; + map string_args = 2; + repeated string tags = 3; +} + +message Assignment { + string connection = 1; + map extensions = 4; + reserved 2, 3; +} + +message DoubleRangeFilter { + string double_arg = 1; + double max = 2; + double min = 3; + enum Exclude { + NONE = 0; + MIN = 1; + MAX = 2; + BOTH = 3; + } + Exclude exclude = 4; +} + +message StringEqualsFilter { + string string_arg = 1; + string value = 2; +} + +message TagPresentFilter { + string tag = 1; +} + +message Pool { + string name = 1; + repeated DoubleRangeFilter double_range_filters = 2; + repeated StringEqualsFilter string_equals_filters = 4; + repeated TagPresentFilter tag_present_filters = 5; + google.protobuf.Timestamp created_before = 6; + google.protobuf.Timestamp created_after = 7; + reserved 3; +} + +message MatchProfile { + string name = 1; + repeated Pool pools = 3; + map extensions = 5; + reserved 2, 4; +} + +message Match { + string match_id = 1; + string match_profile = 2; + string match_function = 3; + repeated Ticket tickets = 4; + map extensions = 7; + Backfill backfill = 8; + bool allocate_gameserver = 9; + reserved 5, 6; +} + +message Backfill { + string id = 1; + SearchFields search_fields = 2; + map extensions = 3; + map persistent_field = 4; + google.protobuf.Timestamp create_time = 5; + int64 generation = 6; +} + +message AssignmentGroup { + repeated string ticket_ids = 1; + Assignment assignment = 2; +} diff --git a/aqua.yaml b/aqua.yaml new file mode 100644 index 0000000..3e2fb2f --- /dev/null +++ b/aqua.yaml @@ -0,0 +1,13 @@ +--- +# aqua - Declarative CLI Version Manager +# https://aquaproj.github.io/ +# checksum: +# enabled: true +# require_checksum: true +# supported_envs: +# - all +registries: +- type: standard + ref: v4.248.0 # renovate: depName=aquaproj/aqua-registry +packages: +- name: bufbuild/buf@v1.46.0 diff --git a/assigner.go b/assigner.go index 47a9be3..88060b2 100644 --- a/assigner.go +++ b/assigner.go @@ -3,7 +3,7 @@ package minimatch import ( "context" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" ) // Assigner assigns a GameServer info to the established matches. diff --git a/backend.go b/backend.go index e21d401..74ecd2c 100644 --- a/backend.go +++ b/backend.go @@ -10,8 +10,8 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" "golang.org/x/sync/errgroup" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" "github.com/castaneai/minimatch/pkg/statestore" ) diff --git a/backend_test.go b/backend_test.go index 59035b5..be7c0cc 100644 --- a/backend_test.go +++ b/backend_test.go @@ -9,8 +9,8 @@ import ( "github.com/bojand/hri" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" "github.com/castaneai/minimatch/pkg/statestore" ) diff --git a/buf.gen.yaml b/buf.gen.yaml new file mode 100644 index 0000000..c6248fe --- /dev/null +++ b/buf.gen.yaml @@ -0,0 +1,16 @@ +version: v2 +managed: + enabled: true + override: + - file_option: go_package_prefix + value: github.com/castaneai/minimatch/gen +plugins: + - remote: buf.build/connectrpc/go:v1.17.0 + out: gen + opt: + - paths=source_relative + # dependencies + - remote: buf.build/protocolbuffers/go:v1.34.2 + out: gen + opt: + - paths=source_relative diff --git a/buf.yaml b/buf.yaml new file mode 100644 index 0000000..3ac0559 --- /dev/null +++ b/buf.yaml @@ -0,0 +1,10 @@ +# For details on buf.yaml configuration, visit https://buf.build/docs/configuration/v2/buf-yaml +version: v2 +lint: + use: + - STANDARD +breaking: + use: + - FILE +modules: + - path: api \ No newline at end of file diff --git a/charts/minimatch-scaled/values.yaml b/charts/minimatch-scaled/values.yaml index c8ea018..4955ef5 100644 --- a/charts/minimatch-scaled/values.yaml +++ b/charts/minimatch-scaled/values.yaml @@ -4,14 +4,14 @@ frontend: deployment: replicas: 1 image: - env: {} + env: [] resources: {} backend: tickRate: "1s" deployment: replicas: 1 image: - env: {} + env: [] resources: {} podMonitor: enabled: false diff --git a/evaluator.go b/evaluator.go index 268483b..e3d9a14 100644 --- a/evaluator.go +++ b/evaluator.go @@ -3,7 +3,7 @@ package minimatch import ( "context" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" ) type Evaluator interface { diff --git a/examples/integration_test/integration_test.go b/examples/integration_test/integration_test.go index 25d7119..beddf1b 100644 --- a/examples/integration_test/integration_test.go +++ b/examples/integration_test/integration_test.go @@ -5,12 +5,14 @@ import ( "log" "testing" + "connectrpc.com/connect" "github.com/bojand/hri" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "open-match.dev/open-match/pkg/pb" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" + "github.com/castaneai/minimatch/gen/openmatch/openmatchconnect" ) var anyProfile = &pb.MatchProfile{ @@ -39,21 +41,21 @@ func TestMatchmaking(t *testing.T) { assert.Equal(t, as1.Connection, as2.Connection) } -func mustCreateTicket(ctx context.Context, t *testing.T, c pb.FrontendServiceClient, ticket *pb.Ticket) *pb.Ticket { +func mustCreateTicket(ctx context.Context, t *testing.T, c openmatchconnect.FrontendServiceClient, ticket *pb.Ticket) *pb.Ticket { t.Helper() - resp, err := c.CreateTicket(ctx, &pb.CreateTicketRequest{Ticket: ticket}) + resp, err := c.CreateTicket(ctx, connect.NewRequest(&pb.CreateTicketRequest{Ticket: ticket})) require.NoError(t, err) - require.NotEmpty(t, resp.Id) - require.NotNil(t, resp.CreateTime) - return resp + require.NotEmpty(t, resp.Msg.Id) + require.NotNil(t, resp.Msg.CreateTime) + return resp.Msg } -func mustAssignment(ctx context.Context, t *testing.T, c pb.FrontendServiceClient, ticketID string) *pb.Assignment { +func mustAssignment(ctx context.Context, t *testing.T, c openmatchconnect.FrontendServiceClient, ticketID string) *pb.Assignment { t.Helper() - resp, err := c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: ticketID}) + resp, err := c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: ticketID})) require.NoError(t, err) - require.NotNil(t, resp.Assignment) - return resp.Assignment + require.NotNil(t, resp.Msg.Assignment) + return resp.Msg.Assignment } func dummyAssign(ctx context.Context, matches []*pb.Match) ([]*pb.AssignmentGroup, error) { diff --git a/examples/simple1vs1/simple1vs1.go b/examples/simple1vs1/simple1vs1.go index 594c592..ada1468 100644 --- a/examples/simple1vs1/simple1vs1.go +++ b/examples/simple1vs1/simple1vs1.go @@ -6,9 +6,9 @@ import ( "time" "github.com/bojand/hri" - "open-match.dev/open-match/pkg/pb" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" ) var matchProfile = &pb.MatchProfile{ diff --git a/filter.go b/filter.go index 5c69009..13ee481 100644 --- a/filter.go +++ b/filter.go @@ -5,7 +5,8 @@ import ( "time" "google.golang.org/protobuf/types/known/timestamppb" - "open-match.dev/open-match/pkg/pb" + + pb "github.com/castaneai/minimatch/gen/openmatch" ) type filteredEntity interface { diff --git a/frontend.go b/frontend.go index 0154ef0..1b0c40f 100644 --- a/frontend.go +++ b/frontend.go @@ -3,19 +3,19 @@ package minimatch import ( "context" "errors" + "fmt" "time" + "connectrpc.com/connect" "github.com/rs/xid" "github.com/sethvargo/go-retry" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" "github.com/castaneai/minimatch/pkg/statestore" ) @@ -67,16 +67,16 @@ func NewFrontendService(store statestore.FrontendStore, opts ...FrontendOption) } } -func (s *FrontendService) CreateTicket(ctx context.Context, req *pb.CreateTicketRequest) (*pb.Ticket, error) { - ticket, ok := proto.Clone(req.Ticket).(*pb.Ticket) +func (s *FrontendService) CreateTicket(ctx context.Context, req *connect.Request[pb.CreateTicketRequest]) (*connect.Response[pb.Ticket], error) { + ticket, ok := proto.Clone(req.Msg.Ticket).(*pb.Ticket) if !ok { - return nil, status.Errorf(codes.Internal, "failed to clone input ticket proto") + return nil, connect.NewError(connect.CodeInternal, errors.New("failed to clone input ticket proto")) } ticket.Id = xid.New().String() ticket.CreateTime = timestamppb.Now() ttlVal, err := anypb.New(wrapperspb.Int64(s.options.ticketTTL.Nanoseconds())) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to create ttl value") + return nil, connect.NewError(connect.CodeInternal, errors.New("failed to create ttl value")) } ticket.PersistentField = map[string]*anypb.Any{ persistentFieldKeyTicketTTL: ttlVal, @@ -84,43 +84,43 @@ func (s *FrontendService) CreateTicket(ctx context.Context, req *pb.CreateTicket if err := s.store.CreateTicket(ctx, ticket, s.options.ticketTTL); err != nil { return nil, err } - return ticket, nil + return connect.NewResponse(ticket), nil } -func (s *FrontendService) DeleteTicket(ctx context.Context, req *pb.DeleteTicketRequest) (*emptypb.Empty, error) { - if req.TicketId == "" { - return nil, status.Errorf(codes.InvalidArgument, "invalid ticket_id") +func (s *FrontendService) DeleteTicket(ctx context.Context, req *connect.Request[pb.DeleteTicketRequest]) (*connect.Response[emptypb.Empty], error) { + if req.Msg.TicketId == "" { + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("invalid ticket_id")) } - if err := s.store.DeleteTicket(ctx, req.TicketId); err != nil { + if err := s.store.DeleteTicket(ctx, req.Msg.TicketId); err != nil { return nil, err } - return &emptypb.Empty{}, nil + return connect.NewResponse(&emptypb.Empty{}), nil } -func (s *FrontendService) GetTicket(ctx context.Context, req *pb.GetTicketRequest) (*pb.Ticket, error) { - if req.TicketId == "" { - return nil, status.Errorf(codes.InvalidArgument, "invalid ticket_id") +func (s *FrontendService) GetTicket(ctx context.Context, req *connect.Request[pb.GetTicketRequest]) (*connect.Response[pb.Ticket], error) { + if req.Msg.TicketId == "" { + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("invalid ticket_id")) } - ticket, err := s.store.GetTicket(ctx, req.TicketId) + ticket, err := s.store.GetTicket(ctx, req.Msg.TicketId) if err != nil { if errors.Is(err, statestore.ErrTicketNotFound) { - return nil, status.Errorf(codes.NotFound, "ticket id: %s not found", req.TicketId) + return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("ticket id: %s not found", req.Msg.TicketId)) } return nil, err } - assignment, err := s.store.GetAssignment(ctx, req.TicketId) + assignment, err := s.store.GetAssignment(ctx, req.Msg.TicketId) if err != nil && !errors.Is(err, statestore.ErrAssignmentNotFound) { return nil, err } if assignment != nil { ticket.Assignment = assignment } - return ticket, nil + return connect.NewResponse(ticket), nil } -func (s *FrontendService) WatchAssignments(req *pb.WatchAssignmentsRequest, stream pb.FrontendService_WatchAssignmentsServer) error { - if req.TicketId == "" { - return status.Errorf(codes.InvalidArgument, "invalid ticket_id") +func (s *FrontendService) WatchAssignments(ctx context.Context, req *connect.Request[pb.WatchAssignmentsRequest], stream *connect.ServerStream[pb.WatchAssignmentsResponse]) error { + if req.Msg.TicketId == "" { + return connect.NewError(connect.CodeInvalidArgument, errors.New("invalid ticket_id")) } onAssignmentChanged := func(as *pb.Assignment) error { @@ -132,8 +132,8 @@ func (s *FrontendService) WatchAssignments(req *pb.WatchAssignmentsRequest, stre var prev *pb.Assignment backoff := newWatchAssignmentBackoff() - if err := retry.Do(stream.Context(), backoff, func(ctx context.Context) error { - assignment, err := s.store.GetAssignment(ctx, req.TicketId) + if err := retry.Do(ctx, backoff, func(ctx context.Context) error { + assignment, err := s.store.GetAssignment(ctx, req.Msg.TicketId) if err != nil { if errors.Is(err, statestore.ErrAssignmentNotFound) { return retry.RetryableError(err) @@ -153,29 +153,24 @@ func (s *FrontendService) WatchAssignments(req *pb.WatchAssignmentsRequest, stre return nil } -func (s *FrontendService) AcknowledgeBackfill(ctx context.Context, request *pb.AcknowledgeBackfillRequest) (*pb.AcknowledgeBackfillResponse, error) { - //TODO implement me - panic("implement me") +func (s *FrontendService) AcknowledgeBackfill(ctx context.Context, request *connect.Request[pb.AcknowledgeBackfillRequest]) (*connect.Response[pb.AcknowledgeBackfillResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("not implemented")) } -func (s *FrontendService) CreateBackfill(ctx context.Context, request *pb.CreateBackfillRequest) (*pb.Backfill, error) { - //TODO implement me - panic("implement me") +func (s *FrontendService) CreateBackfill(ctx context.Context, request *connect.Request[pb.CreateBackfillRequest]) (*connect.Response[pb.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("not implemented")) } -func (s *FrontendService) DeleteBackfill(ctx context.Context, request *pb.DeleteBackfillRequest) (*emptypb.Empty, error) { - //TODO implement me - panic("implement me") +func (s *FrontendService) DeleteBackfill(ctx context.Context, request *connect.Request[pb.DeleteBackfillRequest]) (*connect.Response[emptypb.Empty], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("not implemented")) } -func (s *FrontendService) GetBackfill(ctx context.Context, request *pb.GetBackfillRequest) (*pb.Backfill, error) { - //TODO implement me - panic("implement me") +func (s *FrontendService) GetBackfill(ctx context.Context, request *connect.Request[pb.GetBackfillRequest]) (*connect.Response[pb.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("not implemented")) } -func (s *FrontendService) UpdateBackfill(ctx context.Context, request *pb.UpdateBackfillRequest) (*pb.Backfill, error) { - //TODO implement me - panic("implement me") +func (s *FrontendService) UpdateBackfill(ctx context.Context, request *connect.Request[pb.UpdateBackfillRequest]) (*connect.Response[pb.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("not implemented")) } func newWatchAssignmentBackoff() retry.Backoff { diff --git a/gen/openmatch/frontend.pb.go b/gen/openmatch/frontend.pb.go new file mode 100644 index 0000000..0e4af96 --- /dev/null +++ b/gen/openmatch/frontend.pb.go @@ -0,0 +1,894 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: openmatch/frontend.proto + +package openmatch + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" +) + +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 CreateTicketRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ticket *Ticket `protobuf:"bytes,1,opt,name=ticket,proto3" json:"ticket,omitempty"` +} + +func (x *CreateTicketRequest) Reset() { + *x = CreateTicketRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTicketRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTicketRequest) ProtoMessage() {} + +func (x *CreateTicketRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use CreateTicketRequest.ProtoReflect.Descriptor instead. +func (*CreateTicketRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateTicketRequest) GetTicket() *Ticket { + if x != nil { + return x.Ticket + } + return nil +} + +type DeleteTicketRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId,proto3" json:"ticket_id,omitempty"` +} + +func (x *DeleteTicketRequest) Reset() { + *x = DeleteTicketRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTicketRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTicketRequest) ProtoMessage() {} + +func (x *DeleteTicketRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use DeleteTicketRequest.ProtoReflect.Descriptor instead. +func (*DeleteTicketRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{1} +} + +func (x *DeleteTicketRequest) GetTicketId() string { + if x != nil { + return x.TicketId + } + return "" +} + +type GetTicketRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId,proto3" json:"ticket_id,omitempty"` +} + +func (x *GetTicketRequest) Reset() { + *x = GetTicketRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTicketRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTicketRequest) ProtoMessage() {} + +func (x *GetTicketRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use GetTicketRequest.ProtoReflect.Descriptor instead. +func (*GetTicketRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{2} +} + +func (x *GetTicketRequest) GetTicketId() string { + if x != nil { + return x.TicketId + } + return "" +} + +type WatchAssignmentsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId,proto3" json:"ticket_id,omitempty"` +} + +func (x *WatchAssignmentsRequest) Reset() { + *x = WatchAssignmentsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WatchAssignmentsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WatchAssignmentsRequest) ProtoMessage() {} + +func (x *WatchAssignmentsRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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 WatchAssignmentsRequest.ProtoReflect.Descriptor instead. +func (*WatchAssignmentsRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{3} +} + +func (x *WatchAssignmentsRequest) GetTicketId() string { + if x != nil { + return x.TicketId + } + return "" +} + +type WatchAssignmentsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Assignment *Assignment `protobuf:"bytes,1,opt,name=assignment,proto3" json:"assignment,omitempty"` +} + +func (x *WatchAssignmentsResponse) Reset() { + *x = WatchAssignmentsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WatchAssignmentsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WatchAssignmentsResponse) ProtoMessage() {} + +func (x *WatchAssignmentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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 mi.MessageOf(x) +} + +// Deprecated: Use WatchAssignmentsResponse.ProtoReflect.Descriptor instead. +func (*WatchAssignmentsResponse) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{4} +} + +func (x *WatchAssignmentsResponse) GetAssignment() *Assignment { + if x != nil { + return x.Assignment + } + return nil +} + +type AcknowledgeBackfillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillId string `protobuf:"bytes,1,opt,name=backfill_id,json=backfillId,proto3" json:"backfill_id,omitempty"` + Assignment *Assignment `protobuf:"bytes,2,opt,name=assignment,proto3" json:"assignment,omitempty"` +} + +func (x *AcknowledgeBackfillRequest) Reset() { + *x = AcknowledgeBackfillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcknowledgeBackfillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeBackfillRequest) ProtoMessage() {} + +func (x *AcknowledgeBackfillRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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 mi.MessageOf(x) +} + +// Deprecated: Use AcknowledgeBackfillRequest.ProtoReflect.Descriptor instead. +func (*AcknowledgeBackfillRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{5} +} + +func (x *AcknowledgeBackfillRequest) GetBackfillId() string { + if x != nil { + return x.BackfillId + } + return "" +} + +func (x *AcknowledgeBackfillRequest) GetAssignment() *Assignment { + if x != nil { + return x.Assignment + } + return nil +} + +type AcknowledgeBackfillResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Backfill *Backfill `protobuf:"bytes,1,opt,name=backfill,proto3" json:"backfill,omitempty"` + Tickets []*Ticket `protobuf:"bytes,2,rep,name=tickets,proto3" json:"tickets,omitempty"` +} + +func (x *AcknowledgeBackfillResponse) Reset() { + *x = AcknowledgeBackfillResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcknowledgeBackfillResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeBackfillResponse) ProtoMessage() {} + +func (x *AcknowledgeBackfillResponse) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use AcknowledgeBackfillResponse.ProtoReflect.Descriptor instead. +func (*AcknowledgeBackfillResponse) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{6} +} + +func (x *AcknowledgeBackfillResponse) GetBackfill() *Backfill { + if x != nil { + return x.Backfill + } + return nil +} + +func (x *AcknowledgeBackfillResponse) GetTickets() []*Ticket { + if x != nil { + return x.Tickets + } + return nil +} + +type CreateBackfillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Backfill *Backfill `protobuf:"bytes,1,opt,name=backfill,proto3" json:"backfill,omitempty"` +} + +func (x *CreateBackfillRequest) Reset() { + *x = CreateBackfillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateBackfillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateBackfillRequest) ProtoMessage() {} + +func (x *CreateBackfillRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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 mi.MessageOf(x) +} + +// Deprecated: Use CreateBackfillRequest.ProtoReflect.Descriptor instead. +func (*CreateBackfillRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateBackfillRequest) GetBackfill() *Backfill { + if x != nil { + return x.Backfill + } + return nil +} + +type DeleteBackfillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillId string `protobuf:"bytes,1,opt,name=backfill_id,json=backfillId,proto3" json:"backfill_id,omitempty"` +} + +func (x *DeleteBackfillRequest) Reset() { + *x = DeleteBackfillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteBackfillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBackfillRequest) ProtoMessage() {} + +func (x *DeleteBackfillRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use DeleteBackfillRequest.ProtoReflect.Descriptor instead. +func (*DeleteBackfillRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{8} +} + +func (x *DeleteBackfillRequest) GetBackfillId() string { + if x != nil { + return x.BackfillId + } + return "" +} + +type GetBackfillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillId string `protobuf:"bytes,1,opt,name=backfill_id,json=backfillId,proto3" json:"backfill_id,omitempty"` +} + +func (x *GetBackfillRequest) Reset() { + *x = GetBackfillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBackfillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBackfillRequest) ProtoMessage() {} + +func (x *GetBackfillRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use GetBackfillRequest.ProtoReflect.Descriptor instead. +func (*GetBackfillRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{9} +} + +func (x *GetBackfillRequest) GetBackfillId() string { + if x != nil { + return x.BackfillId + } + return "" +} + +type UpdateBackfillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Backfill *Backfill `protobuf:"bytes,1,opt,name=backfill,proto3" json:"backfill,omitempty"` +} + +func (x *UpdateBackfillRequest) Reset() { + *x = UpdateBackfillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_frontend_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateBackfillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateBackfillRequest) ProtoMessage() {} + +func (x *UpdateBackfillRequest) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_frontend_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) +} + +// Deprecated: Use UpdateBackfillRequest.ProtoReflect.Descriptor instead. +func (*UpdateBackfillRequest) Descriptor() ([]byte, []int) { + return file_openmatch_frontend_proto_rawDescGZIP(), []int{10} +} + +func (x *UpdateBackfillRequest) GetBackfill() *Backfill { + if x != nil { + return x.Backfill + } + return nil +} + +var File_openmatch_frontend_proto protoreflect.FileDescriptor + +var file_openmatch_frontend_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2f, 0x66, 0x72, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x40, 0x0a, 0x13, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, + 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x32, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x18, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x74, + 0x0a, 0x1a, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, + 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x7b, 0x0a, 0x1b, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, + 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x22, 0x48, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, + 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, + 0x6c, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x22, 0x38, 0x0a, 0x15, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x66, + 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, + 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, + 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x15, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x08, 0x62, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x32, 0xbf, 0x05, 0x0a, 0x0f, 0x46, 0x72, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x46, 0x0a, + 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1e, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x5d, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x64, 0x0a, 0x13, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, + 0x12, 0x4a, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, + 0x6c, 0x6c, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x66, + 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x12, + 0x47, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, + 0x6c, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, + 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0d, 0x46, 0x72, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x61, 0x6e, 0x65, 0x61, + 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xa2, 0x02, 0x03, 0x4f, 0x58, 0x58, 0xaa, + 0x02, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xca, 0x02, 0x09, 0x4f, 0x70, + 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xe2, 0x02, 0x15, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_openmatch_frontend_proto_rawDescOnce sync.Once + file_openmatch_frontend_proto_rawDescData = file_openmatch_frontend_proto_rawDesc +) + +func file_openmatch_frontend_proto_rawDescGZIP() []byte { + file_openmatch_frontend_proto_rawDescOnce.Do(func() { + file_openmatch_frontend_proto_rawDescData = protoimpl.X.CompressGZIP(file_openmatch_frontend_proto_rawDescData) + }) + return file_openmatch_frontend_proto_rawDescData +} + +var file_openmatch_frontend_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_openmatch_frontend_proto_goTypes = []any{ + (*CreateTicketRequest)(nil), // 0: openmatch.CreateTicketRequest + (*DeleteTicketRequest)(nil), // 1: openmatch.DeleteTicketRequest + (*GetTicketRequest)(nil), // 2: openmatch.GetTicketRequest + (*WatchAssignmentsRequest)(nil), // 3: openmatch.WatchAssignmentsRequest + (*WatchAssignmentsResponse)(nil), // 4: openmatch.WatchAssignmentsResponse + (*AcknowledgeBackfillRequest)(nil), // 5: openmatch.AcknowledgeBackfillRequest + (*AcknowledgeBackfillResponse)(nil), // 6: openmatch.AcknowledgeBackfillResponse + (*CreateBackfillRequest)(nil), // 7: openmatch.CreateBackfillRequest + (*DeleteBackfillRequest)(nil), // 8: openmatch.DeleteBackfillRequest + (*GetBackfillRequest)(nil), // 9: openmatch.GetBackfillRequest + (*UpdateBackfillRequest)(nil), // 10: openmatch.UpdateBackfillRequest + (*Ticket)(nil), // 11: openmatch.Ticket + (*Assignment)(nil), // 12: openmatch.Assignment + (*Backfill)(nil), // 13: openmatch.Backfill + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty +} +var file_openmatch_frontend_proto_depIdxs = []int32{ + 11, // 0: openmatch.CreateTicketRequest.ticket:type_name -> openmatch.Ticket + 12, // 1: openmatch.WatchAssignmentsResponse.assignment:type_name -> openmatch.Assignment + 12, // 2: openmatch.AcknowledgeBackfillRequest.assignment:type_name -> openmatch.Assignment + 13, // 3: openmatch.AcknowledgeBackfillResponse.backfill:type_name -> openmatch.Backfill + 11, // 4: openmatch.AcknowledgeBackfillResponse.tickets:type_name -> openmatch.Ticket + 13, // 5: openmatch.CreateBackfillRequest.backfill:type_name -> openmatch.Backfill + 13, // 6: openmatch.UpdateBackfillRequest.backfill:type_name -> openmatch.Backfill + 0, // 7: openmatch.FrontendService.CreateTicket:input_type -> openmatch.CreateTicketRequest + 1, // 8: openmatch.FrontendService.DeleteTicket:input_type -> openmatch.DeleteTicketRequest + 2, // 9: openmatch.FrontendService.GetTicket:input_type -> openmatch.GetTicketRequest + 3, // 10: openmatch.FrontendService.WatchAssignments:input_type -> openmatch.WatchAssignmentsRequest + 5, // 11: openmatch.FrontendService.AcknowledgeBackfill:input_type -> openmatch.AcknowledgeBackfillRequest + 7, // 12: openmatch.FrontendService.CreateBackfill:input_type -> openmatch.CreateBackfillRequest + 8, // 13: openmatch.FrontendService.DeleteBackfill:input_type -> openmatch.DeleteBackfillRequest + 9, // 14: openmatch.FrontendService.GetBackfill:input_type -> openmatch.GetBackfillRequest + 10, // 15: openmatch.FrontendService.UpdateBackfill:input_type -> openmatch.UpdateBackfillRequest + 11, // 16: openmatch.FrontendService.CreateTicket:output_type -> openmatch.Ticket + 14, // 17: openmatch.FrontendService.DeleteTicket:output_type -> google.protobuf.Empty + 11, // 18: openmatch.FrontendService.GetTicket:output_type -> openmatch.Ticket + 4, // 19: openmatch.FrontendService.WatchAssignments:output_type -> openmatch.WatchAssignmentsResponse + 6, // 20: openmatch.FrontendService.AcknowledgeBackfill:output_type -> openmatch.AcknowledgeBackfillResponse + 13, // 21: openmatch.FrontendService.CreateBackfill:output_type -> openmatch.Backfill + 14, // 22: openmatch.FrontendService.DeleteBackfill:output_type -> google.protobuf.Empty + 13, // 23: openmatch.FrontendService.GetBackfill:output_type -> openmatch.Backfill + 13, // 24: openmatch.FrontendService.UpdateBackfill:output_type -> openmatch.Backfill + 16, // [16:25] is the sub-list for method output_type + 7, // [7:16] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_openmatch_frontend_proto_init() } +func file_openmatch_frontend_proto_init() { + if File_openmatch_frontend_proto != nil { + return + } + file_openmatch_messages_proto_init() + if !protoimpl.UnsafeEnabled { + file_openmatch_frontend_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*CreateTicketRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*DeleteTicketRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*GetTicketRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*WatchAssignmentsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*WatchAssignmentsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*AcknowledgeBackfillRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*AcknowledgeBackfillResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*CreateBackfillRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*DeleteBackfillRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*GetBackfillRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_frontend_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*UpdateBackfillRequest); 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_openmatch_frontend_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_openmatch_frontend_proto_goTypes, + DependencyIndexes: file_openmatch_frontend_proto_depIdxs, + MessageInfos: file_openmatch_frontend_proto_msgTypes, + }.Build() + File_openmatch_frontend_proto = out.File + file_openmatch_frontend_proto_rawDesc = nil + file_openmatch_frontend_proto_goTypes = nil + file_openmatch_frontend_proto_depIdxs = nil +} diff --git a/gen/openmatch/messages.pb.go b/gen/openmatch/messages.pb.go new file mode 100644 index 0000000..f4b044c --- /dev/null +++ b/gen/openmatch/messages.pb.go @@ -0,0 +1,1291 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: openmatch/messages.proto + +package openmatch + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +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 DoubleRangeFilter_Exclude int32 + +const ( + DoubleRangeFilter_NONE DoubleRangeFilter_Exclude = 0 + DoubleRangeFilter_MIN DoubleRangeFilter_Exclude = 1 + DoubleRangeFilter_MAX DoubleRangeFilter_Exclude = 2 + DoubleRangeFilter_BOTH DoubleRangeFilter_Exclude = 3 +) + +// Enum value maps for DoubleRangeFilter_Exclude. +var ( + DoubleRangeFilter_Exclude_name = map[int32]string{ + 0: "NONE", + 1: "MIN", + 2: "MAX", + 3: "BOTH", + } + DoubleRangeFilter_Exclude_value = map[string]int32{ + "NONE": 0, + "MIN": 1, + "MAX": 2, + "BOTH": 3, + } +) + +func (x DoubleRangeFilter_Exclude) Enum() *DoubleRangeFilter_Exclude { + p := new(DoubleRangeFilter_Exclude) + *p = x + return p +} + +func (x DoubleRangeFilter_Exclude) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DoubleRangeFilter_Exclude) Descriptor() protoreflect.EnumDescriptor { + return file_openmatch_messages_proto_enumTypes[0].Descriptor() +} + +func (DoubleRangeFilter_Exclude) Type() protoreflect.EnumType { + return &file_openmatch_messages_proto_enumTypes[0] +} + +func (x DoubleRangeFilter_Exclude) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DoubleRangeFilter_Exclude.Descriptor instead. +func (DoubleRangeFilter_Exclude) EnumDescriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{3, 0} +} + +type Ticket struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Assignment *Assignment `protobuf:"bytes,3,opt,name=assignment,proto3" json:"assignment,omitempty"` + SearchFields *SearchFields `protobuf:"bytes,4,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + Extensions map[string]*anypb.Any `protobuf:"bytes,5,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PersistentField map[string]*anypb.Any `protobuf:"bytes,6,rep,name=persistent_field,json=persistentField,proto3" json:"persistent_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` +} + +func (x *Ticket) Reset() { + *x = Ticket{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ticket) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ticket) ProtoMessage() {} + +func (x *Ticket) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use Ticket.ProtoReflect.Descriptor instead. +func (*Ticket) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{0} +} + +func (x *Ticket) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Ticket) GetAssignment() *Assignment { + if x != nil { + return x.Assignment + } + return nil +} + +func (x *Ticket) GetSearchFields() *SearchFields { + if x != nil { + return x.SearchFields + } + return nil +} + +func (x *Ticket) GetExtensions() map[string]*anypb.Any { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *Ticket) GetPersistentField() map[string]*anypb.Any { + if x != nil { + return x.PersistentField + } + return nil +} + +func (x *Ticket) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +type SearchFields struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DoubleArgs map[string]float64 `protobuf:"bytes,1,rep,name=double_args,json=doubleArgs,proto3" json:"double_args,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` + StringArgs map[string]string `protobuf:"bytes,2,rep,name=string_args,json=stringArgs,proto3" json:"string_args,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` +} + +func (x *SearchFields) Reset() { + *x = SearchFields{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchFields) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchFields) ProtoMessage() {} + +func (x *SearchFields) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use SearchFields.ProtoReflect.Descriptor instead. +func (*SearchFields) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{1} +} + +func (x *SearchFields) GetDoubleArgs() map[string]float64 { + if x != nil { + return x.DoubleArgs + } + return nil +} + +func (x *SearchFields) GetStringArgs() map[string]string { + if x != nil { + return x.StringArgs + } + return nil +} + +func (x *SearchFields) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +type Assignment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Connection string `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"` + Extensions map[string]*anypb.Any `protobuf:"bytes,4,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *Assignment) Reset() { + *x = Assignment{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Assignment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Assignment) ProtoMessage() {} + +func (x *Assignment) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use Assignment.ProtoReflect.Descriptor instead. +func (*Assignment) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{2} +} + +func (x *Assignment) GetConnection() string { + if x != nil { + return x.Connection + } + return "" +} + +func (x *Assignment) GetExtensions() map[string]*anypb.Any { + if x != nil { + return x.Extensions + } + return nil +} + +type DoubleRangeFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DoubleArg string `protobuf:"bytes,1,opt,name=double_arg,json=doubleArg,proto3" json:"double_arg,omitempty"` + Max float64 `protobuf:"fixed64,2,opt,name=max,proto3" json:"max,omitempty"` + Min float64 `protobuf:"fixed64,3,opt,name=min,proto3" json:"min,omitempty"` + Exclude DoubleRangeFilter_Exclude `protobuf:"varint,4,opt,name=exclude,proto3,enum=openmatch.DoubleRangeFilter_Exclude" json:"exclude,omitempty"` +} + +func (x *DoubleRangeFilter) Reset() { + *x = DoubleRangeFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DoubleRangeFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DoubleRangeFilter) ProtoMessage() {} + +func (x *DoubleRangeFilter) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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 DoubleRangeFilter.ProtoReflect.Descriptor instead. +func (*DoubleRangeFilter) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{3} +} + +func (x *DoubleRangeFilter) GetDoubleArg() string { + if x != nil { + return x.DoubleArg + } + return "" +} + +func (x *DoubleRangeFilter) GetMax() float64 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *DoubleRangeFilter) GetMin() float64 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *DoubleRangeFilter) GetExclude() DoubleRangeFilter_Exclude { + if x != nil { + return x.Exclude + } + return DoubleRangeFilter_NONE +} + +type StringEqualsFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StringArg string `protobuf:"bytes,1,opt,name=string_arg,json=stringArg,proto3" json:"string_arg,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *StringEqualsFilter) Reset() { + *x = StringEqualsFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringEqualsFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringEqualsFilter) ProtoMessage() {} + +func (x *StringEqualsFilter) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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 mi.MessageOf(x) +} + +// Deprecated: Use StringEqualsFilter.ProtoReflect.Descriptor instead. +func (*StringEqualsFilter) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{4} +} + +func (x *StringEqualsFilter) GetStringArg() string { + if x != nil { + return x.StringArg + } + return "" +} + +func (x *StringEqualsFilter) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type TagPresentFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` +} + +func (x *TagPresentFilter) Reset() { + *x = TagPresentFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TagPresentFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TagPresentFilter) ProtoMessage() {} + +func (x *TagPresentFilter) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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 mi.MessageOf(x) +} + +// Deprecated: Use TagPresentFilter.ProtoReflect.Descriptor instead. +func (*TagPresentFilter) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{5} +} + +func (x *TagPresentFilter) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +type Pool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DoubleRangeFilters []*DoubleRangeFilter `protobuf:"bytes,2,rep,name=double_range_filters,json=doubleRangeFilters,proto3" json:"double_range_filters,omitempty"` + StringEqualsFilters []*StringEqualsFilter `protobuf:"bytes,4,rep,name=string_equals_filters,json=stringEqualsFilters,proto3" json:"string_equals_filters,omitempty"` + TagPresentFilters []*TagPresentFilter `protobuf:"bytes,5,rep,name=tag_present_filters,json=tagPresentFilters,proto3" json:"tag_present_filters,omitempty"` + CreatedBefore *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_before,json=createdBefore,proto3" json:"created_before,omitempty"` + CreatedAfter *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_after,json=createdAfter,proto3" json:"created_after,omitempty"` +} + +func (x *Pool) Reset() { + *x = Pool{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Pool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pool) ProtoMessage() {} + +func (x *Pool) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use Pool.ProtoReflect.Descriptor instead. +func (*Pool) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{6} +} + +func (x *Pool) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Pool) GetDoubleRangeFilters() []*DoubleRangeFilter { + if x != nil { + return x.DoubleRangeFilters + } + return nil +} + +func (x *Pool) GetStringEqualsFilters() []*StringEqualsFilter { + if x != nil { + return x.StringEqualsFilters + } + return nil +} + +func (x *Pool) GetTagPresentFilters() []*TagPresentFilter { + if x != nil { + return x.TagPresentFilters + } + return nil +} + +func (x *Pool) GetCreatedBefore() *timestamppb.Timestamp { + if x != nil { + return x.CreatedBefore + } + return nil +} + +func (x *Pool) GetCreatedAfter() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAfter + } + return nil +} + +type MatchProfile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Pools []*Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` + Extensions map[string]*anypb.Any `protobuf:"bytes,5,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *MatchProfile) Reset() { + *x = MatchProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MatchProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchProfile) ProtoMessage() {} + +func (x *MatchProfile) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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 mi.MessageOf(x) +} + +// Deprecated: Use MatchProfile.ProtoReflect.Descriptor instead. +func (*MatchProfile) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{7} +} + +func (x *MatchProfile) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MatchProfile) GetPools() []*Pool { + if x != nil { + return x.Pools + } + return nil +} + +func (x *MatchProfile) GetExtensions() map[string]*anypb.Any { + if x != nil { + return x.Extensions + } + return nil +} + +type Match struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MatchId string `protobuf:"bytes,1,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` + MatchProfile string `protobuf:"bytes,2,opt,name=match_profile,json=matchProfile,proto3" json:"match_profile,omitempty"` + MatchFunction string `protobuf:"bytes,3,opt,name=match_function,json=matchFunction,proto3" json:"match_function,omitempty"` + Tickets []*Ticket `protobuf:"bytes,4,rep,name=tickets,proto3" json:"tickets,omitempty"` + Extensions map[string]*anypb.Any `protobuf:"bytes,7,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Backfill *Backfill `protobuf:"bytes,8,opt,name=backfill,proto3" json:"backfill,omitempty"` + AllocateGameserver bool `protobuf:"varint,9,opt,name=allocate_gameserver,json=allocateGameserver,proto3" json:"allocate_gameserver,omitempty"` +} + +func (x *Match) Reset() { + *x = Match{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Match) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Match) ProtoMessage() {} + +func (x *Match) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use Match.ProtoReflect.Descriptor instead. +func (*Match) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{8} +} + +func (x *Match) GetMatchId() string { + if x != nil { + return x.MatchId + } + return "" +} + +func (x *Match) GetMatchProfile() string { + if x != nil { + return x.MatchProfile + } + return "" +} + +func (x *Match) GetMatchFunction() string { + if x != nil { + return x.MatchFunction + } + return "" +} + +func (x *Match) GetTickets() []*Ticket { + if x != nil { + return x.Tickets + } + return nil +} + +func (x *Match) GetExtensions() map[string]*anypb.Any { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *Match) GetBackfill() *Backfill { + if x != nil { + return x.Backfill + } + return nil +} + +func (x *Match) GetAllocateGameserver() bool { + if x != nil { + return x.AllocateGameserver + } + return false +} + +type Backfill struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SearchFields *SearchFields `protobuf:"bytes,2,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + Extensions map[string]*anypb.Any `protobuf:"bytes,3,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PersistentField map[string]*anypb.Any `protobuf:"bytes,4,rep,name=persistent_field,json=persistentField,proto3" json:"persistent_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + Generation int64 `protobuf:"varint,6,opt,name=generation,proto3" json:"generation,omitempty"` +} + +func (x *Backfill) Reset() { + *x = Backfill{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Backfill) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Backfill) ProtoMessage() {} + +func (x *Backfill) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use Backfill.ProtoReflect.Descriptor instead. +func (*Backfill) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{9} +} + +func (x *Backfill) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Backfill) GetSearchFields() *SearchFields { + if x != nil { + return x.SearchFields + } + return nil +} + +func (x *Backfill) GetExtensions() map[string]*anypb.Any { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *Backfill) GetPersistentField() map[string]*anypb.Any { + if x != nil { + return x.PersistentField + } + return nil +} + +func (x *Backfill) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *Backfill) GetGeneration() int64 { + if x != nil { + return x.Generation + } + return 0 +} + +type AssignmentGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TicketIds []string `protobuf:"bytes,1,rep,name=ticket_ids,json=ticketIds,proto3" json:"ticket_ids,omitempty"` + Assignment *Assignment `protobuf:"bytes,2,opt,name=assignment,proto3" json:"assignment,omitempty"` +} + +func (x *AssignmentGroup) Reset() { + *x = AssignmentGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_openmatch_messages_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AssignmentGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AssignmentGroup) ProtoMessage() {} + +func (x *AssignmentGroup) ProtoReflect() protoreflect.Message { + mi := &file_openmatch_messages_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) +} + +// Deprecated: Use AssignmentGroup.ProtoReflect.Descriptor instead. +func (*AssignmentGroup) Descriptor() ([]byte, []int) { + return file_openmatch_messages_proto_rawDescGZIP(), []int{10} +} + +func (x *AssignmentGroup) GetTicketIds() []string { + if x != nil { + return x.TicketIds + } + return nil +} + +func (x *AssignmentGroup) GetAssignment() *Assignment { + if x != nil { + return x.Assignment + } + return nil +} + +var File_openmatch_messages_proto protoreflect.FileDescriptor + +var file_openmatch_messages_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x95, 0x04, 0x0a, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0a, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, + 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x53, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x14, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xb4, 0x02, 0x0a, 0x0c, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x64, 0x6f, + 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x41, + 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x41, 0x72, 0x67, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x61, + 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x67, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x67, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x45, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xc7, 0x01, 0x0a, 0x11, 0x44, 0x6f, 0x75, 0x62, + 0x6c, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, + 0x0a, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, + 0x12, 0x3e, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x44, 0x6f, + 0x75, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x22, 0x2f, 0x0a, 0x07, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x07, + 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x54, 0x48, 0x10, + 0x03, 0x22, 0x49, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x71, 0x75, 0x61, 0x6c, + 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x61, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x41, 0x72, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x24, 0x0a, 0x10, + 0x54, 0x61, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, + 0x61, 0x67, 0x22, 0x94, 0x03, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x4e, 0x0a, 0x14, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x12, 0x64, 0x6f, 0x75, + 0x62, 0x6c, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x51, 0x0a, 0x15, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x13, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x74, 0x61, 0x67, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, + 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x61, 0x67, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x74, 0x61, + 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x66, + 0x74, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xf3, 0x01, 0x0a, 0x0c, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, + 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, + 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, + 0xa0, 0x03, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x69, + 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, + 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x2f, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, + 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x1a, 0x53, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, + 0x10, 0x07, 0x22, 0xfe, 0x03, 0x0a, 0x08, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3c, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, + 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x43, 0x0a, + 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, + 0x6c, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x14, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, 0x0f, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x63, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x90, 0x01, 0x0a, + 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x0d, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x73, 0x74, + 0x61, 0x6e, 0x65, 0x61, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xa2, 0x02, 0x03, + 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xca, + 0x02, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0xe2, 0x02, 0x15, 0x4f, 0x70, + 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openmatch_messages_proto_rawDescOnce sync.Once + file_openmatch_messages_proto_rawDescData = file_openmatch_messages_proto_rawDesc +) + +func file_openmatch_messages_proto_rawDescGZIP() []byte { + file_openmatch_messages_proto_rawDescOnce.Do(func() { + file_openmatch_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_openmatch_messages_proto_rawDescData) + }) + return file_openmatch_messages_proto_rawDescData +} + +var file_openmatch_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_openmatch_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_openmatch_messages_proto_goTypes = []any{ + (DoubleRangeFilter_Exclude)(0), // 0: openmatch.DoubleRangeFilter.Exclude + (*Ticket)(nil), // 1: openmatch.Ticket + (*SearchFields)(nil), // 2: openmatch.SearchFields + (*Assignment)(nil), // 3: openmatch.Assignment + (*DoubleRangeFilter)(nil), // 4: openmatch.DoubleRangeFilter + (*StringEqualsFilter)(nil), // 5: openmatch.StringEqualsFilter + (*TagPresentFilter)(nil), // 6: openmatch.TagPresentFilter + (*Pool)(nil), // 7: openmatch.Pool + (*MatchProfile)(nil), // 8: openmatch.MatchProfile + (*Match)(nil), // 9: openmatch.Match + (*Backfill)(nil), // 10: openmatch.Backfill + (*AssignmentGroup)(nil), // 11: openmatch.AssignmentGroup + nil, // 12: openmatch.Ticket.ExtensionsEntry + nil, // 13: openmatch.Ticket.PersistentFieldEntry + nil, // 14: openmatch.SearchFields.DoubleArgsEntry + nil, // 15: openmatch.SearchFields.StringArgsEntry + nil, // 16: openmatch.Assignment.ExtensionsEntry + nil, // 17: openmatch.MatchProfile.ExtensionsEntry + nil, // 18: openmatch.Match.ExtensionsEntry + nil, // 19: openmatch.Backfill.ExtensionsEntry + nil, // 20: openmatch.Backfill.PersistentFieldEntry + (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp + (*anypb.Any)(nil), // 22: google.protobuf.Any +} +var file_openmatch_messages_proto_depIdxs = []int32{ + 3, // 0: openmatch.Ticket.assignment:type_name -> openmatch.Assignment + 2, // 1: openmatch.Ticket.search_fields:type_name -> openmatch.SearchFields + 12, // 2: openmatch.Ticket.extensions:type_name -> openmatch.Ticket.ExtensionsEntry + 13, // 3: openmatch.Ticket.persistent_field:type_name -> openmatch.Ticket.PersistentFieldEntry + 21, // 4: openmatch.Ticket.create_time:type_name -> google.protobuf.Timestamp + 14, // 5: openmatch.SearchFields.double_args:type_name -> openmatch.SearchFields.DoubleArgsEntry + 15, // 6: openmatch.SearchFields.string_args:type_name -> openmatch.SearchFields.StringArgsEntry + 16, // 7: openmatch.Assignment.extensions:type_name -> openmatch.Assignment.ExtensionsEntry + 0, // 8: openmatch.DoubleRangeFilter.exclude:type_name -> openmatch.DoubleRangeFilter.Exclude + 4, // 9: openmatch.Pool.double_range_filters:type_name -> openmatch.DoubleRangeFilter + 5, // 10: openmatch.Pool.string_equals_filters:type_name -> openmatch.StringEqualsFilter + 6, // 11: openmatch.Pool.tag_present_filters:type_name -> openmatch.TagPresentFilter + 21, // 12: openmatch.Pool.created_before:type_name -> google.protobuf.Timestamp + 21, // 13: openmatch.Pool.created_after:type_name -> google.protobuf.Timestamp + 7, // 14: openmatch.MatchProfile.pools:type_name -> openmatch.Pool + 17, // 15: openmatch.MatchProfile.extensions:type_name -> openmatch.MatchProfile.ExtensionsEntry + 1, // 16: openmatch.Match.tickets:type_name -> openmatch.Ticket + 18, // 17: openmatch.Match.extensions:type_name -> openmatch.Match.ExtensionsEntry + 10, // 18: openmatch.Match.backfill:type_name -> openmatch.Backfill + 2, // 19: openmatch.Backfill.search_fields:type_name -> openmatch.SearchFields + 19, // 20: openmatch.Backfill.extensions:type_name -> openmatch.Backfill.ExtensionsEntry + 20, // 21: openmatch.Backfill.persistent_field:type_name -> openmatch.Backfill.PersistentFieldEntry + 21, // 22: openmatch.Backfill.create_time:type_name -> google.protobuf.Timestamp + 3, // 23: openmatch.AssignmentGroup.assignment:type_name -> openmatch.Assignment + 22, // 24: openmatch.Ticket.ExtensionsEntry.value:type_name -> google.protobuf.Any + 22, // 25: openmatch.Ticket.PersistentFieldEntry.value:type_name -> google.protobuf.Any + 22, // 26: openmatch.Assignment.ExtensionsEntry.value:type_name -> google.protobuf.Any + 22, // 27: openmatch.MatchProfile.ExtensionsEntry.value:type_name -> google.protobuf.Any + 22, // 28: openmatch.Match.ExtensionsEntry.value:type_name -> google.protobuf.Any + 22, // 29: openmatch.Backfill.ExtensionsEntry.value:type_name -> google.protobuf.Any + 22, // 30: openmatch.Backfill.PersistentFieldEntry.value:type_name -> google.protobuf.Any + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_openmatch_messages_proto_init() } +func file_openmatch_messages_proto_init() { + if File_openmatch_messages_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_openmatch_messages_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Ticket); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*SearchFields); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Assignment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*DoubleRangeFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*StringEqualsFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*TagPresentFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*Pool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*MatchProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*Match); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*Backfill); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openmatch_messages_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*AssignmentGroup); 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_openmatch_messages_proto_rawDesc, + NumEnums: 1, + NumMessages: 20, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openmatch_messages_proto_goTypes, + DependencyIndexes: file_openmatch_messages_proto_depIdxs, + EnumInfos: file_openmatch_messages_proto_enumTypes, + MessageInfos: file_openmatch_messages_proto_msgTypes, + }.Build() + File_openmatch_messages_proto = out.File + file_openmatch_messages_proto_rawDesc = nil + file_openmatch_messages_proto_goTypes = nil + file_openmatch_messages_proto_depIdxs = nil +} diff --git a/gen/openmatch/openmatchconnect/frontend.connect.go b/gen/openmatch/openmatchconnect/frontend.connect.go new file mode 100644 index 0000000..38cec06 --- /dev/null +++ b/gen/openmatch/openmatchconnect/frontend.connect.go @@ -0,0 +1,354 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: openmatch/frontend.proto + +package openmatchconnect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + openmatch "github.com/castaneai/minimatch/gen/openmatch" + emptypb "google.golang.org/protobuf/types/known/emptypb" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // FrontendServiceName is the fully-qualified name of the FrontendService service. + FrontendServiceName = "openmatch.FrontendService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // FrontendServiceCreateTicketProcedure is the fully-qualified name of the FrontendService's + // CreateTicket RPC. + FrontendServiceCreateTicketProcedure = "/openmatch.FrontendService/CreateTicket" + // FrontendServiceDeleteTicketProcedure is the fully-qualified name of the FrontendService's + // DeleteTicket RPC. + FrontendServiceDeleteTicketProcedure = "/openmatch.FrontendService/DeleteTicket" + // FrontendServiceGetTicketProcedure is the fully-qualified name of the FrontendService's GetTicket + // RPC. + FrontendServiceGetTicketProcedure = "/openmatch.FrontendService/GetTicket" + // FrontendServiceWatchAssignmentsProcedure is the fully-qualified name of the FrontendService's + // WatchAssignments RPC. + FrontendServiceWatchAssignmentsProcedure = "/openmatch.FrontendService/WatchAssignments" + // FrontendServiceAcknowledgeBackfillProcedure is the fully-qualified name of the FrontendService's + // AcknowledgeBackfill RPC. + FrontendServiceAcknowledgeBackfillProcedure = "/openmatch.FrontendService/AcknowledgeBackfill" + // FrontendServiceCreateBackfillProcedure is the fully-qualified name of the FrontendService's + // CreateBackfill RPC. + FrontendServiceCreateBackfillProcedure = "/openmatch.FrontendService/CreateBackfill" + // FrontendServiceDeleteBackfillProcedure is the fully-qualified name of the FrontendService's + // DeleteBackfill RPC. + FrontendServiceDeleteBackfillProcedure = "/openmatch.FrontendService/DeleteBackfill" + // FrontendServiceGetBackfillProcedure is the fully-qualified name of the FrontendService's + // GetBackfill RPC. + FrontendServiceGetBackfillProcedure = "/openmatch.FrontendService/GetBackfill" + // FrontendServiceUpdateBackfillProcedure is the fully-qualified name of the FrontendService's + // UpdateBackfill RPC. + FrontendServiceUpdateBackfillProcedure = "/openmatch.FrontendService/UpdateBackfill" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + frontendServiceServiceDescriptor = openmatch.File_openmatch_frontend_proto.Services().ByName("FrontendService") + frontendServiceCreateTicketMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("CreateTicket") + frontendServiceDeleteTicketMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("DeleteTicket") + frontendServiceGetTicketMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("GetTicket") + frontendServiceWatchAssignmentsMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("WatchAssignments") + frontendServiceAcknowledgeBackfillMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("AcknowledgeBackfill") + frontendServiceCreateBackfillMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("CreateBackfill") + frontendServiceDeleteBackfillMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("DeleteBackfill") + frontendServiceGetBackfillMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("GetBackfill") + frontendServiceUpdateBackfillMethodDescriptor = frontendServiceServiceDescriptor.Methods().ByName("UpdateBackfill") +) + +// FrontendServiceClient is a client for the openmatch.FrontendService service. +type FrontendServiceClient interface { + CreateTicket(context.Context, *connect.Request[openmatch.CreateTicketRequest]) (*connect.Response[openmatch.Ticket], error) + DeleteTicket(context.Context, *connect.Request[openmatch.DeleteTicketRequest]) (*connect.Response[emptypb.Empty], error) + GetTicket(context.Context, *connect.Request[openmatch.GetTicketRequest]) (*connect.Response[openmatch.Ticket], error) + WatchAssignments(context.Context, *connect.Request[openmatch.WatchAssignmentsRequest]) (*connect.ServerStreamForClient[openmatch.WatchAssignmentsResponse], error) + AcknowledgeBackfill(context.Context, *connect.Request[openmatch.AcknowledgeBackfillRequest]) (*connect.Response[openmatch.AcknowledgeBackfillResponse], error) + CreateBackfill(context.Context, *connect.Request[openmatch.CreateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) + DeleteBackfill(context.Context, *connect.Request[openmatch.DeleteBackfillRequest]) (*connect.Response[emptypb.Empty], error) + GetBackfill(context.Context, *connect.Request[openmatch.GetBackfillRequest]) (*connect.Response[openmatch.Backfill], error) + UpdateBackfill(context.Context, *connect.Request[openmatch.UpdateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) +} + +// NewFrontendServiceClient constructs a client for the openmatch.FrontendService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewFrontendServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) FrontendServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &frontendServiceClient{ + createTicket: connect.NewClient[openmatch.CreateTicketRequest, openmatch.Ticket]( + httpClient, + baseURL+FrontendServiceCreateTicketProcedure, + connect.WithSchema(frontendServiceCreateTicketMethodDescriptor), + connect.WithClientOptions(opts...), + ), + deleteTicket: connect.NewClient[openmatch.DeleteTicketRequest, emptypb.Empty]( + httpClient, + baseURL+FrontendServiceDeleteTicketProcedure, + connect.WithSchema(frontendServiceDeleteTicketMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getTicket: connect.NewClient[openmatch.GetTicketRequest, openmatch.Ticket]( + httpClient, + baseURL+FrontendServiceGetTicketProcedure, + connect.WithSchema(frontendServiceGetTicketMethodDescriptor), + connect.WithClientOptions(opts...), + ), + watchAssignments: connect.NewClient[openmatch.WatchAssignmentsRequest, openmatch.WatchAssignmentsResponse]( + httpClient, + baseURL+FrontendServiceWatchAssignmentsProcedure, + connect.WithSchema(frontendServiceWatchAssignmentsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + acknowledgeBackfill: connect.NewClient[openmatch.AcknowledgeBackfillRequest, openmatch.AcknowledgeBackfillResponse]( + httpClient, + baseURL+FrontendServiceAcknowledgeBackfillProcedure, + connect.WithSchema(frontendServiceAcknowledgeBackfillMethodDescriptor), + connect.WithClientOptions(opts...), + ), + createBackfill: connect.NewClient[openmatch.CreateBackfillRequest, openmatch.Backfill]( + httpClient, + baseURL+FrontendServiceCreateBackfillProcedure, + connect.WithSchema(frontendServiceCreateBackfillMethodDescriptor), + connect.WithClientOptions(opts...), + ), + deleteBackfill: connect.NewClient[openmatch.DeleteBackfillRequest, emptypb.Empty]( + httpClient, + baseURL+FrontendServiceDeleteBackfillProcedure, + connect.WithSchema(frontendServiceDeleteBackfillMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getBackfill: connect.NewClient[openmatch.GetBackfillRequest, openmatch.Backfill]( + httpClient, + baseURL+FrontendServiceGetBackfillProcedure, + connect.WithSchema(frontendServiceGetBackfillMethodDescriptor), + connect.WithClientOptions(opts...), + ), + updateBackfill: connect.NewClient[openmatch.UpdateBackfillRequest, openmatch.Backfill]( + httpClient, + baseURL+FrontendServiceUpdateBackfillProcedure, + connect.WithSchema(frontendServiceUpdateBackfillMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// frontendServiceClient implements FrontendServiceClient. +type frontendServiceClient struct { + createTicket *connect.Client[openmatch.CreateTicketRequest, openmatch.Ticket] + deleteTicket *connect.Client[openmatch.DeleteTicketRequest, emptypb.Empty] + getTicket *connect.Client[openmatch.GetTicketRequest, openmatch.Ticket] + watchAssignments *connect.Client[openmatch.WatchAssignmentsRequest, openmatch.WatchAssignmentsResponse] + acknowledgeBackfill *connect.Client[openmatch.AcknowledgeBackfillRequest, openmatch.AcknowledgeBackfillResponse] + createBackfill *connect.Client[openmatch.CreateBackfillRequest, openmatch.Backfill] + deleteBackfill *connect.Client[openmatch.DeleteBackfillRequest, emptypb.Empty] + getBackfill *connect.Client[openmatch.GetBackfillRequest, openmatch.Backfill] + updateBackfill *connect.Client[openmatch.UpdateBackfillRequest, openmatch.Backfill] +} + +// CreateTicket calls openmatch.FrontendService.CreateTicket. +func (c *frontendServiceClient) CreateTicket(ctx context.Context, req *connect.Request[openmatch.CreateTicketRequest]) (*connect.Response[openmatch.Ticket], error) { + return c.createTicket.CallUnary(ctx, req) +} + +// DeleteTicket calls openmatch.FrontendService.DeleteTicket. +func (c *frontendServiceClient) DeleteTicket(ctx context.Context, req *connect.Request[openmatch.DeleteTicketRequest]) (*connect.Response[emptypb.Empty], error) { + return c.deleteTicket.CallUnary(ctx, req) +} + +// GetTicket calls openmatch.FrontendService.GetTicket. +func (c *frontendServiceClient) GetTicket(ctx context.Context, req *connect.Request[openmatch.GetTicketRequest]) (*connect.Response[openmatch.Ticket], error) { + return c.getTicket.CallUnary(ctx, req) +} + +// WatchAssignments calls openmatch.FrontendService.WatchAssignments. +func (c *frontendServiceClient) WatchAssignments(ctx context.Context, req *connect.Request[openmatch.WatchAssignmentsRequest]) (*connect.ServerStreamForClient[openmatch.WatchAssignmentsResponse], error) { + return c.watchAssignments.CallServerStream(ctx, req) +} + +// AcknowledgeBackfill calls openmatch.FrontendService.AcknowledgeBackfill. +func (c *frontendServiceClient) AcknowledgeBackfill(ctx context.Context, req *connect.Request[openmatch.AcknowledgeBackfillRequest]) (*connect.Response[openmatch.AcknowledgeBackfillResponse], error) { + return c.acknowledgeBackfill.CallUnary(ctx, req) +} + +// CreateBackfill calls openmatch.FrontendService.CreateBackfill. +func (c *frontendServiceClient) CreateBackfill(ctx context.Context, req *connect.Request[openmatch.CreateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return c.createBackfill.CallUnary(ctx, req) +} + +// DeleteBackfill calls openmatch.FrontendService.DeleteBackfill. +func (c *frontendServiceClient) DeleteBackfill(ctx context.Context, req *connect.Request[openmatch.DeleteBackfillRequest]) (*connect.Response[emptypb.Empty], error) { + return c.deleteBackfill.CallUnary(ctx, req) +} + +// GetBackfill calls openmatch.FrontendService.GetBackfill. +func (c *frontendServiceClient) GetBackfill(ctx context.Context, req *connect.Request[openmatch.GetBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return c.getBackfill.CallUnary(ctx, req) +} + +// UpdateBackfill calls openmatch.FrontendService.UpdateBackfill. +func (c *frontendServiceClient) UpdateBackfill(ctx context.Context, req *connect.Request[openmatch.UpdateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return c.updateBackfill.CallUnary(ctx, req) +} + +// FrontendServiceHandler is an implementation of the openmatch.FrontendService service. +type FrontendServiceHandler interface { + CreateTicket(context.Context, *connect.Request[openmatch.CreateTicketRequest]) (*connect.Response[openmatch.Ticket], error) + DeleteTicket(context.Context, *connect.Request[openmatch.DeleteTicketRequest]) (*connect.Response[emptypb.Empty], error) + GetTicket(context.Context, *connect.Request[openmatch.GetTicketRequest]) (*connect.Response[openmatch.Ticket], error) + WatchAssignments(context.Context, *connect.Request[openmatch.WatchAssignmentsRequest], *connect.ServerStream[openmatch.WatchAssignmentsResponse]) error + AcknowledgeBackfill(context.Context, *connect.Request[openmatch.AcknowledgeBackfillRequest]) (*connect.Response[openmatch.AcknowledgeBackfillResponse], error) + CreateBackfill(context.Context, *connect.Request[openmatch.CreateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) + DeleteBackfill(context.Context, *connect.Request[openmatch.DeleteBackfillRequest]) (*connect.Response[emptypb.Empty], error) + GetBackfill(context.Context, *connect.Request[openmatch.GetBackfillRequest]) (*connect.Response[openmatch.Backfill], error) + UpdateBackfill(context.Context, *connect.Request[openmatch.UpdateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) +} + +// NewFrontendServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewFrontendServiceHandler(svc FrontendServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + frontendServiceCreateTicketHandler := connect.NewUnaryHandler( + FrontendServiceCreateTicketProcedure, + svc.CreateTicket, + connect.WithSchema(frontendServiceCreateTicketMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceDeleteTicketHandler := connect.NewUnaryHandler( + FrontendServiceDeleteTicketProcedure, + svc.DeleteTicket, + connect.WithSchema(frontendServiceDeleteTicketMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceGetTicketHandler := connect.NewUnaryHandler( + FrontendServiceGetTicketProcedure, + svc.GetTicket, + connect.WithSchema(frontendServiceGetTicketMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceWatchAssignmentsHandler := connect.NewServerStreamHandler( + FrontendServiceWatchAssignmentsProcedure, + svc.WatchAssignments, + connect.WithSchema(frontendServiceWatchAssignmentsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceAcknowledgeBackfillHandler := connect.NewUnaryHandler( + FrontendServiceAcknowledgeBackfillProcedure, + svc.AcknowledgeBackfill, + connect.WithSchema(frontendServiceAcknowledgeBackfillMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceCreateBackfillHandler := connect.NewUnaryHandler( + FrontendServiceCreateBackfillProcedure, + svc.CreateBackfill, + connect.WithSchema(frontendServiceCreateBackfillMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceDeleteBackfillHandler := connect.NewUnaryHandler( + FrontendServiceDeleteBackfillProcedure, + svc.DeleteBackfill, + connect.WithSchema(frontendServiceDeleteBackfillMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceGetBackfillHandler := connect.NewUnaryHandler( + FrontendServiceGetBackfillProcedure, + svc.GetBackfill, + connect.WithSchema(frontendServiceGetBackfillMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + frontendServiceUpdateBackfillHandler := connect.NewUnaryHandler( + FrontendServiceUpdateBackfillProcedure, + svc.UpdateBackfill, + connect.WithSchema(frontendServiceUpdateBackfillMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/openmatch.FrontendService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case FrontendServiceCreateTicketProcedure: + frontendServiceCreateTicketHandler.ServeHTTP(w, r) + case FrontendServiceDeleteTicketProcedure: + frontendServiceDeleteTicketHandler.ServeHTTP(w, r) + case FrontendServiceGetTicketProcedure: + frontendServiceGetTicketHandler.ServeHTTP(w, r) + case FrontendServiceWatchAssignmentsProcedure: + frontendServiceWatchAssignmentsHandler.ServeHTTP(w, r) + case FrontendServiceAcknowledgeBackfillProcedure: + frontendServiceAcknowledgeBackfillHandler.ServeHTTP(w, r) + case FrontendServiceCreateBackfillProcedure: + frontendServiceCreateBackfillHandler.ServeHTTP(w, r) + case FrontendServiceDeleteBackfillProcedure: + frontendServiceDeleteBackfillHandler.ServeHTTP(w, r) + case FrontendServiceGetBackfillProcedure: + frontendServiceGetBackfillHandler.ServeHTTP(w, r) + case FrontendServiceUpdateBackfillProcedure: + frontendServiceUpdateBackfillHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedFrontendServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedFrontendServiceHandler struct{} + +func (UnimplementedFrontendServiceHandler) CreateTicket(context.Context, *connect.Request[openmatch.CreateTicketRequest]) (*connect.Response[openmatch.Ticket], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.CreateTicket is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) DeleteTicket(context.Context, *connect.Request[openmatch.DeleteTicketRequest]) (*connect.Response[emptypb.Empty], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.DeleteTicket is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) GetTicket(context.Context, *connect.Request[openmatch.GetTicketRequest]) (*connect.Response[openmatch.Ticket], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.GetTicket is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) WatchAssignments(context.Context, *connect.Request[openmatch.WatchAssignmentsRequest], *connect.ServerStream[openmatch.WatchAssignmentsResponse]) error { + return connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.WatchAssignments is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) AcknowledgeBackfill(context.Context, *connect.Request[openmatch.AcknowledgeBackfillRequest]) (*connect.Response[openmatch.AcknowledgeBackfillResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.AcknowledgeBackfill is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) CreateBackfill(context.Context, *connect.Request[openmatch.CreateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.CreateBackfill is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) DeleteBackfill(context.Context, *connect.Request[openmatch.DeleteBackfillRequest]) (*connect.Response[emptypb.Empty], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.DeleteBackfill is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) GetBackfill(context.Context, *connect.Request[openmatch.GetBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.GetBackfill is not implemented")) +} + +func (UnimplementedFrontendServiceHandler) UpdateBackfill(context.Context, *connect.Request[openmatch.UpdateBackfillRequest]) (*connect.Response[openmatch.Backfill], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("openmatch.FrontendService.UpdateBackfill is not implemented")) +} diff --git a/go.mod b/go.mod index fc82326..c812d24 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/castaneai/minimatch go 1.22 require ( + connectrpc.com/connect v1.17.0 github.com/Code-Hex/go-generics-cache v1.3.1 github.com/alicebob/miniredis/v2 v2.32.1 github.com/bojand/hri v1.1.0 @@ -13,10 +14,9 @@ require ( github.com/stretchr/testify v1.9.0 go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/otel/metric v1.24.0 + golang.org/x/net v0.23.0 golang.org/x/sync v0.6.0 - google.golang.org/grpc v1.62.1 - google.golang.org/protobuf v1.33.0 - open-match.dev/open-match v1.8.1 + google.golang.org/protobuf v1.34.2 ) require ( @@ -24,18 +24,14 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/yuin/gopher-lua v1.1.1 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/exp v0.0.0-20220328175248-053ad81199eb // indirect - golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 5a6ae23..3a246b8 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +connectrpc.com/connect v1.17.0 h1:W0ZqMhtVzn9Zhn2yATuUokDLO5N+gIuBWMOnsQrfmZk= +connectrpc.com/connect v1.17.0/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= github.com/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g= github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= @@ -10,6 +12,7 @@ github.com/bojand/hri v1.1.0/go.mod h1:qwGosuHpNn1S0nyw/mExN0+WZrDf4bQyWjhWh51y3 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -17,28 +20,25 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 h1:dygLcbEBA+t/P7ck6a8AkXv6juQ4cK0RHBoh32jxhHM= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2/go.mod h1:Ap9RLCIJVtgQg1/BBgVEfypOAySvvlcpcVQkSzJCH4Y= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/redis/rueidis v1.0.31 h1:S2NlrMB1N+yB+QEKD4o0lV+5GNIeLo/ZMpN42ONcwg0= github.com/redis/rueidis v1.0.31/go.mod h1:g8nPmgR4C68N3abFiOc/gUOSEKw3Tom6/teYMehg4RE= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= @@ -66,23 +66,10 @@ golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= -google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -open-match.dev/open-match v1.8.1 h1:Tp5fxeUVBugt091zFxMJim6TalE9sFDB2mNGw5zRWQQ= -open-match.dev/open-match v1.8.1/go.mod h1:FjKE1hS+BGFMxVUQvPLqXWMUjjFysYrPESdEfEpDxvM= diff --git a/loadtest/cmd/backend/main.go b/loadtest/cmd/backend/main.go index 81a1527..eb74b57 100644 --- a/loadtest/cmd/backend/main.go +++ b/loadtest/cmd/backend/main.go @@ -23,9 +23,9 @@ import ( "go.opentelemetry.io/otel/exporters/prometheus" "go.opentelemetry.io/otel/metric" metricsdk "go.opentelemetry.io/otel/sdk/metric" - "open-match.dev/open-match/pkg/pb" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" "github.com/castaneai/minimatch/pkg/statestore" ) diff --git a/loadtest/cmd/frontend/main.go b/loadtest/cmd/frontend/main.go index 804779c..41d2f70 100644 --- a/loadtest/cmd/frontend/main.go +++ b/loadtest/cmd/frontend/main.go @@ -2,32 +2,34 @@ package main import ( "context" + "errors" "fmt" "log" - "net" "net/http" "os" "os/signal" "syscall" "time" + "connectrpc.com/connect" + "connectrpc.com/otelconnect" cache "github.com/Code-Hex/go-generics-cache" "github.com/kelseyhightower/envconfig" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/redis/rueidis" "github.com/redis/rueidis/rueidislock" "github.com/redis/rueidis/rueidisotel" - "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/exporters/prometheus" "go.opentelemetry.io/otel/sdk/metric" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" "golang.org/x/sync/errgroup" - "google.golang.org/grpc" - "google.golang.org/grpc/keepalive" - "open-match.dev/open-match/pkg/pb" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" + "github.com/castaneai/minimatch/gen/openmatch/openmatchconnect" "github.com/castaneai/minimatch/pkg/statestore" ) @@ -58,22 +60,17 @@ func main() { store := statestore.NewFrontendStoreWithTicketCache(redisStore, ticketCache, statestore.WithTicketCacheTTL(conf.TicketCacheTTL)) - serverOpts := []grpc.ServerOption{ - grpc.KeepaliveParams(keepalive.ServerParameters{ - MaxConnectionIdle: 3 * time.Second, - Time: 1 * time.Second, - Timeout: 5 * time.Second, - }), - grpc.StatsHandler(otelgrpc.NewServerHandler()), + otelInterceptor, err := otelconnect.NewInterceptor(otelconnect.WithoutServerPeerAttributes()) + if err != nil { + log.Fatalf("failed to create otelconnect interceptor: %+v", err) } - sv := grpc.NewServer(serverOpts...) - pb.RegisterFrontendServiceServer(sv, minimatch.NewFrontendService(store)) + mux := http.NewServeMux() + mux.Handle(openmatchconnect.NewFrontendServiceHandler(minimatch.NewFrontendService(store), + connect.WithInterceptors(otelInterceptor))) + handler := h2c.NewHandler(mux, &http2.Server{}) addr := fmt.Sprintf(":%s", conf.Port) - lis, err := net.Listen("tcp", addr) - if err != nil { - log.Fatalf("failed to listen gRPC server via %s: %+v", addr, err) - } + server := &http.Server{Addr: addr, Handler: handler} // start frontend server ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM, os.Interrupt) @@ -81,16 +78,21 @@ func main() { eg := new(errgroup.Group) eg.Go(func() error { log.Printf("frontend service is listening on %s...", addr) - return sv.Serve(lis) + if err := server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + return err + } + return nil }) // wait for stop signal <-ctx.Done() log.Printf("shutting down frontend service...") // shutdown gracefully - sv.GracefulStop() + if err := server.Shutdown(context.Background()); err != nil { + log.Printf("failed to shutdown frontend service: %+v", err) + } if err := eg.Wait(); err != nil { - log.Fatalf("failed to serve gRPC server: %+v", err) + log.Fatalf("failed to serve frontend server: %+v", err) } } diff --git a/loadtest/go.mod b/loadtest/go.mod index 9285143..70990ef 100644 --- a/loadtest/go.mod +++ b/loadtest/go.mod @@ -7,6 +7,8 @@ toolchain go1.22.0 replace github.com/castaneai/minimatch => ../ require ( + connectrpc.com/connect v1.17.0 + connectrpc.com/otelconnect v0.7.1 github.com/Code-Hex/go-generics-cache v1.3.1 github.com/bojand/hri v1.1.0 github.com/castaneai/minimatch v0.0.0-00010101000000-000000000000 @@ -14,11 +16,11 @@ require ( github.com/prometheus/client_golang v1.17.0 github.com/redis/rueidis v1.0.31 github.com/redis/rueidis/rueidisotel v1.0.31 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 go.opentelemetry.io/otel v1.31.0 go.opentelemetry.io/otel/exporters/prometheus v0.44.0 go.opentelemetry.io/otel/metric v1.31.0 go.opentelemetry.io/otel/sdk/metric v1.31.0 + golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 google.golang.org/grpc v1.67.1 open-match.dev/open-match v1.8.1 @@ -44,7 +46,6 @@ require ( go.opentelemetry.io/otel/sdk v1.31.0 // indirect go.opentelemetry.io/otel/trace v1.31.0 // indirect golang.org/x/exp v0.0.0-20220328175248-053ad81199eb // indirect - golang.org/x/net v0.30.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/text v0.19.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/loadtest/go.sum b/loadtest/go.sum index 8b01421..86c2060 100644 --- a/loadtest/go.sum +++ b/loadtest/go.sum @@ -1,3 +1,7 @@ +connectrpc.com/connect v1.17.0 h1:W0ZqMhtVzn9Zhn2yATuUokDLO5N+gIuBWMOnsQrfmZk= +connectrpc.com/connect v1.17.0/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= +connectrpc.com/otelconnect v0.7.1 h1:scO5pOb0i4yUE66CnNrHeK1x51yq0bE0ehPg6WvzXJY= +connectrpc.com/otelconnect v0.7.1/go.mod h1:dh3bFgHBTb2bkqGCeVVOtHJreSns7uu9wwL2Tbz17ms= github.com/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g= github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= @@ -62,20 +66,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= go.opentelemetry.io/otel/exporters/prometheus v0.44.0 h1:08qeJgaPC0YEBu2PQMbqU3rogTlyzpjhCI2b58Yn00w= go.opentelemetry.io/otel/exporters/prometheus v0.44.0/go.mod h1:ERL2uIeBtg4TxZdojHUwzZfIFlUIjZtxubT5p4h1Gjg= go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= -go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= diff --git a/matchfunction.go b/matchfunction.go index 3dddfa2..d82d8b6 100644 --- a/matchfunction.go +++ b/matchfunction.go @@ -3,7 +3,7 @@ package minimatch import ( "context" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" ) // MatchFunction performs matchmaking based on Ticket for each fetched Pool. diff --git a/metrics.go b/metrics.go index bf71f79..77f78bd 100644 --- a/metrics.go +++ b/metrics.go @@ -7,8 +7,8 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" "github.com/castaneai/minimatch/pkg/statestore" ) diff --git a/minimatch.go b/minimatch.go index 546884f..5c0ef27 100644 --- a/minimatch.go +++ b/minimatch.go @@ -3,16 +3,18 @@ package minimatch import ( "context" "fmt" - "net" + "net/http" "sync" "time" "github.com/alicebob/miniredis/v2" "github.com/redis/rueidis" "github.com/redis/rueidis/rueidislock" - "google.golang.org/grpc" - "open-match.dev/open-match/pkg/pb" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" + pb "github.com/castaneai/minimatch/gen/openmatch" + "github.com/castaneai/minimatch/gen/openmatch/openmatchconnect" "github.com/castaneai/minimatch/pkg/statestore" ) @@ -57,18 +59,18 @@ func (m *MiniMatch) AddMatchFunction(profile *pb.MatchProfile, mmf MatchFunction m.mmfs[profile] = mmf } -func (m *MiniMatch) FrontendService() pb.FrontendServiceServer { +func (m *MiniMatch) FrontendService() openmatchconnect.FrontendServiceHandler { return NewFrontendService(m.frontendStore) } func (m *MiniMatch) StartFrontend(listenAddr string) error { - lis, err := net.Listen("tcp", listenAddr) - if err != nil { - return err - } - sv := grpc.NewServer() - pb.RegisterFrontendServiceServer(sv, m.FrontendService()) - return sv.Serve(lis) + mux := http.NewServeMux() + mux.Handle(openmatchconnect.NewFrontendServiceHandler(m.FrontendService())) + // For gRPC clients, it's convenient to support HTTP/2 without TLS. You can + // avoid x/net/http2 by using http.ListenAndServeTLS. + handler := h2c.NewHandler(mux, &http2.Server{}) + server := &http.Server{Addr: listenAddr, Handler: handler} + return server.ListenAndServe() } func (m *MiniMatch) StartBackend(ctx context.Context, assigner Assigner, tickRate time.Duration, opts ...BackendOption) error { diff --git a/pkg/statestore/backend.go b/pkg/statestore/backend.go index b4c4029..d773627 100644 --- a/pkg/statestore/backend.go +++ b/pkg/statestore/backend.go @@ -3,7 +3,7 @@ package statestore import ( "context" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" ) type BackendStore interface { diff --git a/pkg/statestore/frontend.go b/pkg/statestore/frontend.go index 924d800..fccb194 100644 --- a/pkg/statestore/frontend.go +++ b/pkg/statestore/frontend.go @@ -4,7 +4,7 @@ import ( "context" "time" - "open-match.dev/open-match/pkg/pb" + pb "github.com/castaneai/minimatch/gen/openmatch" ) type FrontendStore interface { diff --git a/pkg/statestore/redis.go b/pkg/statestore/redis.go index 9192144..6543f2a 100644 --- a/pkg/statestore/redis.go +++ b/pkg/statestore/redis.go @@ -10,7 +10,8 @@ import ( "github.com/redis/rueidis" "github.com/redis/rueidis/rueidislock" "google.golang.org/protobuf/proto" - "open-match.dev/open-match/pkg/pb" + + pb "github.com/castaneai/minimatch/gen/openmatch" ) const ( diff --git a/pkg/statestore/redis_test.go b/pkg/statestore/redis_test.go index 0267fd3..e7a256c 100644 --- a/pkg/statestore/redis_test.go +++ b/pkg/statestore/redis_test.go @@ -14,7 +14,8 @@ import ( "github.com/rs/xid" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" - "open-match.dev/open-match/pkg/pb" + + pb "github.com/castaneai/minimatch/gen/openmatch" ) const ( diff --git a/pkg/statestore/ticketcache.go b/pkg/statestore/ticketcache.go index 6e2733e..c8328e5 100644 --- a/pkg/statestore/ticketcache.go +++ b/pkg/statestore/ticketcache.go @@ -5,7 +5,8 @@ import ( "time" cache "github.com/Code-Hex/go-generics-cache" - "open-match.dev/open-match/pkg/pb" + + pb "github.com/castaneai/minimatch/gen/openmatch" ) type ticketCacheOptions struct { diff --git a/pkg/statestore/ticketcache_test.go b/pkg/statestore/ticketcache_test.go index fc4ff05..de52dbf 100644 --- a/pkg/statestore/ticketcache_test.go +++ b/pkg/statestore/ticketcache_test.go @@ -8,7 +8,8 @@ import ( cache "github.com/Code-Hex/go-generics-cache" "github.com/alicebob/miniredis/v2" "github.com/stretchr/testify/require" - "open-match.dev/open-match/pkg/pb" + + pb "github.com/castaneai/minimatch/gen/openmatch" ) func TestTicketCache(t *testing.T) { diff --git a/testing.go b/testing.go index edc0cda..6721edb 100644 --- a/testing.go +++ b/testing.go @@ -3,16 +3,19 @@ package minimatch import ( "context" "net" + "net/http" + "net/http/httptest" "testing" "time" "github.com/alicebob/miniredis/v2" "github.com/redis/rueidis" "github.com/redis/rueidis/rueidislock" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials/insecure" - "open-match.dev/open-match/pkg/pb" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" + pb "github.com/castaneai/minimatch/gen/openmatch" + "github.com/castaneai/minimatch/gen/openmatch/openmatchconnect" "github.com/castaneai/minimatch/pkg/statestore" ) @@ -73,47 +76,34 @@ func defaultTestServerOpts() *testServerOptions { } type TestFrontendServer struct { - sv *grpc.Server - lis net.Listener + sv *httptest.Server } func (ts *TestFrontendServer) Addr() string { - return ts.lis.Addr().String() + return ts.sv.Listener.Addr().String() } -func (ts *TestFrontendServer) Dial(t *testing.T) pb.FrontendServiceClient { - cc, err := grpc.Dial(ts.Addr(), grpc.WithTransportCredentials(insecure.NewCredentials())) - if err != nil { - t.Fatalf("failed to dial to TestFrontendServer: %+v", err) - } - return pb.NewFrontendServiceClient(cc) +func (ts *TestFrontendServer) Dial(t *testing.T) openmatchconnect.FrontendServiceClient { + return openmatchconnect.NewFrontendServiceClient(ts.sv.Client(), ts.sv.URL) } func (ts *TestFrontendServer) Start(t *testing.T) { - go func() { - if err := ts.sv.Serve(ts.lis); err != nil { - t.Logf("failed to serve minimatch frontend: %+v", err) - } - }() - waitForTCPServerReady(t, ts.lis.Addr().String(), 10*time.Second) + ts.sv.Start() + waitForTCPServerReady(t, ts.Addr(), 10*time.Second) } func (ts *TestFrontendServer) Stop() { - ts.sv.Stop() + ts.sv.Close() } func NewTestFrontendServer(t *testing.T, store statestore.FrontendStore, addr string, opts ...FrontendOption) *TestFrontendServer { // start frontend - lis, err := net.Listen("tcp", addr) - if err != nil { - t.Fatalf("failed to listen test frontend server: %+v", err) - } - t.Cleanup(func() { _ = lis.Close() }) - sv := grpc.NewServer() - pb.RegisterFrontendServiceServer(sv, NewFrontendService(store, opts...)) + mux := http.NewServeMux() + mux.Handle(openmatchconnect.NewFrontendServiceHandler(NewFrontendService(store, opts...))) + sv := httptest.NewUnstartedServer(h2c.NewHandler(mux, &http2.Server{})) + sv.EnableHTTP2 = true ts := &TestFrontendServer{ - sv: sv, - lis: lis, + sv: sv, } t.Cleanup(func() { ts.Stop() }) return ts @@ -147,7 +137,7 @@ func RunTestServer(t *testing.T, matchFunctions map[*pb.MatchProfile]MatchFuncti return ts } -func (ts *TestServer) DialFrontend(t *testing.T) pb.FrontendServiceClient { +func (ts *TestServer) DialFrontend(t *testing.T) openmatchconnect.FrontendServiceClient { return ts.frontend.Dial(t) } diff --git a/tests/intergration_test.go b/tests/intergration_test.go index f575567..e6a7962 100644 --- a/tests/intergration_test.go +++ b/tests/intergration_test.go @@ -3,19 +3,18 @@ package tests import ( "context" "errors" - "io" "log" "slices" "testing" + "connectrpc.com/connect" "github.com/bojand/hri" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "open-match.dev/open-match/pkg/pb" "github.com/castaneai/minimatch" + pb "github.com/castaneai/minimatch/gen/openmatch" + "github.com/castaneai/minimatch/gen/openmatch/openmatchconnect" ) var anyProfile = &pb.MatchProfile{ @@ -54,21 +53,21 @@ func TestFrontend(t *testing.T) { c := s.DialFrontend(t) ctx := context.Background() - _, err := c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: "invalid"}) + _, err := c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: "invalid"})) require.Error(t, err) - requireErrorCode(t, err, codes.NotFound) + requireErrorCode(t, err, connect.CodeNotFound) t1 := mustCreateTicket(ctx, t, c, &pb.Ticket{}) - resp, err := c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: t1.Id}) + resp, err := c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: t1.Id})) require.NoError(t, err) - require.Equal(t, resp.Id, t1.Id) + require.Equal(t, resp.Msg.Id, t1.Id) - _, err = c.DeleteTicket(ctx, &pb.DeleteTicketRequest{TicketId: t1.Id}) + _, err = c.DeleteTicket(ctx, connect.NewRequest(&pb.DeleteTicketRequest{TicketId: t1.Id})) require.NoError(t, err) - _, err = c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: t1.Id}) - requireErrorCode(t, err, codes.NotFound) + _, err = c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: t1.Id})) + requireErrorCode(t, err, connect.CodeNotFound) } func TestSimpleMatch(t *testing.T) { @@ -160,36 +159,22 @@ func TestWatchAssignment(t *testing.T) { defer stopWatch() w1 := make(chan *pb.Assignment) go func() { - stream, err := c.WatchAssignments(wctx, &pb.WatchAssignmentsRequest{TicketId: t1.Id}) + stream, err := c.WatchAssignments(wctx, connect.NewRequest(&pb.WatchAssignmentsRequest{TicketId: t1.Id})) if err != nil { return } - for { - resp, err := stream.Recv() - if errors.Is(err, io.EOF) { - break - } - if err != nil { - return - } - w1 <- resp.Assignment + for stream.Receive() { + w1 <- stream.Msg().Assignment } }() w2 := make(chan *pb.Assignment) go func() { - stream, err := c.WatchAssignments(wctx, &pb.WatchAssignmentsRequest{TicketId: t2.Id}) + stream, err := c.WatchAssignments(wctx, connect.NewRequest(&pb.WatchAssignmentsRequest{TicketId: t2.Id})) if err != nil { return } - for { - resp, err := stream.Recv() - if errors.Is(err, io.EOF) { - break - } - if err != nil { - return - } - w2 <- resp.Assignment + for stream.Receive() { + w2 <- stream.Msg().Assignment } }() @@ -293,54 +278,55 @@ func TestAssignerError(t *testing.T) { frontend := minimatch.NewTestFrontendServer(t, frontStore, "127.0.0.1:0") frontend.Start(t) fc := frontend.Dial(t) - t1, err := fc.CreateTicket(ctx, &pb.CreateTicketRequest{Ticket: &pb.Ticket{}}) + t1, err := fc.CreateTicket(ctx, connect.NewRequest(&pb.CreateTicketRequest{Ticket: &pb.Ticket{}})) require.NoError(t, err) - t2, err := fc.CreateTicket(ctx, &pb.CreateTicketRequest{Ticket: &pb.Ticket{}}) + t2, err := fc.CreateTicket(ctx, connect.NewRequest(&pb.CreateTicketRequest{Ticket: &pb.Ticket{}})) require.NoError(t, err) require.Error(t, invalidBackend.Tick(ctx)) - mustNotAssignment(ctx, t, fc, t1.Id) - mustNotAssignment(ctx, t, fc, t2.Id) + mustNotAssignment(ctx, t, fc, t1.Msg.Id) + mustNotAssignment(ctx, t, fc, t2.Msg.Id) // If the Assigner returns an error, // the ticket in Pending status is released and can be immediately fetched from another backend. require.NoError(t, validBackend.Tick(ctx)) - as1 := mustAssignment(ctx, t, fc, t1.Id) - as2 := mustAssignment(ctx, t, fc, t2.Id) + as1 := mustAssignment(ctx, t, fc, t1.Msg.Id) + as2 := mustAssignment(ctx, t, fc, t2.Msg.Id) assert.Equal(t, as1.Connection, as2.Connection) } -func mustCreateTicket(ctx context.Context, t *testing.T, c pb.FrontendServiceClient, ticket *pb.Ticket) *pb.Ticket { +func mustCreateTicket(ctx context.Context, t *testing.T, c openmatchconnect.FrontendServiceClient, ticket *pb.Ticket) *pb.Ticket { t.Helper() - resp, err := c.CreateTicket(ctx, &pb.CreateTicketRequest{Ticket: ticket}) + resp, err := c.CreateTicket(ctx, connect.NewRequest(&pb.CreateTicketRequest{Ticket: ticket})) require.NoError(t, err) - require.NotEmpty(t, resp.Id) - require.NotNil(t, resp.CreateTime) - return resp + require.NotEmpty(t, resp.Msg.Id) + require.NotNil(t, resp.Msg.CreateTime) + return resp.Msg } -func mustAssignment(ctx context.Context, t *testing.T, c pb.FrontendServiceClient, ticketID string) *pb.Assignment { +func mustAssignment(ctx context.Context, t *testing.T, c openmatchconnect.FrontendServiceClient, ticketID string) *pb.Assignment { t.Helper() - resp, err := c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: ticketID}) + resp, err := c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: ticketID})) require.NoError(t, err) - require.NotNil(t, resp.Assignment) - return resp.Assignment + require.NotNil(t, resp.Msg.Assignment) + return resp.Msg.Assignment } -func mustNotAssignment(ctx context.Context, t *testing.T, c pb.FrontendServiceClient, ticketID string) { +func mustNotAssignment(ctx context.Context, t *testing.T, c openmatchconnect.FrontendServiceClient, ticketID string) { t.Helper() - resp, err := c.GetTicket(ctx, &pb.GetTicketRequest{TicketId: ticketID}) + resp, err := c.GetTicket(ctx, connect.NewRequest(&pb.GetTicketRequest{TicketId: ticketID})) require.NoError(t, err) - require.Nil(t, resp.Assignment) + require.Nil(t, resp.Msg.Assignment) } -func requireErrorCode(t *testing.T, err error, want codes.Code) { +func requireErrorCode(t *testing.T, err error, want connect.Code) { t.Helper() - st, ok := status.FromError(err) + var connectErr *connect.Error + ok := errors.As(err, &connectErr) if !ok { t.Fatalf("want gRPC Status error got %T(%+v)", err, err) } - got := st.Code() + got := connectErr.Code() if got != want { t.Fatalf("want %d (%s) got %d (%s)", want, want, got, got) }