Documentation ¶
Overview ¶
Package comm consists of set of helper communication related functions used by both client and server.
Index ¶
- func HandleVks(log *logging.Logger, vks []*coconut.VerificationKey, ...) ([]*coconut.VerificationKey, *coconut.PolynomialPoints, error)
- func LogAndReturnError(log *logging.Logger, fmtString string, a ...interface{}) error
- func ParseVerificationKeyResponses(responses []*ServerResponse, isThreshold bool, log *logging.Logger) ([]*coconut.VerificationKey, *coconut.PolynomialPoints)
- func ReadPacketFromConn(conn net.Conn) (*packet.Packet, error)
- func ResolveServerRequest(cmd commands.Command, resCh chan *commands.Response, log *logging.Logger, ...) proto.Message
- func SendServerRequests(ctx context.Context, responseCh chan<- *ServerResponse, maxReqs int, ...) chan<- *ServerRequest
- func ValidateIDs(log *logging.Logger, pp *coconut.PolynomialPoints, isThreshold bool) (map[int]bool, error)
- func WaitForServerResponses(ctx context.Context, responseCh <-chan *ServerResponse, ...)
- type RequestParams
- type ServerMetadata
- type ServerRequest
- type ServerRequestGrpc
- type ServerResponse
- type ServerResponseGrpc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HandleVks ¶
func HandleVks(log *logging.Logger, vks []*coconut.VerificationKey, pp *coconut.PolynomialPoints, threshold int, ) ([]*coconut.VerificationKey, *coconut.PolynomialPoints, error)
FIXME: nolint: gocyclo
func LogAndReturnError ¶
func ParseVerificationKeyResponses ¶
func ParseVerificationKeyResponses(responses []*ServerResponse, isThreshold bool, log *logging.Logger, ) ([]*coconut.VerificationKey, *coconut.PolynomialPoints)
ParseVerificationKeyResponses takes a slice containing ServerResponses with marshalled verification keys and processes it accordingly to threshold system parameter.
func ReadPacketFromConn ¶
ReadPacketFromConn reads all data from a given connection and unmarshals it into a packet instance. TODO: rewrite this function (alongside bunch of other code...)
func ResolveServerRequest ¶
func ResolveServerRequest(cmd commands.Command, resCh chan *commands.Response, log *logging.Logger, requestTimeout int, provReady bool, ) proto.Message
ResolveServerRequest awaits for a response from a cryptoworker and acts on it appropriately adding relevant metadata. nolint: gocyclo TODO: FIXME: currently it is only used by an outdated (and without actual support for new functions) grpclistener
func SendServerRequests ¶
func SendServerRequests(ctx context.Context, responseCh chan<- *ServerResponse, maxReqs int, log *logging.Logger, connectionTimeout time.Duration, ) chan<- *ServerRequest
SendServerRequests starts set of goroutines sending requests on TCP sockets to particular servers. Number of goroutines is limited by maxReqs argument. It returns the channel to write the requests to. errcheck is ignored to make it not complain about not checking for err in conn.Close() nolint: errcheck
func ValidateIDs ¶
func WaitForServerResponses ¶
func WaitForServerResponses(ctx context.Context, responseCh <-chan *ServerResponse, responses []*ServerResponse, log *logging.Logger, )
WaitForServerResponses is responsible for keeping track of request statuses and possible timeouts if some requests fail to resolve in given time period. TODO: return error on timeout
Types ¶
type RequestParams ¶
type RequestParams struct { MarshaledPacket []byte MaxRequests int ConnectionTimeout time.Duration ServerAddresses []string }
RequestParams encapsulates all information required by GetServerResponses including server addresses and all timeout values.
type ServerMetadata ¶
type ServerMetadata struct {
Address string
}
ServerMetadata encapsulates all server-related information passed in each request and response.
type ServerRequest ¶
type ServerRequest struct { MarshaledData []byte // it's just a marshalled packet, but is kept generic in case the implementation changes ServerMetadata *ServerMetadata }
ServerRequest represents raw data sent to a particular server as well as the associated metadata when the request is sent on a TCP socket.
type ServerRequestGrpc ¶
type ServerRequestGrpc struct { Message proto.Message ServerMetadata *ServerMetadata }
ServerRequestGrpc represents raw data sent to a particular server as well as the associated metadata when the request is sent as a gRPC request.
type ServerResponse ¶
type ServerResponse struct { MarshaledData []byte ServerMetadata *ServerMetadata }
ServerResponse represents raw data returned from a particular server as well as the associated metadata when the request was sent on a TCP socket.
func GetServerResponses ¶
func GetServerResponses(ctx context.Context, requestParams *RequestParams, log *logging.Logger) []*ServerResponse
GetServerResponses writes requests to all server specified in the params according to the set params. func GetServerResponses(packet []byte, maxR int, connT int, reqT int, addrs []string, ids []int) []*ServerResponse { TODO: return error on timeout
type ServerResponseGrpc ¶
type ServerResponseGrpc struct { Message proto.Message ServerMetadata *ServerMetadata }
ServerResponseGrpc represents raw data returned from a particular server as well as the associated metadata when the request was sent as a gRPC request.
Directories ¶
Path | Synopsis |
---|---|
Package commands define command types used by coconut server.
|
Package commands define command types used by coconut server. |
Package packet defines packet structure that is sent on the wire between multiple entities
|
Package packet defines packet structure that is sent on the wire between multiple entities |