github.com/livekit/protocol@v1.16.1-0.20240517185851-47e4c6bba773/rpc/egress.psrpc.go (about)

     1  // Code generated by protoc-gen-psrpc v0.5.1, DO NOT EDIT.
     2  // source: rpc/egress.proto
     3  
     4  package rpc
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/livekit/psrpc"
    10  	"github.com/livekit/psrpc/pkg/client"
    11  	"github.com/livekit/psrpc/pkg/info"
    12  	"github.com/livekit/psrpc/pkg/rand"
    13  	"github.com/livekit/psrpc/pkg/server"
    14  	"github.com/livekit/psrpc/version"
    15  )
    16  import livekit2 "github.com/livekit/protocol/livekit"
    17  
    18  var _ = version.PsrpcVersion_0_5
    19  
    20  // ===============================
    21  // EgressInternal Client Interface
    22  // ===============================
    23  
    24  type EgressInternalClient interface {
    25  	StartEgress(ctx context.Context, topic string, req *StartEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error)
    26  
    27  	ListActiveEgress(ctx context.Context, topic string, req *ListActiveEgressRequest, opts ...psrpc.RequestOption) (<-chan *psrpc.Response[*ListActiveEgressResponse], error)
    28  }
    29  
    30  // ===================================
    31  // EgressInternal ServerImpl Interface
    32  // ===================================
    33  
    34  type EgressInternalServerImpl interface {
    35  	StartEgress(context.Context, *StartEgressRequest) (*livekit2.EgressInfo, error)
    36  	StartEgressAffinity(context.Context, *StartEgressRequest) float32
    37  
    38  	ListActiveEgress(context.Context, *ListActiveEgressRequest) (*ListActiveEgressResponse, error)
    39  }
    40  
    41  // ===============================
    42  // EgressInternal Server Interface
    43  // ===============================
    44  
    45  type EgressInternalServer interface {
    46  	RegisterStartEgressTopic(topic string) error
    47  	DeregisterStartEgressTopic(topic string)
    48  	RegisterListActiveEgressTopic(topic string) error
    49  	DeregisterListActiveEgressTopic(topic string)
    50  
    51  	// Close and wait for pending RPCs to complete
    52  	Shutdown()
    53  
    54  	// Close immediately, without waiting for pending RPCs
    55  	Kill()
    56  }
    57  
    58  // =====================
    59  // EgressInternal Client
    60  // =====================
    61  
    62  type egressInternalClient struct {
    63  	client *client.RPCClient
    64  }
    65  
    66  // NewEgressInternalClient creates a psrpc client that implements the EgressInternalClient interface.
    67  func NewEgressInternalClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (EgressInternalClient, error) {
    68  	sd := &info.ServiceDefinition{
    69  		Name: "EgressInternal",
    70  		ID:   rand.NewClientID(),
    71  	}
    72  
    73  	sd.RegisterMethod("StartEgress", true, false, true, false)
    74  	sd.RegisterMethod("ListActiveEgress", false, true, false, false)
    75  
    76  	rpcClient, err := client.NewRPCClient(sd, bus, opts...)
    77  	if err != nil {
    78  		return nil, err
    79  	}
    80  
    81  	return &egressInternalClient{
    82  		client: rpcClient,
    83  	}, nil
    84  }
    85  
    86  func (c *egressInternalClient) StartEgress(ctx context.Context, topic string, req *StartEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error) {
    87  	return client.RequestSingle[*livekit2.EgressInfo](ctx, c.client, "StartEgress", []string{topic}, req, opts...)
    88  }
    89  
    90  func (c *egressInternalClient) ListActiveEgress(ctx context.Context, topic string, req *ListActiveEgressRequest, opts ...psrpc.RequestOption) (<-chan *psrpc.Response[*ListActiveEgressResponse], error) {
    91  	return client.RequestMulti[*ListActiveEgressResponse](ctx, c.client, "ListActiveEgress", []string{topic}, req, opts...)
    92  }
    93  
    94  // =====================
    95  // EgressInternal Server
    96  // =====================
    97  
    98  type egressInternalServer struct {
    99  	svc EgressInternalServerImpl
   100  	rpc *server.RPCServer
   101  }
   102  
   103  // NewEgressInternalServer builds a RPCServer that will route requests
   104  // to the corresponding method in the provided svc implementation.
   105  func NewEgressInternalServer(svc EgressInternalServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (EgressInternalServer, error) {
   106  	sd := &info.ServiceDefinition{
   107  		Name: "EgressInternal",
   108  		ID:   rand.NewServerID(),
   109  	}
   110  
   111  	s := server.NewRPCServer(sd, bus, opts...)
   112  
   113  	sd.RegisterMethod("StartEgress", true, false, true, false)
   114  	sd.RegisterMethod("ListActiveEgress", false, true, false, false)
   115  	return &egressInternalServer{
   116  		svc: svc,
   117  		rpc: s,
   118  	}, nil
   119  }
   120  
   121  func (s *egressInternalServer) RegisterStartEgressTopic(topic string) error {
   122  	return server.RegisterHandler(s.rpc, "StartEgress", []string{topic}, s.svc.StartEgress, s.svc.StartEgressAffinity)
   123  }
   124  
   125  func (s *egressInternalServer) DeregisterStartEgressTopic(topic string) {
   126  	s.rpc.DeregisterHandler("StartEgress", []string{topic})
   127  }
   128  
   129  func (s *egressInternalServer) RegisterListActiveEgressTopic(topic string) error {
   130  	return server.RegisterHandler(s.rpc, "ListActiveEgress", []string{topic}, s.svc.ListActiveEgress, nil)
   131  }
   132  
   133  func (s *egressInternalServer) DeregisterListActiveEgressTopic(topic string) {
   134  	s.rpc.DeregisterHandler("ListActiveEgress", []string{topic})
   135  }
   136  
   137  func (s *egressInternalServer) Shutdown() {
   138  	s.rpc.Close(false)
   139  }
   140  
   141  func (s *egressInternalServer) Kill() {
   142  	s.rpc.Close(true)
   143  }
   144  
   145  // ==============================
   146  // EgressHandler Client Interface
   147  // ==============================
   148  
   149  type EgressHandlerClient interface {
   150  	UpdateStream(ctx context.Context, topic string, req *livekit2.UpdateStreamRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error)
   151  
   152  	StopEgress(ctx context.Context, topic string, req *livekit2.StopEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error)
   153  }
   154  
   155  // ==================================
   156  // EgressHandler ServerImpl Interface
   157  // ==================================
   158  
   159  type EgressHandlerServerImpl interface {
   160  	UpdateStream(context.Context, *livekit2.UpdateStreamRequest) (*livekit2.EgressInfo, error)
   161  
   162  	StopEgress(context.Context, *livekit2.StopEgressRequest) (*livekit2.EgressInfo, error)
   163  }
   164  
   165  // ==============================
   166  // EgressHandler Server Interface
   167  // ==============================
   168  
   169  type EgressHandlerServer interface {
   170  	RegisterUpdateStreamTopic(topic string) error
   171  	DeregisterUpdateStreamTopic(topic string)
   172  	RegisterStopEgressTopic(topic string) error
   173  	DeregisterStopEgressTopic(topic string)
   174  
   175  	// Close and wait for pending RPCs to complete
   176  	Shutdown()
   177  
   178  	// Close immediately, without waiting for pending RPCs
   179  	Kill()
   180  }
   181  
   182  // ====================
   183  // EgressHandler Client
   184  // ====================
   185  
   186  type egressHandlerClient struct {
   187  	client *client.RPCClient
   188  }
   189  
   190  // NewEgressHandlerClient creates a psrpc client that implements the EgressHandlerClient interface.
   191  func NewEgressHandlerClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (EgressHandlerClient, error) {
   192  	sd := &info.ServiceDefinition{
   193  		Name: "EgressHandler",
   194  		ID:   rand.NewClientID(),
   195  	}
   196  
   197  	sd.RegisterMethod("UpdateStream", false, false, true, true)
   198  	sd.RegisterMethod("StopEgress", false, false, true, true)
   199  
   200  	rpcClient, err := client.NewRPCClient(sd, bus, opts...)
   201  	if err != nil {
   202  		return nil, err
   203  	}
   204  
   205  	return &egressHandlerClient{
   206  		client: rpcClient,
   207  	}, nil
   208  }
   209  
   210  func (c *egressHandlerClient) UpdateStream(ctx context.Context, topic string, req *livekit2.UpdateStreamRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error) {
   211  	return client.RequestSingle[*livekit2.EgressInfo](ctx, c.client, "UpdateStream", []string{topic}, req, opts...)
   212  }
   213  
   214  func (c *egressHandlerClient) StopEgress(ctx context.Context, topic string, req *livekit2.StopEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error) {
   215  	return client.RequestSingle[*livekit2.EgressInfo](ctx, c.client, "StopEgress", []string{topic}, req, opts...)
   216  }
   217  
   218  // ====================
   219  // EgressHandler Server
   220  // ====================
   221  
   222  type egressHandlerServer struct {
   223  	svc EgressHandlerServerImpl
   224  	rpc *server.RPCServer
   225  }
   226  
   227  // NewEgressHandlerServer builds a RPCServer that will route requests
   228  // to the corresponding method in the provided svc implementation.
   229  func NewEgressHandlerServer(svc EgressHandlerServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (EgressHandlerServer, error) {
   230  	sd := &info.ServiceDefinition{
   231  		Name: "EgressHandler",
   232  		ID:   rand.NewServerID(),
   233  	}
   234  
   235  	s := server.NewRPCServer(sd, bus, opts...)
   236  
   237  	sd.RegisterMethod("UpdateStream", false, false, true, true)
   238  	sd.RegisterMethod("StopEgress", false, false, true, true)
   239  	return &egressHandlerServer{
   240  		svc: svc,
   241  		rpc: s,
   242  	}, nil
   243  }
   244  
   245  func (s *egressHandlerServer) RegisterUpdateStreamTopic(topic string) error {
   246  	return server.RegisterHandler(s.rpc, "UpdateStream", []string{topic}, s.svc.UpdateStream, nil)
   247  }
   248  
   249  func (s *egressHandlerServer) DeregisterUpdateStreamTopic(topic string) {
   250  	s.rpc.DeregisterHandler("UpdateStream", []string{topic})
   251  }
   252  
   253  func (s *egressHandlerServer) RegisterStopEgressTopic(topic string) error {
   254  	return server.RegisterHandler(s.rpc, "StopEgress", []string{topic}, s.svc.StopEgress, nil)
   255  }
   256  
   257  func (s *egressHandlerServer) DeregisterStopEgressTopic(topic string) {
   258  	s.rpc.DeregisterHandler("StopEgress", []string{topic})
   259  }
   260  
   261  func (s *egressHandlerServer) Shutdown() {
   262  	s.rpc.Close(false)
   263  }
   264  
   265  func (s *egressHandlerServer) Kill() {
   266  	s.rpc.Close(true)
   267  }
   268  
   269  var psrpcFileDescriptor1 = []byte{
   270  	// 491 bytes of a gzipped FileDescriptorProto
   271  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xd1, 0x6e, 0x12, 0x41,
   272  	0x14, 0x86, 0x9d, 0x12, 0x96, 0xee, 0x41, 0x90, 0x8c, 0x35, 0x4c, 0x69, 0x1b, 0x29, 0x7a, 0xc1,
   273  	0x8d, 0x8b, 0xa1, 0x57, 0xde, 0x69, 0x0d, 0xb1, 0x24, 0x4d, 0x34, 0x60, 0x63, 0xa2, 0x17, 0x64,
   274  	0x99, 0x1d, 0xeb, 0x84, 0xdd, 0x9d, 0x71, 0xe6, 0x50, 0x9e, 0xa1, 0x8f, 0xe1, 0x2b, 0xf4, 0xc2,
   275  	0xa7, 0xf0, 0xa1, 0x0c, 0xb3, 0xb0, 0x5d, 0x68, 0x30, 0x5e, 0xce, 0xff, 0x9f, 0xff, 0xdb, 0x73,
   276  	0xce, 0xcc, 0x42, 0xc3, 0x68, 0xde, 0x13, 0xd7, 0x46, 0x58, 0x1b, 0x68, 0xa3, 0x50, 0xd1, 0x92,
   277  	0xd1, 0xbc, 0x55, 0x53, 0x1a, 0xa5, 0x4a, 0x57, 0x5a, 0xeb, 0x20, 0x96, 0x37, 0x62, 0x26, 0x71,
   278  	0x52, 0xac, 0xec, 0xfc, 0x29, 0x01, 0x1d, 0x63, 0x68, 0x70, 0xe0, 0xd4, 0x91, 0xf8, 0x39, 0x17,
   279  	0x16, 0xe9, 0x11, 0xf8, 0x59, 0xd9, 0x44, 0x46, 0x8c, 0xb4, 0x49, 0xd7, 0x1f, 0xed, 0x67, 0xc2,
   280  	0x30, 0xa2, 0x97, 0x50, 0x37, 0x4a, 0x25, 0x13, 0xae, 0x12, 0xad, 0xac, 0x44, 0xc1, 0xca, 0x6d,
   281  	0xd2, 0xad, 0xf6, 0x5f, 0x04, 0xab, 0x4f, 0x04, 0x23, 0xa5, 0x92, 0xf7, 0x6b, 0x77, 0x83, 0x7c,
   282  	0xf1, 0x68, 0x54, 0x33, 0x45, 0x97, 0xbe, 0x82, 0xd2, 0x42, 0x4c, 0x59, 0xd5, 0x21, 0x0e, 0x73,
   283  	0xc4, 0x17, 0x31, 0xdd, 0x0e, 0x2e, 0xeb, 0xe8, 0x00, 0xaa, 0x3a, 0x34, 0x28, 0xb9, 0xd4, 0x61,
   284  	0x8a, 0xac, 0xe6, 0x62, 0xa7, 0x79, 0xec, 0xd3, 0xbd, 0xb7, 0x1d, 0x2f, 0xe6, 0xe8, 0x47, 0x78,
   285  	0x82, 0x26, 0xe4, 0xb3, 0xc2, 0x10, 0x9e, 0x43, 0xbd, 0xcc, 0x51, 0x9f, 0x97, 0xfe, 0xce, 0x29,
   286  	0xea, 0xb8, 0x61, 0xd3, 0x33, 0x28, 0x3b, 0x85, 0x55, 0x1c, 0xe6, 0x68, 0x13, 0xb3, 0x9d, 0xce,
   287  	0x6a, 0x69, 0x13, 0x2a, 0x6e, 0x93, 0x32, 0x62, 0x25, 0xb7, 0x64, 0x6f, 0x79, 0x1c, 0x46, 0xf4,
   288  	0x00, 0xca, 0xa8, 0x66, 0x22, 0x65, 0xfb, 0x4e, 0xce, 0x0e, 0xf4, 0x19, 0x78, 0x0b, 0x3b, 0x99,
   289  	0x9b, 0x98, 0xf9, 0x99, 0xbc, 0xb0, 0x57, 0x26, 0x3e, 0xf7, 0xa1, 0x62, 0x32, 0x72, 0xe7, 0x10,
   290  	0x9a, 0x97, 0xd2, 0xe2, 0x3b, 0x8e, 0xf2, 0x66, 0xb3, 0xe5, 0xce, 0x1b, 0x60, 0x0f, 0x2d, 0xab,
   291  	0x55, 0x6a, 0x05, 0x3d, 0x01, 0xc8, 0xaf, 0xdb, 0x32, 0xd2, 0x2e, 0x75, 0xfd, 0x91, 0xbf, 0xbe,
   292  	0x6f, 0xdb, 0xff, 0x4d, 0xa0, 0x9e, 0x25, 0x86, 0x29, 0x0a, 0x93, 0x86, 0x31, 0xfd, 0x00, 0xd5,
   293  	0xc2, 0xb3, 0xa1, 0xcd, 0xc0, 0x68, 0x1e, 0x3c, 0x7c, 0x48, 0xad, 0xa7, 0xf9, 0x1e, 0xd6, 0x80,
   294  	0xef, 0xaa, 0x03, 0x77, 0xb7, 0xc4, 0x6b, 0x90, 0xb7, 0xe4, 0x35, 0xa1, 0xdf, 0xa0, 0xb1, 0xdd,
   295  	0x16, 0x3d, 0x76, 0xb4, 0x1d, 0x83, 0xb4, 0x4e, 0x76, 0xb8, 0xd9, 0x2c, 0x39, 0x7c, 0xaf, 0x4b,
   296  	0xfa, 0xbf, 0x08, 0xd4, 0x32, 0xfb, 0x22, 0x4c, 0xa3, 0x58, 0x18, 0x3a, 0x84, 0xc7, 0x57, 0x3a,
   297  	0x0a, 0x51, 0x8c, 0xd1, 0x88, 0x30, 0xa1, 0xc7, 0x79, 0x7f, 0x45, 0xf9, 0x9f, 0xdd, 0x7b, 0x77,
   298  	0xb7, 0x64, 0xaf, 0x41, 0xe8, 0x00, 0x60, 0x8c, 0x4a, 0xaf, 0x7a, 0x6e, 0xe5, 0xa5, 0xf7, 0xe2,
   299  	0xff, 0x60, 0xce, 0x4f, 0xbf, 0x3e, 0xbf, 0x96, 0xf8, 0x63, 0x3e, 0x0d, 0xb8, 0x4a, 0x7a, 0xab,
   300  	0xc2, 0x9e, 0xfb, 0x3b, 0xb9, 0x8a, 0x7b, 0x46, 0xf3, 0xa9, 0xe7, 0x4e, 0x67, 0x7f, 0x03, 0x00,
   301  	0x00, 0xff, 0xff, 0x47, 0x4e, 0x8e, 0x31, 0xe9, 0x03, 0x00, 0x00,
   302  }