github.com/livekit/protocol@v1.39.3/rpc/keepalive.psrpc.go (about) 1 // Code generated by protoc-gen-psrpc v0.6.0, DO NOT EDIT. 2 // source: rpc/keepalive.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 17 var _ = version.PsrpcVersion_0_6 18 19 // ========================== 20 // Keepalive Client Interface 21 // ========================== 22 23 type KeepaliveClient[NodeIDTopicType ~string] interface { 24 SubscribePing(ctx context.Context, nodeID NodeIDTopicType) (psrpc.Subscription[*KeepalivePing], error) 25 26 // Close immediately, without waiting for pending RPCs 27 Close() 28 } 29 30 // ============================== 31 // Keepalive ServerImpl Interface 32 // ============================== 33 34 type KeepaliveServerImpl interface { 35 } 36 37 // ========================== 38 // Keepalive Server Interface 39 // ========================== 40 41 type KeepaliveServer[NodeIDTopicType ~string] interface { 42 PublishPing(ctx context.Context, nodeID NodeIDTopicType, msg *KeepalivePing) error 43 44 // Close and wait for pending RPCs to complete 45 Shutdown() 46 47 // Close immediately, without waiting for pending RPCs 48 Kill() 49 } 50 51 // ================ 52 // Keepalive Client 53 // ================ 54 55 type keepaliveClient[NodeIDTopicType ~string] struct { 56 client *client.RPCClient 57 } 58 59 // NewKeepaliveClient creates a psrpc client that implements the KeepaliveClient interface. 60 func NewKeepaliveClient[NodeIDTopicType ~string](bus psrpc.MessageBus, opts ...psrpc.ClientOption) (KeepaliveClient[NodeIDTopicType], error) { 61 sd := &info.ServiceDefinition{ 62 Name: "Keepalive", 63 ID: rand.NewClientID(), 64 } 65 66 sd.RegisterMethod("Ping", false, true, false, false) 67 68 rpcClient, err := client.NewRPCClient(sd, bus, opts...) 69 if err != nil { 70 return nil, err 71 } 72 73 return &keepaliveClient[NodeIDTopicType]{ 74 client: rpcClient, 75 }, nil 76 } 77 78 func (c *keepaliveClient[NodeIDTopicType]) SubscribePing(ctx context.Context, nodeID NodeIDTopicType) (psrpc.Subscription[*KeepalivePing], error) { 79 return client.Join[*KeepalivePing](ctx, c.client, "Ping", []string{string(nodeID)}) 80 } 81 82 func (s *keepaliveClient[NodeIDTopicType]) Close() { 83 s.client.Close() 84 } 85 86 // ================ 87 // Keepalive Server 88 // ================ 89 90 type keepaliveServer[NodeIDTopicType ~string] struct { 91 svc KeepaliveServerImpl 92 rpc *server.RPCServer 93 } 94 95 // NewKeepaliveServer builds a RPCServer that will route requests 96 // to the corresponding method in the provided svc implementation. 97 func NewKeepaliveServer[NodeIDTopicType ~string](svc KeepaliveServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (KeepaliveServer[NodeIDTopicType], error) { 98 sd := &info.ServiceDefinition{ 99 Name: "Keepalive", 100 ID: rand.NewServerID(), 101 } 102 103 s := server.NewRPCServer(sd, bus, opts...) 104 105 sd.RegisterMethod("Ping", false, true, false, false) 106 return &keepaliveServer[NodeIDTopicType]{ 107 svc: svc, 108 rpc: s, 109 }, nil 110 } 111 112 func (s *keepaliveServer[NodeIDTopicType]) PublishPing(ctx context.Context, nodeID NodeIDTopicType, msg *KeepalivePing) error { 113 return s.rpc.Publish(ctx, "Ping", []string{string(nodeID)}, msg) 114 } 115 116 func (s *keepaliveServer[NodeIDTopicType]) Shutdown() { 117 s.rpc.Close(false) 118 } 119 120 func (s *keepaliveServer[NodeIDTopicType]) Kill() { 121 s.rpc.Close(true) 122 } 123 124 var psrpcFileDescriptor5 = []byte{ 125 // 178 bytes of a gzipped FileDescriptorProto 126 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2e, 0x2a, 0x48, 0xd6, 127 0xcf, 0x4e, 0x4d, 0x2d, 0x48, 0xcc, 0xc9, 0x2c, 0x4b, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 128 0x62, 0x2e, 0x2a, 0x48, 0x96, 0xe2, 0xcd, 0x2f, 0x28, 0xc9, 0xcc, 0xcf, 0x2b, 0x86, 0x88, 0x29, 129 0xe9, 0x72, 0xf1, 0x7a, 0xc3, 0x94, 0x05, 0x64, 0xe6, 0xa5, 0x0b, 0xc9, 0x70, 0x71, 0x96, 0x64, 130 0xe6, 0xa6, 0x16, 0x97, 0x24, 0xe6, 0x16, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x30, 0x07, 0x21, 0x04, 131 0x8c, 0x42, 0xb9, 0x38, 0xe1, 0xca, 0x85, 0x3c, 0xb8, 0x58, 0xc0, 0x5a, 0x84, 0xf4, 0x8a, 0x0a, 132 0x92, 0xf5, 0x50, 0x8c, 0x91, 0xc2, 0x22, 0xa6, 0x24, 0xb1, 0xa9, 0x93, 0x51, 0x84, 0x83, 0x51, 133 0x80, 0x51, 0x8a, 0x4b, 0x88, 0x2d, 0x2f, 0x3f, 0x25, 0xd5, 0xd3, 0x45, 0x82, 0xd1, 0x81, 0x49, 134 0x83, 0xd1, 0x49, 0x31, 0x4a, 0x3e, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 135 0x1f, 0xa4, 0x21, 0x3b, 0xb3, 0x44, 0x1f, 0xec, 0xc2, 0xe4, 0xfc, 0x1c, 0xfd, 0xa2, 0x82, 0xe4, 136 0x24, 0x36, 0x30, 0xcf, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x1d, 0x8f, 0xd1, 0xda, 0x00, 137 0x00, 0x00, 138 }