From b237c39dbf6706599876acc8d98d55006454cba7 Mon Sep 17 00:00:00 2001 From: Jono Wenger <jono@elixxir.io> Date: Wed, 14 Sep 2022 09:02:40 -0700 Subject: [PATCH] Fix bindings channels comments --- bindings/channels.go | 236 ++++++++++++++++++++++--------------------- 1 file changed, 121 insertions(+), 115 deletions(-) diff --git a/bindings/channels.go b/bindings/channels.go index fd9306f2b..872512c34 100644 --- a/bindings/channels.go +++ b/bindings/channels.go @@ -42,21 +42,21 @@ type channelManagerTracker struct { mux sync.RWMutex } -// make create a ChannelsManager from an [channels.Manager], assigns it a -// unique ID, and adds it to the channelManagerTracker. +// make create a ChannelsManager from an [channels.Manager], assigns it a unique +// ID, and adds it to the channelManagerTracker. func (cmt *channelManagerTracker) make(c channels.Manager) *ChannelsManager { cmt.mux.Lock() defer cmt.mux.Unlock() - id := cmt.count + chID := cmt.count cmt.count++ - cmt.tracked[id] = &ChannelsManager{ + cmt.tracked[chID] = &ChannelsManager{ api: c, - id: id, + id: chID, } - return cmt.tracked[id] + return cmt.tracked[chID] } // get an ChannelsManager from the channelManagerTracker given its ID. @@ -98,13 +98,14 @@ func (cm *ChannelsManager) GetID() int { } // NewChannelsManager constructs a ChannelsManager. -// fixme: this is a work in progress and should not be used -// an event model is implemented in the style of the bindings layer's -// AuthCallbacks. Remove this note when that has been done. +// FIXME: This is a work in progress and should not be used an event model is +// implemented in the style of the bindings layer's AuthCallbacks. Remove this +// note when that has been done. // // Parameters: -// - e2eID - The tracked e2e object ID. This can be retrieved using [E2e.GetID]. -// - udID - The tracked UD object ID. This can be retrieved using +// - e2eID - The tracked e2e object ID. This can be retrieved using +// [E2e.GetID]. +// - udID - The tracked UD object ID. This can be retrieved using // [UserDiscovery.GetID]. func NewChannelsManager(e2eID, udID int) (*ChannelsManager, error) { // Get user from singleton @@ -176,11 +177,12 @@ func (cm *ChannelsManager) JoinChannel(channelJson []byte) error { // // Returns: // - []byte - A JSON marshalled list of IDs. -// JSON Example: -// { -// "U4x/lrFkvxuXu59LtHLon1sUhPJSCcnZND6SugndnVID", -// "15tNdkKbYXoMn58NO6VbDMDWFEyIhTWEGsvgcJsHWAgD" -// } +// +// JSON Example: +// { +// U4x/lrFkvxuXu59LtHLon1sUhPJSCcnZND6SugndnVID", +// "15tNdkKbYXoMn58NO6VbDMDWFEyIhTWEGsvgcJsHWAgD" +// } func (cm *ChannelsManager) GetChannels() ([]byte, error) { channelIds := cm.api.GetChannels() return json.Marshal(channelIds) @@ -196,8 +198,8 @@ func (cm *ChannelsManager) GetChannels() ([]byte, error) { // Returns: // - []byte - A JSON encoded channel ID ([id.ID]). // -// JSON Example: -// "dGVzdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD" +// JSON Example: +// "dGVzdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD" func (cm *ChannelsManager) GetChannelId(channelJson []byte) ([]byte, error) { def := ChannelDef{} err := json.Unmarshal(channelJson, &def) @@ -218,8 +220,9 @@ func (cm *ChannelsManager) GetChannelId(channelJson []byte) ([]byte, error) { // channel. // // Parameters: -// - []byte - A JSON marshalled channel ID ([id.ID]). This may be retrieved -// using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. +// // Returns: // - []byte - A JSON marshalled ChannelDef. func (cm *ChannelsManager) GetChannel(marshalledChanId []byte) ([]byte, error) { @@ -248,8 +251,8 @@ func (cm *ChannelsManager) GetChannel(marshalledChanId []byte) ([]byte, error) { // channel was not previously joined. // // Parameters: -// - []byte - A JSON marshalled channel ID ([id.ID]). This may be retrieved -// using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. func (cm *ChannelsManager) LeaveChannel(marshalledChanId []byte) error { // Unmarshal channel ID channelId, err := id.Unmarshal(marshalledChanId) @@ -265,8 +268,8 @@ func (cm *ChannelsManager) LeaveChannel(marshalledChanId []byte) error { // memory (~3 weeks) over the event model. // // Parameters: -// - []byte - A JSON marshalled channel ID ([id.ID]). This may be retrieved -// using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. func (cm *ChannelsManager) ReplayChannel(marshalledChanId []byte) error { // Unmarshal channel ID @@ -286,12 +289,12 @@ func (cm *ChannelsManager) ReplayChannel(marshalledChanId []byte) error { // ChannelSendReport is the bindings' representation of the return values of // ChannelsManager's Send operations. // -// JSON Example: -// { -// "MessageId": "0kitNxoFdsF4q1VMSI/xPzfCnGB2l+ln2+7CTHjHbJw=", -// "Rounds":[1,5,9], -// "EphId": 0 -// } +// JSON Example: +// { +// "MessageId": "0kitNxoFdsF4q1VMSI/xPzfCnGB2l+ln2+7CTHjHbJw=", +// "Rounds":[1,5,9], +// "EphId": 0 +// } type ChannelSendReport struct { MessageId []byte RoundsList @@ -299,28 +302,28 @@ type ChannelSendReport struct { } // SendGeneric is used to send a raw message over a channel. In general, it -// should be wrapped in a function which defines the wire protocol -// If the final message, before being sent over the wire, is too long, this will -// return an error. Due to the underlying encoding using compression, it isn't -// possible to define the largest payload that can be sent, but -// it will always be possible to send a payload of 802 bytes at minimum -// Them meaning of validUntil depends on the use case. +// should be wrapped in a function that defines the wire protocol. If the final +// message, before being sent over the wire, is too long, this will return an +// error. Due to the underlying encoding using compression, it isn't possible to +// define the largest payload that can be sent, but it will always be possible +// to send a payload of 802 bytes at minimum. The meaning of validUntil depends +// on the use case. // // Parameters: -// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may -// be retrieved using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. // - messageType - The message type of the message. This will be a valid // [channels.MessageType]. // - message - The contents of the message. This need not be of data type -// string, as the message could be a specified format that the channel -// may recognize. +// string, as the message could be a specified format that the channel may +// recognize. // - leaseTimeMS - The lease of the message. This will be how long the message -// is valid until, in MS. As per the channels.Manager +// is valid until, in milliseconds. As per the channels.Manager // documentation, this has different meanings depending on the use case. // These use cases may be generic enough that they will not be enumerated // here. -// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be -// empty, and GetDefaultCMixParams will be used internally. +// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be empty, +// and GetDefaultCMixParams will be used internally. // // Returns: // - []byte - A JSON marshalled ChannelSendReport. @@ -329,7 +332,8 @@ func (cm *ChannelsManager) SendGeneric(marshalledChanId []byte, cmixParamsJSON []byte) ([]byte, error) { // Unmarshal channel ID and parameters - chanId, params, err := parseChannelsParameters(marshalledChanId, cmixParamsJSON) + chanId, params, err := parseChannelsParameters( + marshalledChanId, cmixParamsJSON) if err != nil { return nil, err } @@ -346,28 +350,28 @@ func (cm *ChannelsManager) SendGeneric(marshalledChanId []byte, return constructChannelSendReport(chanMsgId, rndId, ephId) } -// SendAdminGeneric is used to send a raw message over a channel encrypted -// with admin keys, identifying it as sent by the admin. In general, it -// should be wrapped in a function which defines the wire protocol -// If the final message, before being sent over the wire, is too long, this will -// return an error. The message must be at most 510 bytes long. +// SendAdminGeneric is used to send a raw message over a channel encrypted with +// admin keys, identifying it as sent by the admin. In general, it should be +// wrapped in a function that defines the wire protocol. If the final message, +// before being sent over the wire, is too long, this will return an error. The +// message must be at most 510 bytes long. // // Parameters: -// - adminPrivateKey - The PEM-encoded admin's RSA private key. -// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may -// be retrieved using ChannelsManager.GetChannelId. +// - adminPrivateKey - The PEM-encoded admin RSA private key. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. // - messageType - The message type of the message. This will be a valid // [channels.MessageType]. // - message - The contents of the message. The message should be at most 510 // bytes. This need not be of data type string, as the message could be a // specified format that the channel may recognize. // - leaseTimeMS - The lease of the message. This will be how long the message -// is valid until, in MS. As per the channels.Manager +// is valid until, in milliseconds. As per the channels.Manager // documentation, this has different meanings depending on the use case. // These use cases may be generic enough that they will not be enumerated // here. -// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be -// empty, and GetDefaultCMixParams will be used internally. +// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be empty, +// and GetDefaultCMixParams will be used internally. // // Returns: // - []byte - A JSON marshalled ChannelSendReport. @@ -383,7 +387,8 @@ func (cm *ChannelsManager) SendAdminGeneric(adminPrivateKey, } // Unmarshal channel ID and parameters - chanId, params, err := parseChannelsParameters(marshalledChanId, cmixParamsJSON) + chanId, params, err := parseChannelsParameters( + marshalledChanId, cmixParamsJSON) if err != nil { return nil, err } @@ -398,20 +403,21 @@ func (cm *ChannelsManager) SendAdminGeneric(adminPrivateKey, } // SendMessage is used to send a formatted message over a channel. -// Due to the underlying encoding using compression, it isn't -// possible to define the largest payload that can be sent, but -// it will always be possible to send a payload of 798 bytes at minimum +// Due to the underlying encoding using compression, it isn't possible to define +// the largest payload that can be sent, but it will always be possible to send +// a payload of 798 bytes at minimum. +// // The message will auto delete validUntil after the round it is sent in, // lasting forever if [channels.ValidForever] is used. // // Parameters: -// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may -// be retrieved using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. // - message - The contents of the message. The message should be at most 510 // bytes. This is expected to be Unicode, and thus a string data type is // expected // - leaseTimeMS - The lease of the message. This will be how long the message -// is valid until, in MS. As per the channels.Manager +// is valid until, in milliseconds. As per the channels.Manager // documentation, this has different meanings depending on the use case. // These use cases may be generic enough that they will not be enumerated // here. @@ -424,7 +430,8 @@ func (cm *ChannelsManager) SendMessage(marshalledChanId []byte, message string, leaseTimeMS int64, cmixParamsJSON []byte) ([]byte, error) { // Unmarshal channel ID and parameters - chanId, params, err := parseChannelsParameters(marshalledChanId, cmixParamsJSON) + chanId, params, err := parseChannelsParameters( + marshalledChanId, cmixParamsJSON) if err != nil { return nil, err } @@ -441,32 +448,33 @@ func (cm *ChannelsManager) SendMessage(marshalledChanId []byte, } // SendReply is used to send a formatted message over a channel. -// Due to the underlying encoding using compression, it isn't -// possible to define the largest payload that can be sent, but -// it will always be possible to send a payload of 766 bytes at minimum. -// If the message ID the reply is sent to does not exist, the other side will -// post the message as a normal message and not a reply. +// Due to the underlying encoding using compression, it isn't possible to define +// the largest payload that can be sent, but it will always be possible to send +// a payload of 766 bytes at minimum. +// +// If the message ID the reply is sent to does not exist, then the other side +// will post the message as a normal message and not a reply. // The message will auto delete validUntil after the round it is sent in, // lasting forever if ValidForever is used. // // Parameters: -// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may -// be retrieved using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. // - message - The contents of the message. The message should be at most 510 // bytes. This is expected to be Unicode, and thus a string data type is // expected. -// - messageToReactTo - The marshalled [channel.MessageID] of the message -// you wish to reply to. This may be found in the ChannelSendReport if -// replying to your own. Alternatively, if reacting to another user's -// message, you may retrieve it via the ChannelMessageReceptionCallback -// registered using RegisterReceiveHandler. +// - messageToReactTo - The marshalled [channel.MessageID] of the message you +// wish to reply to. This may be found in the ChannelSendReport if replying +// to your own. Alternatively, if reacting to another user's message, you may +// retrieve it via the ChannelMessageReceptionCallback registered using +// RegisterReceiveHandler. // - leaseTimeMS - The lease of the message. This will be how long the message -// is valid until, in MS. As per the channels.Manager +// is valid until, in milliseconds. As per the channels.Manager // documentation, this has different meanings depending on the use case. // These use cases may be generic enough that they will not be enumerated // here. -// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be -// empty, and GetDefaultCMixParams will be used internally. +// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be empty, +// and GetDefaultCMixParams will be used internally. // // Returns: // - []byte - A JSON marshalled ChannelSendReport @@ -475,7 +483,8 @@ func (cm *ChannelsManager) SendReply(marshalledChanId []byte, cmixParamsJSON []byte) ([]byte, error) { // Unmarshal channel ID and parameters - chanId, params, err := parseChannelsParameters(marshalledChanId, cmixParamsJSON) + chanId, params, err := parseChannelsParameters( + marshalledChanId, cmixParamsJSON) if err != nil { return nil, err } @@ -501,31 +510,27 @@ func (cm *ChannelsManager) SendReply(marshalledChanId []byte, // Users will drop the reaction if they do not recognize the reactTo message. // // Parameters: -// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may -// be retrieved using ChannelsManager.GetChannelId. +// - marshalledChanId - A JSON marshalled channel ID ([id.ID]). This may be +// retrieved using ChannelsManager.GetChannelId. // - reaction - The user's reaction. This should be a single emoji with no // other characters. As such, a Unicode string is expected. -// - messageToReactTo - The marshalled [channel.MessageID] of the message -// you wish to reply to. This may be found in the ChannelSendReport if -// replying to your own. Alternatively, if reacting to another user's -// message, you may retrieve it via the ChannelMessageReceptionCallback -// registered using RegisterReceiveHandler. -// - leaseTimeMS - The lease of the message. This will be how long the message -// is valid until, in MS. As per the channels.Manager -// documentation, this has different meanings depending on the use case. -// These use cases may be generic enough that they will not be enumerated -// here. -// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be -// empty, and GetDefaultCMixParams will be used internally. +// - messageToReactTo - The marshalled [channel.MessageID] of the message you +// wish to reply to. This may be found in the ChannelSendReport if replying +// to your own. Alternatively, if reacting to another user's message, you may +// retrieve it via the ChannelMessageReceptionCallback registered using +// RegisterReceiveHandler. +// - cmixParamsJSON - A JSON marshalled [xxdk.CMIXParams]. This may be empty, +// and GetDefaultCMixParams will be used internally. // // Returns: -// - []byte - A JSON marshalled ChannelSendReport +// - []byte - A JSON marshalled ChannelSendReport. func (cm *ChannelsManager) SendReaction(marshalledChanId []byte, reaction string, messageToReactTo []byte, cmixParamsJSON []byte) ([]byte, error) { // Unmarshal channel ID and parameters - chanId, params, err := parseChannelsParameters(marshalledChanId, cmixParamsJSON) + chanId, params, err := parseChannelsParameters( + marshalledChanId, cmixParamsJSON) if err != nil { return nil, err } @@ -545,8 +550,8 @@ func (cm *ChannelsManager) SendReaction(marshalledChanId []byte, return constructChannelSendReport(chanMsgId, rndId, ephId) } -// parseChannelsParameters is a helper function for the Send functions. -// It parses the channel ID and the passed in parameters into their respective +// parseChannelsParameters is a helper function for the Send functions. It +// parses the channel ID and the passed in parameters into their respective // objects. These objects are passed into the API via the internal send // functions. func parseChannelsParameters(marshalledChanId, cmixParamsJSON []byte) ( @@ -582,25 +587,25 @@ func constructChannelSendReport(channelMessageId cryptoChannel.MessageID, } //////////////////////////////////////////////////////////////////////////////// -// Channel Receiving Logic & Callback Registration // +// Channel Receiving Logic and Callback Registration // //////////////////////////////////////////////////////////////////////////////// // ReceivedChannelMessageReport is a report structure returned via the -// ChannelMessageReceptionCallback. This report gives the context -// for the channel the message was sent to and the message itself. -// This is returned via the callback as JSON marshalled bytes. +// ChannelMessageReceptionCallback. This report gives the context for the +// channel the message was sent to and the message itself. This is returned via +// the callback as JSON marshalled bytes. // -// Example JSON: +// JSON Example: // { -// "ChannelId": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -// "MessageId": "3S6DiVjWH9mLmjy1oaam/3x45bJQzOW6u2KgeUn59wA=", -// "ReplyTo":"cxMyGUFJ+Ff1Xp2X+XkIpOnNAQEZmv8SNP5eYH4tCik=", -// "MessageType": 42, -// "SenderUsername": "hunter2", -// "Content": "YmFuX2JhZFVTZXI=", -// "Timestamp": 1662502150335283000, -// "Lease": 25, -// "Rounds": [ 1, 4, 9], +// "ChannelId": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", +// "MessageId": "3S6DiVjWH9mLmjy1oaam/3x45bJQzOW6u2KgeUn59wA=", +// "ReplyTo":"cxMyGUFJ+Ff1Xp2X+XkIpOnNAQEZmv8SNP5eYH4tCik=", +// "MessageType": 42, +// "SenderUsername": "hunter2", +// "Content": "YmFuX2JhZFVTZXI=", +// "Timestamp": 1662502150335283000, +// "Lease": 25, +// "Rounds": [ 1, 4, 9], // } type ReceivedChannelMessageReport struct { ChannelId []byte @@ -613,8 +618,8 @@ type ReceivedChannelMessageReport struct { RoundsList } -// ChannelMessageReceptionCallback is the callback that returns the -// context for a channel message via the Callback. +// ChannelMessageReceptionCallback is the callback that returns the context for +// a channel message via the Callback. type ChannelMessageReceptionCallback interface { Callback(receivedChannelMessageReport []byte, err error) } @@ -622,12 +627,13 @@ type ChannelMessageReceptionCallback interface { // RegisterReceiveHandler is used to register handlers for non-default message // types. They can be processed by modules. It is important that such modules // sync up with the event model implementation. +// // There can only be one handler per [channels.MessageType], and this will // return an error on any re-registration. // // Parameters: -// - messageType - represents the [channels.MessageType] which will -// have a registered listener +// - messageType - represents the [channels.MessageType] which will have a +// registered listener. // - listenerCb - the callback which will be executed when a channel message // of messageType is received. func (cm *ChannelsManager) RegisterReceiveHandler(messageType int, -- GitLab