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  }