Skip to content
Snippets Groups Projects
Commit d9d2c9dc authored by Jonah Husson's avatar Jonah Husson
Browse files

Properly thread params for single, restlikesingle and filetransfer

parent ef8e90f4
No related branches found
No related tags found
2 merge requests!510Release,!228New bindings for api2.0
...@@ -86,9 +86,8 @@ type FileTransferReceiveProgressCallback interface { ...@@ -86,9 +86,8 @@ type FileTransferReceiveProgressCallback interface {
/* Main functions */ /* Main functions */
// InitFileTransfer creates a bindings-level File Transfer manager // InitFileTransfer creates a bindings-level File Transfer manager
// Accepts client ID, ReceiveFileCallback and a ReporterFunc // Accepts e2e client ID and marshalled params JSON
func InitFileTransfer(e2eID int) (*FileTransfer, error) { func InitFileTransfer(e2eID int, paramsJSON []byte) (*FileTransfer, error) {
paramsJSON := GetDefaultFileTransferParams()
// Get bindings client from singleton // Get bindings client from singleton
e2eCl, err := e2eTrackerSingleton.get(e2eID) e2eCl, err := e2eTrackerSingleton.get(e2eID)
...@@ -120,9 +119,15 @@ func InitFileTransfer(e2eID int) (*FileTransfer, error) { ...@@ -120,9 +119,15 @@ func InitFileTransfer(e2eID int) (*FileTransfer, error) {
} }
// Send is the bindings-level function for sending a File // Send is the bindings-level function for sending a File
func (f *FileTransfer) Send(payload, recipientID []byte, retry float32, // Accepts:
// FileSend JSON payload
// Marshalled recipient ID
// Marshalled e2e Params JSON
// Number of retries allowed
// Limit on duration between retries
// FileTransferSentProgressCallback interface
func (f *FileTransfer) Send(payload, recipientID, paramsJSON []byte, retry float32,
period string, callback FileTransferSentProgressCallback) ([]byte, error) { period string, callback FileTransferSentProgressCallback) ([]byte, error) {
paramsJSON := GetDefaultE2EParams()
// Unmarshal recipient ID // Unmarshal recipient ID
recipient, err := id.Unmarshal(recipientID) recipient, err := id.Unmarshal(recipientID)
if err != nil { if err != nil {
...@@ -196,6 +201,12 @@ func (f *FileTransfer) CloseSend(tidBytes []byte) error { ...@@ -196,6 +201,12 @@ func (f *FileTransfer) CloseSend(tidBytes []byte) error {
/* Callback registration functions */ /* Callback registration functions */
// RegisterSentProgressCallback allows for the registration of a callback to
// track the progress of an individual sent file transfer.
// SentProgressCallback is auto registered on Send; this function should be
// called when resuming clients or registering extra callbacks.
// Accepts ID of the transfer, callback for transfer progress,
// and period between retries
func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte, func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
callback FileTransferSentProgressCallback, period string) error { callback FileTransferSentProgressCallback, period string) error {
cb := func(completed bool, arrived, total uint16, cb := func(completed bool, arrived, total uint16,
...@@ -218,6 +229,11 @@ func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte, ...@@ -218,6 +229,11 @@ func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
return f.ft.RegisterSentProgressCallback(&tid, cb, p) return f.ft.RegisterSentProgressCallback(&tid, cb, p)
} }
// RegisterReceivedProgressCallback allows for the registration of a
// callback to track the progress of an individual received file transfer.
// This should be done when a new transfer is received on the
// ReceiveCallback.
// Accepts ID of the transfer, callback for transfer progress and period between retries
func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte, callback FileTransferReceiveProgressCallback, period string) error { func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte, callback FileTransferReceiveProgressCallback, period string) error {
cb := func(completed bool, received, total uint16, cb := func(completed bool, received, total uint16,
rt fileTransfer.ReceivedTransfer, t fileTransfer.FilePartTracker, err error) { rt fileTransfer.ReceivedTransfer, t fileTransfer.FilePartTracker, err error) {
......
...@@ -13,14 +13,10 @@ type RestlikeCallback interface { ...@@ -13,14 +13,10 @@ type RestlikeCallback interface {
Callback([]byte, error) Callback([]byte, error)
} }
type RequestParams struct {
}
// RequestRestLike sends a restlike request to a given contact // RequestRestLike sends a restlike request to a given contact
// Accepts marshalled contact object as recipient, byte slice payload & headers, method enum and a URI // Accepts marshalled contact object as recipient, marshalled RestlikeMessage and params JSON
// Returns json marshalled restlike.Message & error // Returns json marshalled restlike.Message & error
func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) { func RequestRestLike(e2eID int, recipient, request, paramsJSON []byte) ([]byte, error) {
paramsJSON := GetDefaultSingleUseParams()
c, err := e2eTrackerSingleton.get(e2eID) c, err := e2eTrackerSingleton.get(e2eID)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -56,10 +52,11 @@ func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) { ...@@ -56,10 +52,11 @@ func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) {
} }
// AsyncRequestRestLike sends an asynchronous restlike request to a given contact // AsyncRequestRestLike sends an asynchronous restlike request to a given contact
// Accepts marshalled contact object as recipient, byte slice payload & headers, method enum, URI, and a RestlikeCallback // Accepts e2e client ID, marshalled contact object as recipient,
// Returns an error, and the RestlikeCallback will be called with the results of json marshalling the response when received // marshalled RestlikeMessage, marshalled Params json, and a RestlikeCallback
func AsyncRequestRestLike(e2eID int, recipient, request []byte, cb RestlikeCallback) error { // Returns an error, and the RestlikeCallback will be called with the results
paramsJSON := GetDefaultSingleUseParams() // of json marshalling the response when received
func AsyncRequestRestLike(e2eID int, recipient, request, paramsJSON []byte, cb RestlikeCallback) error {
c, err := e2eTrackerSingleton.get(e2eID) c, err := e2eTrackerSingleton.get(e2eID)
if err != nil { if err != nil {
return err return err
......
...@@ -11,10 +11,9 @@ import ( ...@@ -11,10 +11,9 @@ import (
/* PUBLIC WRAPPER METHODS */ /* PUBLIC WRAPPER METHODS */
// TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, SingleUseResponse callback func & a // TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, params JSON, SingleUseResponse callback func & a
// Client. Transmits payload to recipient via single use // Client. Transmits payload to recipient via single use
func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload []byte, responseCB SingleUseResponse) ([]byte, error) { func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload, paramsJSON []byte, responseCB SingleUseResponse) ([]byte, error) {
paramsJSON := GetDefaultSingleUseParams()
e2eCl, err := e2eTrackerSingleton.get(e2eID) e2eCl, err := e2eTrackerSingleton.get(e2eID)
if err != nil { if err != nil {
return nil, err return nil, err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment