Skip to content
Snippets Groups Projects
Commit ce711549 authored by Jake Taylor's avatar Jake Taylor :lips:
Browse files

Merge branch 'XX-4188/NotificationsBindings' into 'release'

Add documentation

See merge request !442
parents 3135a3e1 e42c8421
No related branches found
No related tags found
2 merge requests!510Release,!442Add documentation
...@@ -106,6 +106,7 @@ func (c *Cmix) ReadyToSend() bool { ...@@ -106,6 +106,7 @@ func (c *Cmix) ReadyToSend() bool {
// is to being ready. // is to being ready.
// //
// Example JSON: // Example JSON:
//
// { // {
// "IsReady": true, // "IsReady": true,
// "HowClose": 0.534 // "HowClose": 0.534
...@@ -117,6 +118,7 @@ type IsReadyInfo struct { ...@@ -117,6 +118,7 @@ type IsReadyInfo struct {
// NetworkFollowerStatus gets the state of the network follower. It returns a // NetworkFollowerStatus gets the state of the network follower. It returns a
// status with the following values: // status with the following values:
//
// Stopped - 0 // Stopped - 0
// Running - 2000 // Running - 2000
// Stopping - 3000 // Stopping - 3000
...@@ -215,6 +217,7 @@ func (c *Cmix) IsHealthy() bool { ...@@ -215,6 +217,7 @@ func (c *Cmix) IsHealthy() bool {
// - []byte - A JSON marshalled list of all running processes. // - []byte - A JSON marshalled list of all running processes.
// //
// JSON Example: // JSON Example:
//
// { // {
// "FileTransfer{BatchBuilderThread, FilePartSendingThread#0, FilePartSendingThread#1, FilePartSendingThread#2, FilePartSendingThread#3}", // "FileTransfer{BatchBuilderThread, FilePartSendingThread#0, FilePartSendingThread#1, FilePartSendingThread#2, FilePartSendingThread#3}",
// "MessageReception Worker 0" // "MessageReception Worker 0"
...@@ -267,6 +270,7 @@ func (c *Cmix) RegisterClientErrorCallback(clientError ClientError) { ...@@ -267,6 +270,7 @@ func (c *Cmix) RegisterClientErrorCallback(clientError ClientError) {
// - err - JSON unmarshalling error // - err - JSON unmarshalling error
// //
// Example JSON: // Example JSON:
//
// [ // [
// { // {
// "Id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD", // bytes of id.ID encoded as base64 string // "Id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD", // bytes of id.ID encoded as base64 string
...@@ -293,10 +297,38 @@ type TrackServicesCallback interface { ...@@ -293,10 +297,38 @@ type TrackServicesCallback interface {
Callback(marshalData []byte, err error) Callback(marshalData []byte, err error)
} }
// TrackServicesWithIdentity will return via a callback the list of services the
// backend keeps track of for the provided identity. This may be passed into
// other bindings call which may need context on the available services for this
// single identity. This will only return services for the given identity.
//
// Parameters:
// - e2eID - e2e object ID in the tracker.
// - cb - A TrackServicesCallback, which will be passed the marshalled
// message.ServiceList.
func (c *Cmix) TrackServicesWithIdentity(e2eId int,
cb TrackServicesCallback) error {
// Retrieve the user from the tracker
user, err := e2eTrackerSingleton.get(e2eId)
if err != nil {
return err
}
receptionId := user.api.GetReceptionIdentity().ID
c.api.GetCmix().TrackServices(func(list message.ServiceList) {
res := make(message.ServiceList)
res[*receptionId] = list[*receptionId]
cb.Callback(json.Marshal(res))
})
return nil
}
// TrackServices will return via a callback the list of services the // TrackServices will return via a callback the list of services the
// backend keeps track of, which is formally referred to as a // backend keeps track of, which is formally referred to as a
// [message.ServiceList]. This may be passed into other bindings call which // [message.ServiceList]. This may be passed into other bindings call which
// may need context on the available services for this client. // may need context on the available services for this client. This will
// provide services for all identities that the client tracks.
// //
// Parameters: // Parameters:
// - cb - A TrackServicesCallback, which will be passed the marshalled // - cb - A TrackServicesCallback, which will be passed the marshalled
......
...@@ -17,6 +17,7 @@ import ( ...@@ -17,6 +17,7 @@ import (
// via GetNotificationsReport as a JSON marshalled byte data. // via GetNotificationsReport as a JSON marshalled byte data.
// //
// Example JSON: // Example JSON:
//
// [ // [
// { // {
// "ForMe": true, // boolean // "ForMe": true, // boolean
...@@ -44,6 +45,7 @@ type NotificationReports []NotificationReport ...@@ -44,6 +45,7 @@ type NotificationReports []NotificationReport
// this user. // this user.
// //
// Example NotificationReport JSON: // Example NotificationReport JSON:
//
// { // {
// "ForMe": true, // "ForMe": true,
// "Type": "e2e", // "Type": "e2e",
...@@ -80,33 +82,27 @@ type NotificationReport struct { ...@@ -80,33 +82,27 @@ type NotificationReport struct {
// NotificationReports. // NotificationReports.
// //
// Parameters: // Parameters:
// - e2eID - e2e object ID in the tracker
// - notificationCSV - the notification data received from the // - notificationCSV - the notification data received from the
// notifications' server. // notifications' server.
// - marshalledServices - the JSON-marshalled list of services the backend // - marshalledServices - the JSON-marshalled list of services the backend
// keeps track of. Refer to Cmix.TrackServices for information about this. // keeps track of. Refer to Cmix.TrackServices or
// Cmix.TrackServicesWithIdentity for information about this.
// //
// Returns: // Returns:
// - []byte - A JSON marshalled NotificationReports. Some NotificationReport's // - []byte - A JSON marshalled NotificationReports. Some NotificationReport's
// within in this structure may have their NotificationReport.ForMe // within in this structure may have their NotificationReport.ForMe
// set to false. These may be ignored. // set to false. These may be ignored.
func GetNotificationsReport(e2eId int, notificationCSV string, func GetNotificationsReport(notificationCSV string,
marshalledServices []byte) ([]byte, error) { marshalledServices []byte) ([]byte, error) {
// Retrieve user
user, err := e2eTrackerSingleton.get(e2eId)
if err != nil {
return nil, err
}
// If services are retrieved using TrackServicesWithIdentity, this
// should return a single list.
serviceList := message.ServiceList{} serviceList := message.ServiceList{}
err = json.Unmarshal(marshalledServices, &serviceList) err := json.Unmarshal(marshalledServices, &serviceList)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Retrieve the services for this user
services := serviceList[*user.api.GetReceptionIdentity().ID]
// Decode notifications' server data // Decode notifications' server data
notificationList, err := notifications.DecodeNotificationsCSV(notificationCSV) notificationList, err := notifications.DecodeNotificationsCSV(notificationCSV)
if err != nil { if err != nil {
...@@ -117,6 +113,7 @@ func GetNotificationsReport(e2eId int, notificationCSV string, ...@@ -117,6 +113,7 @@ func GetNotificationsReport(e2eId int, notificationCSV string,
reportList := make([]*NotificationReport, len(notificationList)) reportList := make([]*NotificationReport, len(notificationList))
// Iterate over data provided by server // Iterate over data provided by server
for _, services := range serviceList {
for i := range notificationList { for i := range notificationList {
notifData := notificationList[i] notifData := notificationList[i]
...@@ -139,6 +136,7 @@ func GetNotificationsReport(e2eId int, notificationCSV string, ...@@ -139,6 +136,7 @@ func GetNotificationsReport(e2eId int, notificationCSV string,
} }
} }
} }
}
return json.Marshal(reportList) return json.Marshal(reportList)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment