// Code generated by protoc-gen-srpc. DO NOT EDIT. // protoc-gen-srpc version: v0.52.4-0.20261024233818-0a9074172c29 // source: github.com/s4wave/spacewave/bldr/plugin/plugin.proto package bldr_plugin import ( context "context" controller_exec "github.com/aperturerobotics/controllerbus/controller/exec" rpcstream "github.com/aperturerobotics/starpc/rpcstream" srpc "github.com/aperturerobotics/starpc/srpc" ) type SRPCPluginHostClient interface { // SRPCClient returns the underlying SRPC client. SRPCClient() srpc.Client // GetPluginInfo returns the information for the current plugin. GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest) (*GetPluginInfoResponse, error) // ExecController executes a controller configuration on the bus. ExecController(ctx context.Context, in *controller_exec.ExecControllerRequest) (SRPCPluginHost_ExecControllerClient, error) // LoadPlugin requests to load the plugin with the given ID. // The plugin will remain loaded as long as the RPC is active. // Multiple requests to load the same plugin are de-duplicated. LoadPlugin(ctx context.Context, in *LoadPluginRequest) (SRPCPluginHost_LoadPluginClient, error) // PluginRpc forwards an RPC call to a remote plugin. // The plugin will remain loaded as long as the RPC is active. // Component ID: plugin id, or plugin id / instance key for instanced plugins. PluginRpc(ctx context.Context) (SRPCPluginHost_PluginRpcClient, error) // PluginFsRpc accesses a FSCursorService to access plugin assets or dist filesystems. // The plugin will remain loaded as long as the RPC is active. // Component ID: plugin-assets or plugin-dist for current plugin // Component ID: plugin-assets/{plugin-id} or plugin-dist/{plugin-id} for remote plugin PluginFsRpc(ctx context.Context) (SRPCPluginHost_PluginFsRpcClient, error) // WatchPluginStatus streams the host scheduler's plugin status. // Sends the current snapshot, then each change. WatchPluginStatus(ctx context.Context, in *WatchPluginStatusRequest) (SRPCPluginHost_WatchPluginStatusClient, error) } type srpcPluginHostClient struct { cc srpc.Client serviceID string } func NewSRPCPluginHostClient(cc srpc.Client) SRPCPluginHostClient { return &srpcPluginHostClient{cc: cc, serviceID: SRPCPluginHostServiceID} } func NewSRPCPluginHostClientWithServiceID(cc srpc.Client, serviceID string) SRPCPluginHostClient { if serviceID == "" { serviceID = SRPCPluginHostServiceID } return &srpcPluginHostClient{cc: cc, serviceID: serviceID} } func (c *srpcPluginHostClient) SRPCClient() srpc.Client { return c.cc } func (c *srpcPluginHostClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest) (*GetPluginInfoResponse, error) { out := new(GetPluginInfoResponse) err := c.cc.ExecCall(ctx, c.serviceID, "GetPluginInfo", in, out) if err != nil { return nil, err } return out, nil } func (c *srpcPluginHostClient) ExecController(ctx context.Context, in *controller_exec.ExecControllerRequest) (SRPCPluginHost_ExecControllerClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "ExecController", in) if err != nil { return nil, err } strm := &srpcPluginHost_ExecControllerClient{stream} // A failed half-close means the call ended; MsgRecv reports its outcome. _ = strm.CloseSend() return strm, nil } type SRPCPluginHost_ExecControllerClient interface { srpc.Stream Recv() (*controller_exec.ExecControllerResponse, error) RecvTo(*controller_exec.ExecControllerResponse) error } type srpcPluginHost_ExecControllerClient struct { srpc.Stream } func (x *srpcPluginHost_ExecControllerClient) Recv() (*controller_exec.ExecControllerResponse, error) { m := new(controller_exec.ExecControllerResponse) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_ExecControllerClient) RecvTo(m *controller_exec.ExecControllerResponse) error { return x.MsgRecv(m) } func (c *srpcPluginHostClient) LoadPlugin(ctx context.Context, in *LoadPluginRequest) (SRPCPluginHost_LoadPluginClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "LoadPlugin", in) if err != nil { return nil, err } strm := &srpcPluginHost_LoadPluginClient{stream} // A failed half-close means the call ended; MsgRecv reports its outcome. _ = strm.CloseSend() return strm, nil } type SRPCPluginHost_LoadPluginClient interface { srpc.Stream Recv() (*LoadPluginResponse, error) RecvTo(*LoadPluginResponse) error } type srpcPluginHost_LoadPluginClient struct { srpc.Stream } func (x *srpcPluginHost_LoadPluginClient) Recv() (*LoadPluginResponse, error) { m := new(LoadPluginResponse) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_LoadPluginClient) RecvTo(m *LoadPluginResponse) error { return x.MsgRecv(m) } func (c *srpcPluginHostClient) PluginRpc(ctx context.Context) (SRPCPluginHost_PluginRpcClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "PluginRpc", nil) if err != nil { return nil, err } strm := &srpcPluginHost_PluginRpcClient{stream} return strm, nil } type SRPCPluginHost_PluginRpcClient interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPluginHost_PluginRpcClient struct { srpc.Stream } func (x *srpcPluginHost_PluginRpcClient) Send(m *rpcstream.RpcStreamPacket) error { if m == nil { return nil } return x.MsgSend(m) } func (x *srpcPluginHost_PluginRpcClient) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_PluginRpcClient) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } func (c *srpcPluginHostClient) PluginFsRpc(ctx context.Context) (SRPCPluginHost_PluginFsRpcClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "PluginFsRpc", nil) if err != nil { return nil, err } strm := &srpcPluginHost_PluginFsRpcClient{stream} return strm, nil } type SRPCPluginHost_PluginFsRpcClient interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPluginHost_PluginFsRpcClient struct { srpc.Stream } func (x *srpcPluginHost_PluginFsRpcClient) Send(m *rpcstream.RpcStreamPacket) error { if m == nil { return nil } return x.MsgSend(m) } func (x *srpcPluginHost_PluginFsRpcClient) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_PluginFsRpcClient) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } func (c *srpcPluginHostClient) WatchPluginStatus(ctx context.Context, in *WatchPluginStatusRequest) (SRPCPluginHost_WatchPluginStatusClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "WatchPluginStatus", in) if err != nil { return nil, err } strm := &srpcPluginHost_WatchPluginStatusClient{stream} // A failed half-close means the call ended; MsgRecv reports its outcome. _ = strm.CloseSend() return strm, nil } type SRPCPluginHost_WatchPluginStatusClient interface { srpc.Stream Recv() (*WatchPluginStatusResponse, error) RecvTo(*WatchPluginStatusResponse) error } type srpcPluginHost_WatchPluginStatusClient struct { srpc.Stream } func (x *srpcPluginHost_WatchPluginStatusClient) Recv() (*WatchPluginStatusResponse, error) { m := new(WatchPluginStatusResponse) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_WatchPluginStatusClient) RecvTo(m *WatchPluginStatusResponse) error { return x.MsgRecv(m) } type SRPCPluginHostServer interface { // GetPluginInfo returns the information for the current plugin. GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error) // ExecController executes a controller configuration on the bus. ExecController(*controller_exec.ExecControllerRequest, SRPCPluginHost_ExecControllerStream) error // LoadPlugin requests to load the plugin with the given ID. // The plugin will remain loaded as long as the RPC is active. // Multiple requests to load the same plugin are de-duplicated. LoadPlugin(*LoadPluginRequest, SRPCPluginHost_LoadPluginStream) error // PluginRpc forwards an RPC call to a remote plugin. // The plugin will remain loaded as long as the RPC is active. // Component ID: plugin id, or plugin id / instance key for instanced plugins. PluginRpc(SRPCPluginHost_PluginRpcStream) error // PluginFsRpc accesses a FSCursorService to access plugin assets or dist filesystems. // The plugin will remain loaded as long as the RPC is active. // Component ID: plugin-assets or plugin-dist for current plugin // Component ID: plugin-assets/{plugin-id} or plugin-dist/{plugin-id} for remote plugin PluginFsRpc(SRPCPluginHost_PluginFsRpcStream) error // WatchPluginStatus streams the host scheduler's plugin status. // Sends the current snapshot, then each change. WatchPluginStatus(*WatchPluginStatusRequest, SRPCPluginHost_WatchPluginStatusStream) error } const SRPCPluginHostServiceID = "bldr.plugin.PluginHost" type SRPCPluginHostHandler struct { serviceID string impl SRPCPluginHostServer } // NewSRPCPluginHostHandler constructs a new RPC handler. // serviceID: if empty, uses default: bldr.plugin.PluginHost func NewSRPCPluginHostHandler(impl SRPCPluginHostServer, serviceID string) srpc.Handler { if serviceID == "" { serviceID = SRPCPluginHostServiceID } return &SRPCPluginHostHandler{impl: impl, serviceID: serviceID} } // SRPCRegisterPluginHost registers the implementation with the mux. // Uses the default serviceID: bldr.plugin.PluginHost func SRPCRegisterPluginHost(mux srpc.Mux, impl SRPCPluginHostServer) error { return mux.Register(NewSRPCPluginHostHandler(impl, "")) } func (d *SRPCPluginHostHandler) GetServiceID() string { return d.serviceID } func (SRPCPluginHostHandler) GetMethodIDs() []string { return []string{ "GetPluginInfo", "ExecController", "LoadPlugin", "PluginRpc", "PluginFsRpc", "WatchPluginStatus", } } func (d *SRPCPluginHostHandler) InvokeMethod( serviceID, methodID string, strm srpc.Stream, ) (bool, error) { if serviceID != "" && serviceID != d.GetServiceID() { return false, nil } switch methodID { case "GetPluginInfo": return true, d.InvokeMethod_GetPluginInfo(d.impl, strm) case "ExecController": return true, d.InvokeMethod_ExecController(d.impl, strm) case "LoadPlugin": return true, d.InvokeMethod_LoadPlugin(d.impl, strm) case "PluginRpc": return true, d.InvokeMethod_PluginRpc(d.impl, strm) case "PluginFsRpc": return true, d.InvokeMethod_PluginFsRpc(d.impl, strm) case "WatchPluginStatus": return true, d.InvokeMethod_WatchPluginStatus(d.impl, strm) default: return false, nil } } func (SRPCPluginHostHandler) InvokeMethod_GetPluginInfo(impl SRPCPluginHostServer, strm srpc.Stream) error { req := new(GetPluginInfoRequest) if err := strm.MsgRecv(req); err != nil { return err } out, err := impl.GetPluginInfo(strm.Context(), req) if err != nil { return err } return strm.MsgSend(out) } func (SRPCPluginHostHandler) InvokeMethod_ExecController(impl SRPCPluginHostServer, strm srpc.Stream) error { req := new(controller_exec.ExecControllerRequest) if err := strm.MsgRecv(req); err != nil { return err } serverStrm := &srpcPluginHost_ExecControllerStream{strm} return impl.ExecController(req, serverStrm) } func (SRPCPluginHostHandler) InvokeMethod_LoadPlugin(impl SRPCPluginHostServer, strm srpc.Stream) error { req := new(LoadPluginRequest) if err := strm.MsgRecv(req); err != nil { return err } serverStrm := &srpcPluginHost_LoadPluginStream{strm} return impl.LoadPlugin(req, serverStrm) } func (SRPCPluginHostHandler) InvokeMethod_PluginRpc(impl SRPCPluginHostServer, strm srpc.Stream) error { clientStrm := &srpcPluginHost_PluginRpcStream{strm} return impl.PluginRpc(clientStrm) } func (SRPCPluginHostHandler) InvokeMethod_PluginFsRpc(impl SRPCPluginHostServer, strm srpc.Stream) error { clientStrm := &srpcPluginHost_PluginFsRpcStream{strm} return impl.PluginFsRpc(clientStrm) } func (SRPCPluginHostHandler) InvokeMethod_WatchPluginStatus(impl SRPCPluginHostServer, strm srpc.Stream) error { req := new(WatchPluginStatusRequest) if err := strm.MsgRecv(req); err != nil { return err } serverStrm := &srpcPluginHost_WatchPluginStatusStream{strm} return impl.WatchPluginStatus(req, serverStrm) } type SRPCPluginHost_GetPluginInfoStream interface { srpc.Stream } type srpcPluginHost_GetPluginInfoStream struct { srpc.Stream } type SRPCPluginHost_ExecControllerStream interface { srpc.Stream Send(*controller_exec.ExecControllerResponse) error SendAndClose(*controller_exec.ExecControllerResponse) error } type srpcPluginHost_ExecControllerStream struct { srpc.Stream } func (x *srpcPluginHost_ExecControllerStream) Send(m *controller_exec.ExecControllerResponse) error { return x.MsgSend(m) } func (x *srpcPluginHost_ExecControllerStream) SendAndClose(m *controller_exec.ExecControllerResponse) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } type SRPCPluginHost_LoadPluginStream interface { srpc.Stream Send(*LoadPluginResponse) error SendAndClose(*LoadPluginResponse) error } type srpcPluginHost_LoadPluginStream struct { srpc.Stream } func (x *srpcPluginHost_LoadPluginStream) Send(m *LoadPluginResponse) error { return x.MsgSend(m) } func (x *srpcPluginHost_LoadPluginStream) SendAndClose(m *LoadPluginResponse) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } type SRPCPluginHost_PluginRpcStream interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error SendAndClose(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPluginHost_PluginRpcStream struct { srpc.Stream } func (x *srpcPluginHost_PluginRpcStream) Send(m *rpcstream.RpcStreamPacket) error { return x.MsgSend(m) } func (x *srpcPluginHost_PluginRpcStream) SendAndClose(m *rpcstream.RpcStreamPacket) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } func (x *srpcPluginHost_PluginRpcStream) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_PluginRpcStream) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } type SRPCPluginHost_PluginFsRpcStream interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error SendAndClose(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPluginHost_PluginFsRpcStream struct { srpc.Stream } func (x *srpcPluginHost_PluginFsRpcStream) Send(m *rpcstream.RpcStreamPacket) error { return x.MsgSend(m) } func (x *srpcPluginHost_PluginFsRpcStream) SendAndClose(m *rpcstream.RpcStreamPacket) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } func (x *srpcPluginHost_PluginFsRpcStream) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPluginHost_PluginFsRpcStream) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } type SRPCPluginHost_WatchPluginStatusStream interface { srpc.Stream Send(*WatchPluginStatusResponse) error SendAndClose(*WatchPluginStatusResponse) error } type srpcPluginHost_WatchPluginStatusStream struct { srpc.Stream } func (x *srpcPluginHost_WatchPluginStatusStream) Send(m *WatchPluginStatusResponse) error { return x.MsgSend(m) } func (x *srpcPluginHost_WatchPluginStatusStream) SendAndClose(m *WatchPluginStatusResponse) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } type SRPCPluginClient interface { // SRPCClient returns the underlying SRPC client. SRPCClient() srpc.Client // PluginRpc handles an RPC call from a remote plugin. // Component ID: remote plugin id PluginRpc(ctx context.Context) (SRPCPlugin_PluginRpcClient, error) } type srpcPluginClient struct { cc srpc.Client serviceID string } func NewSRPCPluginClient(cc srpc.Client) SRPCPluginClient { return &srpcPluginClient{cc: cc, serviceID: SRPCPluginServiceID} } func NewSRPCPluginClientWithServiceID(cc srpc.Client, serviceID string) SRPCPluginClient { if serviceID == "" { serviceID = SRPCPluginServiceID } return &srpcPluginClient{cc: cc, serviceID: serviceID} } func (c *srpcPluginClient) SRPCClient() srpc.Client { return c.cc } func (c *srpcPluginClient) PluginRpc(ctx context.Context) (SRPCPlugin_PluginRpcClient, error) { stream, err := c.cc.NewStream(ctx, c.serviceID, "PluginRpc", nil) if err != nil { return nil, err } strm := &srpcPlugin_PluginRpcClient{stream} return strm, nil } type SRPCPlugin_PluginRpcClient interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPlugin_PluginRpcClient struct { srpc.Stream } func (x *srpcPlugin_PluginRpcClient) Send(m *rpcstream.RpcStreamPacket) error { if m == nil { return nil } return x.MsgSend(m) } func (x *srpcPlugin_PluginRpcClient) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPlugin_PluginRpcClient) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } type SRPCPluginServer interface { // PluginRpc handles an RPC call from a remote plugin. // Component ID: remote plugin id PluginRpc(SRPCPlugin_PluginRpcStream) error } const SRPCPluginServiceID = "bldr.plugin.Plugin" type SRPCPluginHandler struct { serviceID string impl SRPCPluginServer } // NewSRPCPluginHandler constructs a new RPC handler. // serviceID: if empty, uses default: bldr.plugin.Plugin func NewSRPCPluginHandler(impl SRPCPluginServer, serviceID string) srpc.Handler { if serviceID == "" { serviceID = SRPCPluginServiceID } return &SRPCPluginHandler{impl: impl, serviceID: serviceID} } // SRPCRegisterPlugin registers the implementation with the mux. // Uses the default serviceID: bldr.plugin.Plugin func SRPCRegisterPlugin(mux srpc.Mux, impl SRPCPluginServer) error { return mux.Register(NewSRPCPluginHandler(impl, "")) } func (d *SRPCPluginHandler) GetServiceID() string { return d.serviceID } func (SRPCPluginHandler) GetMethodIDs() []string { return []string{ "PluginRpc", } } func (d *SRPCPluginHandler) InvokeMethod( serviceID, methodID string, strm srpc.Stream, ) (bool, error) { if serviceID != "" && serviceID != d.GetServiceID() { return false, nil } switch methodID { case "PluginRpc": return true, d.InvokeMethod_PluginRpc(d.impl, strm) default: return false, nil } } func (SRPCPluginHandler) InvokeMethod_PluginRpc(impl SRPCPluginServer, strm srpc.Stream) error { clientStrm := &srpcPlugin_PluginRpcStream{strm} return impl.PluginRpc(clientStrm) } type SRPCPlugin_PluginRpcStream interface { srpc.Stream Send(*rpcstream.RpcStreamPacket) error SendAndClose(*rpcstream.RpcStreamPacket) error Recv() (*rpcstream.RpcStreamPacket, error) RecvTo(*rpcstream.RpcStreamPacket) error } type srpcPlugin_PluginRpcStream struct { srpc.Stream } func (x *srpcPlugin_PluginRpcStream) Send(m *rpcstream.RpcStreamPacket) error { return x.MsgSend(m) } func (x *srpcPlugin_PluginRpcStream) SendAndClose(m *rpcstream.RpcStreamPacket) error { if m != nil { if err := x.MsgSend(m); err != nil { return err } } return x.CloseSend() } func (x *srpcPlugin_PluginRpcStream) Recv() (*rpcstream.RpcStreamPacket, error) { m := new(rpcstream.RpcStreamPacket) if err := x.MsgRecv(m); err != nil { return nil, err } return m, nil } func (x *srpcPlugin_PluginRpcStream) RecvTo(m *rpcstream.RpcStreamPacket) error { return x.MsgRecv(m) } type SRPCUpdateGuardClient interface { // SRPCClient returns the underlying SRPC client. SRPCClient() srpc.Client // Prepare waits for owned work to finish and prevents new work from starting. // Success authorizes replacement of this plugin generation. Prepare(ctx context.Context, in *PrepareUpdateRequest) (*PrepareUpdateResponse, error) } type srpcUpdateGuardClient struct { cc srpc.Client serviceID string } func NewSRPCUpdateGuardClient(cc srpc.Client) SRPCUpdateGuardClient { return &srpcUpdateGuardClient{cc: cc, serviceID: SRPCUpdateGuardServiceID} } func NewSRPCUpdateGuardClientWithServiceID(cc srpc.Client, serviceID string) SRPCUpdateGuardClient { if serviceID == "" { serviceID = SRPCUpdateGuardServiceID } return &srpcUpdateGuardClient{cc: cc, serviceID: serviceID} } func (c *srpcUpdateGuardClient) SRPCClient() srpc.Client { return c.cc } func (c *srpcUpdateGuardClient) Prepare(ctx context.Context, in *PrepareUpdateRequest) (*PrepareUpdateResponse, error) { out := new(PrepareUpdateResponse) err := c.cc.ExecCall(ctx, c.serviceID, "Prepare", in, out) if err != nil { return nil, err } return out, nil } type SRPCUpdateGuardServer interface { // Prepare waits for owned work to finish and prevents new work from starting. // Success authorizes replacement of this plugin generation. Prepare(context.Context, *PrepareUpdateRequest) (*PrepareUpdateResponse, error) } const SRPCUpdateGuardServiceID = "bldr.plugin.UpdateGuard" type SRPCUpdateGuardHandler struct { serviceID string impl SRPCUpdateGuardServer } // NewSRPCUpdateGuardHandler constructs a new RPC handler. // serviceID: if empty, uses default: bldr.plugin.UpdateGuard func NewSRPCUpdateGuardHandler(impl SRPCUpdateGuardServer, serviceID string) srpc.Handler { if serviceID == "" { serviceID = SRPCUpdateGuardServiceID } return &SRPCUpdateGuardHandler{impl: impl, serviceID: serviceID} } // SRPCRegisterUpdateGuard registers the implementation with the mux. // Uses the default serviceID: bldr.plugin.UpdateGuard func SRPCRegisterUpdateGuard(mux srpc.Mux, impl SRPCUpdateGuardServer) error { return mux.Register(NewSRPCUpdateGuardHandler(impl, "")) } func (d *SRPCUpdateGuardHandler) GetServiceID() string { return d.serviceID } func (SRPCUpdateGuardHandler) GetMethodIDs() []string { return []string{ "Prepare", } } func (d *SRPCUpdateGuardHandler) InvokeMethod( serviceID, methodID string, strm srpc.Stream, ) (bool, error) { if serviceID != "" && serviceID != d.GetServiceID() { return false, nil } switch methodID { case "Prepare": return true, d.InvokeMethod_Prepare(d.impl, strm) default: return false, nil } } func (SRPCUpdateGuardHandler) InvokeMethod_Prepare(impl SRPCUpdateGuardServer, strm srpc.Stream) error { req := new(PrepareUpdateRequest) if err := strm.MsgRecv(req); err != nil { return err } out, err := impl.Prepare(strm.Context(), req) if err != nil { return err } return strm.MsgSend(out) } type SRPCUpdateGuard_PrepareStream interface { srpc.Stream } type srpcUpdateGuard_PrepareStream struct { srpc.Stream } type SRPCActivationClient interface { // SRPCClient returns the underlying SRPC client. SRPCClient() srpc.Client // Check confirms support for private startup and atomic registration admission. Check(ctx context.Context, in *CheckActivationRequest) (*CheckActivationResponse, error) // Activate admits this worker's prepared registrations after startup succeeds. Activate(ctx context.Context, in *ActivatePluginRequest) (*ActivatePluginResponse, error) } type srpcActivationClient struct { cc srpc.Client serviceID string } func NewSRPCActivationClient(cc srpc.Client) SRPCActivationClient { return &srpcActivationClient{cc: cc, serviceID: SRPCActivationServiceID} } func NewSRPCActivationClientWithServiceID(cc srpc.Client, serviceID string) SRPCActivationClient { if serviceID == "" { serviceID = SRPCActivationServiceID } return &srpcActivationClient{cc: cc, serviceID: serviceID} } func (c *srpcActivationClient) SRPCClient() srpc.Client { return c.cc } func (c *srpcActivationClient) Check(ctx context.Context, in *CheckActivationRequest) (*CheckActivationResponse, error) { out := new(CheckActivationResponse) err := c.cc.ExecCall(ctx, c.serviceID, "Check", in, out) if err != nil { return nil, err } return out, nil } func (c *srpcActivationClient) Activate(ctx context.Context, in *ActivatePluginRequest) (*ActivatePluginResponse, error) { out := new(ActivatePluginResponse) err := c.cc.ExecCall(ctx, c.serviceID, "Activate", in, out) if err != nil { return nil, err } return out, nil } type SRPCActivationServer interface { // Check confirms support for private startup and atomic registration admission. Check(context.Context, *CheckActivationRequest) (*CheckActivationResponse, error) // Activate admits this worker's prepared registrations after startup succeeds. Activate(context.Context, *ActivatePluginRequest) (*ActivatePluginResponse, error) } const SRPCActivationServiceID = "bldr.plugin.Activation" type SRPCActivationHandler struct { serviceID string impl SRPCActivationServer } // NewSRPCActivationHandler constructs a new RPC handler. // serviceID: if empty, uses default: bldr.plugin.Activation func NewSRPCActivationHandler(impl SRPCActivationServer, serviceID string) srpc.Handler { if serviceID == "" { serviceID = SRPCActivationServiceID } return &SRPCActivationHandler{impl: impl, serviceID: serviceID} } // SRPCRegisterActivation registers the implementation with the mux. // Uses the default serviceID: bldr.plugin.Activation func SRPCRegisterActivation(mux srpc.Mux, impl SRPCActivationServer) error { return mux.Register(NewSRPCActivationHandler(impl, "")) } func (d *SRPCActivationHandler) GetServiceID() string { return d.serviceID } func (SRPCActivationHandler) GetMethodIDs() []string { return []string{ "Check", "Activate", } } func (d *SRPCActivationHandler) InvokeMethod( serviceID, methodID string, strm srpc.Stream, ) (bool, error) { if serviceID != "" && serviceID != d.GetServiceID() { return false, nil } switch methodID { case "Check": return true, d.InvokeMethod_Check(d.impl, strm) case "Activate": return true, d.InvokeMethod_Activate(d.impl, strm) default: return false, nil } } func (SRPCActivationHandler) InvokeMethod_Check(impl SRPCActivationServer, strm srpc.Stream) error { req := new(CheckActivationRequest) if err := strm.MsgRecv(req); err != nil { return err } out, err := impl.Check(strm.Context(), req) if err != nil { return err } return strm.MsgSend(out) } func (SRPCActivationHandler) InvokeMethod_Activate(impl SRPCActivationServer, strm srpc.Stream) error { req := new(ActivatePluginRequest) if err := strm.MsgRecv(req); err != nil { return err } out, err := impl.Activate(strm.Context(), req) if err != nil { return err } return strm.MsgSend(out) } type SRPCActivation_CheckStream interface { srpc.Stream } type srpcActivation_CheckStream struct { srpc.Stream } type SRPCActivation_ActivateStream interface { srpc.Stream } type srpcActivation_ActivateStream struct { srpc.Stream }