Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
client
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
client
Commits
36869de9
Commit
36869de9
authored
2 years ago
by
Jonah Husson
Browse files
Options
Downloads
Patches
Plain Diff
Use e2e wrapper in file transfer bindings
parent
e6a4f347
No related branches found
No related tags found
2 merge requests
!510
Release
,
!286
Use e2e wrapper in file transfer bindings
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
bindings/fileTransfer.go
+38
-27
38 additions, 27 deletions
bindings/fileTransfer.go
bindings/params.go
+18
-0
18 additions, 0 deletions
bindings/params.go
with
56 additions
and
27 deletions
bindings/fileTransfer.go
+
38
−
27
View file @
36869de9
...
...
@@ -11,9 +11,8 @@ import (
"encoding/json"
"time"
jww
"github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/catalog"
"gitlab.com/elixxir/client/fileTransfer"
"gitlab.com/elixxir/client/fileTransfer/e2e"
ftCrypto
"gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/xx_network/primitives/id"
)
...
...
@@ -25,8 +24,7 @@ import (
// FileTransfer object is a bindings-layer struct which wraps a
// fileTransfer.FileTransfer interface.
type
FileTransfer
struct
{
ft
fileTransfer
.
FileTransfer
e2eCl
*
E2e
w
*
e2e
.
Wrapper
}
// ReceivedFile is a public struct that contains the metadata of a new file
...
...
@@ -127,7 +125,7 @@ type FileTransferReceiveProgressCallback interface {
// Parameters:
// - e2eID - e2e object ID in the tracker
// - paramsJSON - JSON marshalled fileTransfer.Params
func
InitFileTransfer
(
e2eID
int
,
paramsJSON
[]
byte
)
(
*
FileTransfer
,
error
)
{
func
InitFileTransfer
(
e2eID
int
,
receiveFileCallback
ReceiveFileCallback
,
e2eFileTransferParamsJson
,
fileTransferParamsJson
[]
byte
)
(
*
FileTransfer
,
error
)
{
// Get messenger from singleton
messenger
,
err
:=
e2eTrackerSingleton
.
get
(
e2eID
)
...
...
@@ -139,15 +137,37 @@ func InitFileTransfer(e2eID int, paramsJSON []byte) (*FileTransfer, error) {
myID
:=
messenger
.
api
.
GetReceptionIdentity
()
.
ID
rng
:=
messenger
.
api
.
GetRng
()
params
,
err
:=
parseFileTransferParams
(
paramsJSON
)
e2eFileTransferParams
,
err
:=
parseE2eFileTransferParams
(
e2eFileTransferParamsJson
)
if
err
!=
nil
{
return
nil
,
err
}
fileTransferParams
,
err
:=
parseFileTransferParams
(
fileTransferParamsJson
)
if
err
!=
nil
{
return
nil
,
err
}
// Create file transfer manager
m
,
err
:=
fileTransfer
.
NewManager
(
p
arams
,
myID
,
m
,
err
:=
fileTransfer
.
NewManager
(
fileTransferP
arams
,
myID
,
messenger
.
api
.
GetCmix
(),
messenger
.
api
.
GetStorage
(),
rng
)
rcb
:=
func
(
tid
*
ftCrypto
.
TransferID
,
fileName
,
fileType
string
,
sender
*
id
.
ID
,
size
uint32
,
preview
[]
byte
)
{
receiveFileCallback
.
Callback
(
json
.
Marshal
(
ReceivedFile
{
TransferID
:
tid
.
Bytes
(),
SenderID
:
sender
.
Marshal
(),
Preview
:
preview
,
Name
:
fileName
,
Type
:
fileType
,
Size
:
int
(
size
),
}))
}
w
,
err
:=
e2e
.
NewWrapper
(
rcb
,
e2eFileTransferParams
,
m
,
myID
,
messenger
.
api
.
GetE2E
(),
messenger
.
api
.
GetCmix
())
if
err
!=
nil
{
return
nil
,
err
}
// Add file transfer processes to client services tracking
err
=
messenger
.
api
.
AddService
(
m
.
StartProcesses
)
if
err
!=
nil
{
...
...
@@ -155,7 +175,7 @@ func InitFileTransfer(e2eID int, paramsJSON []byte) (*FileTransfer, error) {
}
// Return wrapped manager
return
&
FileTransfer
{
ft
:
m
,
e2eCl
:
messenger
},
nil
return
&
FileTransfer
{
w
:
w
},
nil
}
// Send is the bindings-level function for sending a file.
...
...
@@ -170,7 +190,7 @@ func InitFileTransfer(e2eID int, paramsJSON []byte) (*FileTransfer, error) {
//
// Returns:
// - []byte - unique file transfer ID
func
(
f
*
FileTransfer
)
Send
(
payload
,
recipientID
,
paramsJSON
[]
byte
,
retry
float32
,
func
(
f
*
FileTransfer
)
Send
(
payload
,
recipientID
[]
byte
,
retry
float32
,
callback
FileTransferSentProgressCallback
,
period
string
)
([]
byte
,
error
)
{
// Unmarshal recipient ID
recipient
,
err
:=
id
.
Unmarshal
(
recipientID
)
...
...
@@ -201,17 +221,8 @@ func (f *FileTransfer) Send(payload, recipientID, paramsJSON []byte, retry float
return
nil
,
err
}
sendNew
:=
func
(
transferInfo
[]
byte
)
error
{
resp
,
err
:=
f
.
e2eCl
.
SendE2E
(
int
(
catalog
.
NewFileTransfer
),
recipientID
,
transferInfo
,
paramsJSON
)
if
err
!=
nil
{
return
err
}
jww
.
INFO
.
Printf
(
"New file transfer message sent: %s"
,
resp
)
return
nil
}
// Send file
ftID
,
err
:=
f
.
ft
.
Send
(
recipient
,
fs
.
Name
,
fs
.
Type
,
fs
.
Contents
,
retry
,
fs
.
Preview
,
cb
,
p
,
sendNew
)
ftID
,
err
:=
f
.
w
.
Send
(
recipient
,
fs
.
Name
,
fs
.
Type
,
fs
.
Contents
,
retry
,
fs
.
Preview
,
cb
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -232,7 +243,7 @@ func (f *FileTransfer) Send(payload, recipientID, paramsJSON []byte, retry float
// - tidBytes - file transfer ID
func
(
f
*
FileTransfer
)
Receive
(
tidBytes
[]
byte
)
([]
byte
,
error
)
{
tid
:=
ftCrypto
.
UnmarshalTransferID
(
tidBytes
)
return
f
.
ft
.
Receive
(
&
tid
)
return
f
.
w
.
Receive
(
&
tid
)
}
// CloseSend deletes a file from the internal storage once a transfer has
...
...
@@ -246,7 +257,7 @@ func (f *FileTransfer) Receive(tidBytes []byte) ([]byte, error) {
// - tidBytes - file transfer ID
func
(
f
*
FileTransfer
)
CloseSend
(
tidBytes
[]
byte
)
error
{
tid
:=
ftCrypto
.
UnmarshalTransferID
(
tidBytes
)
return
f
.
ft
.
CloseSend
(
&
tid
)
return
f
.
w
.
CloseSend
(
&
tid
)
}
////////////////////////////////////////////////////////////////////////////////
...
...
@@ -282,7 +293,7 @@ func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
}
tid
:=
ftCrypto
.
UnmarshalTransferID
(
tidBytes
)
return
f
.
ft
.
RegisterSentProgressCallback
(
&
tid
,
cb
,
p
)
return
f
.
w
.
RegisterSentProgressCallback
(
&
tid
,
cb
,
p
)
}
// RegisterReceivedProgressCallback allows for the registration of a callback to
...
...
@@ -312,7 +323,7 @@ func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte,
return
err
}
tid
:=
ftCrypto
.
UnmarshalTransferID
(
tidBytes
)
return
f
.
ft
.
RegisterReceivedProgressCallback
(
&
tid
,
cb
,
p
)
return
f
.
w
.
RegisterReceivedProgressCallback
(
&
tid
,
cb
,
p
)
}
////////////////////////////////////////////////////////////////////////////////
...
...
@@ -321,22 +332,22 @@ func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte,
// MaxFileNameLen returns the max number of bytes allowed for a file name.
func
(
f
*
FileTransfer
)
MaxFileNameLen
()
int
{
return
f
.
ft
.
MaxFileNameLen
()
return
f
.
w
.
MaxFileNameLen
()
}
// MaxFileTypeLen returns the max number of bytes allowed for a file type.
func
(
f
*
FileTransfer
)
MaxFileTypeLen
()
int
{
return
f
.
ft
.
MaxFileTypeLen
()
return
f
.
w
.
MaxFileTypeLen
()
}
// MaxFileSize returns the max number of bytes allowed for a file.
func
(
f
*
FileTransfer
)
MaxFileSize
()
int
{
return
f
.
ft
.
MaxFileSize
()
return
f
.
w
.
MaxFileSize
()
}
// MaxPreviewSize returns the max number of bytes allowed for a file preview.
func
(
f
*
FileTransfer
)
MaxPreviewSize
()
int
{
return
f
.
ft
.
MaxPreviewSize
()
return
f
.
w
.
MaxPreviewSize
()
}
////////////////////////////////////////////////////////////////////////////////
...
...
This diff is collapsed.
Click to expand it.
bindings/params.go
+
18
−
0
View file @
36869de9
...
...
@@ -12,6 +12,7 @@ package bindings
import
(
jww
"github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/fileTransfer"
e2eFileTransfer
"gitlab.com/elixxir/client/fileTransfer/e2e"
"gitlab.com/elixxir/client/single"
"gitlab.com/elixxir/client/xxdk"
)
...
...
@@ -64,6 +65,23 @@ func GetDefaultSingleUseParams() []byte {
return
data
}
// GetDefaultE2eFileTransferParams returns a JSON serialized object with all the
// e2e file transfer parameters and their default values. Call this function and modify
// the JSON to change single use settings.
func
GetDefaultE2eFileTransferParams
()
[]
byte
{
defaultParams
:=
e2eFileTransfer
.
DefaultParams
()
data
,
err
:=
defaultParams
.
MarshalJSON
()
if
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to JSON marshal e2e file transfer params: %+v"
,
err
)
}
return
data
}
func
parseE2eFileTransferParams
(
data
[]
byte
)
(
e2eFileTransfer
.
Params
,
error
)
{
p
:=
&
e2eFileTransfer
.
Params
{}
return
*
p
,
p
.
UnmarshalJSON
(
data
)
}
func
parseSingleUseParams
(
data
[]
byte
)
(
single
.
RequestParams
,
error
)
{
p
:=
&
single
.
RequestParams
{}
return
*
p
,
p
.
UnmarshalJSON
(
data
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment