Svarog 4a4dca1926
[NOD-1118] Implement gRPC basic connectivity (#790)
* [NOD-1118] Added protobufs for the MessageStream

* [NOD-1118] Implement some of the basic grpc methods

* [NOD-1118] Implemented gRPCConnection send and receive

* [NOD-1118] Implemented basic connection loops

* [NOD-1118] gRPC server implementation ready

* [NOD-1118] Add connection management

* [NOD-1118] Sort out the connection loops

* [NOD-1118] Add temporary testConnection

* [NOD-1118] Send to c.errChan whether error was recieved or not

* [NOD-1118] Call OnConnectHandler in time

* [NOD-1118] Handle closing connections properly

* [NOD-1118] Add comments to exported functions

* [NOD-1118] Call server.addConnection on newConnection

* [NOD-1118] Add a TODO comment

* [NOD-1118] Add a TODO comment

* [NOD-1118] Make connection a Stringer

* [NOD-1118] Made the connection loops 100% synchronic

* [NOD-1118] Make connection.isConnected uint32

* [NOD-1118] Move the Add/Remove connection from grpcConnection to register/unregister connection

* [NOD-1118] Convert error messages to lower case

* [NOD-1118] Remove protoc inline dependency

* [NOD-1118] Fix comment

* [NOD-1118] Exit if there was an error starting the protocol manager

* [NOD-1118] Fix error message

* [NOD-1118] Fixed a few comments

* [NOD-1118] Extract listenOn to a method

* [NOD-1118] Use !=0 for isConnected

* [NOD-1118] Refactor listenOn

* [NOD-1118] Add lock on channelWrites in gRPCConnection

* [NOD-1118] Rename channelWriteLock -> writeDuringDisconnectLock

* [NOD-1118] Reshuffle a comment

* [NOD-1118] Add a TODO comment
2020-07-12 15:22:49 +03:00

123 lines
3.2 KiB
Go

// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
package protowire
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// P2PClient is the client API for P2P service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type P2PClient interface {
MessageStream(ctx context.Context, opts ...grpc.CallOption) (P2P_MessageStreamClient, error)
}
type p2PClient struct {
cc grpc.ClientConnInterface
}
func NewP2PClient(cc grpc.ClientConnInterface) P2PClient {
return &p2PClient{cc}
}
func (c *p2PClient) MessageStream(ctx context.Context, opts ...grpc.CallOption) (P2P_MessageStreamClient, error) {
stream, err := c.cc.NewStream(ctx, &_P2P_serviceDesc.Streams[0], "/protowire.P2P/MessageStream", opts...)
if err != nil {
return nil, err
}
x := &p2PMessageStreamClient{stream}
return x, nil
}
type P2P_MessageStreamClient interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ClientStream
}
type p2PMessageStreamClient struct {
grpc.ClientStream
}
func (x *p2PMessageStreamClient) Send(m *KaspadMessage) error {
return x.ClientStream.SendMsg(m)
}
func (x *p2PMessageStreamClient) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// P2PServer is the server API for P2P service.
// All implementations must embed UnimplementedP2PServer
// for forward compatibility
type P2PServer interface {
MessageStream(P2P_MessageStreamServer) error
mustEmbedUnimplementedP2PServer()
}
// UnimplementedP2PServer must be embedded to have forward compatible implementations.
type UnimplementedP2PServer struct {
}
func (*UnimplementedP2PServer) MessageStream(P2P_MessageStreamServer) error {
return status.Errorf(codes.Unimplemented, "method MessageStream not implemented")
}
func (*UnimplementedP2PServer) mustEmbedUnimplementedP2PServer() {}
func RegisterP2PServer(s *grpc.Server, srv P2PServer) {
s.RegisterService(&_P2P_serviceDesc, srv)
}
func _P2P_MessageStream_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(P2PServer).MessageStream(&p2PMessageStreamServer{stream})
}
type P2P_MessageStreamServer interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ServerStream
}
type p2PMessageStreamServer struct {
grpc.ServerStream
}
func (x *p2PMessageStreamServer) Send(m *KaspadMessage) error {
return x.ServerStream.SendMsg(m)
}
func (x *p2PMessageStreamServer) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
var _P2P_serviceDesc = grpc.ServiceDesc{
ServiceName: "protowire.P2P",
HandlerType: (*P2PServer)(nil),
Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "MessageStream",
Handler: _P2P_MessageStream_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: "messages.proto",
}