package grpcserver import ( "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server" "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire" "github.com/kaspanet/kaspad/util/panics" ) // rpcServer is for gRCP miner, wallet and certain kaspactl utility communications // This is for outside querying of the node's state. type rpcServer struct { protowire.UnimplementedRPCServer gRPCServer } // RPCMaxMessageSize is the max message size for the RPC server to send and receive const RPCMaxMessageSize = 1024 * 1024 * 1024 // 1 GB // NewRPCServer creates a new RPCServer // @TODO make this a variadic function for better middleware and number of variable args passed in func NewRPCServer(listeningAddresses []string, rpcMaxInboundConnections int, rpcAuth string, rpcCert string, rpcKey string) (server.Server, error) { gRPCServer := newGRPCServer(listeningAddresses, RPCMaxMessageSize, rpcMaxInboundConnections, "RPC", rpcAuth, rpcCert, rpcKey) rpcServer := &rpcServer{gRPCServer: *gRPCServer} protowire.RegisterRPCServer(gRPCServer.server, rpcServer) return rpcServer, nil } func (r *rpcServer) MessageStream(stream protowire.RPC_MessageStreamServer) error { defer panics.HandlePanic(log, "rpcServer.MessageStream", nil) return r.handleInboundConnection(stream.Context(), stream) }