Skip to content
Snippets Groups Projects
Commit 39971def authored by Jono Wenger's avatar Jono Wenger
Browse files

Make the wrapper take the group chat manager instead of creating it

parent 98dc8b1e
No related branches found
No related tags found
4 merge requests!510Release,!226WIP: Api2.0,!210XX-3880 / Generic File Transfer,!207WIP: Client Restructure
......@@ -8,26 +8,17 @@
package e2e
import (
"github.com/pkg/errors"
"gitlab.com/elixxir/client/catalog"
"gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/e2e/receive"
ft "gitlab.com/elixxir/client/fileTransfer2"
"gitlab.com/elixxir/client/stoppable"
"gitlab.com/elixxir/client/storage/versioned"
e2eCrypto "gitlab.com/elixxir/crypto/e2e"
"gitlab.com/elixxir/crypto/fastRNG"
ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/xx_network/primitives/id"
"time"
)
// Error messages.
const (
// NewManager
errNewFtManager = "cannot create new E2E file transfer manager: %+v"
)
// Manager handles the sending and receiving of file transfers using E2E
// messages to inform the recipient of incoming file transfers.
type Manager struct {
......@@ -52,18 +43,11 @@ type E2e interface {
}
// NewManager generates a new file transfer manager using E2E.
func NewManager(receiveCB ft.ReceiveCallback, params ft.Params, myID *id.ID,
e2e E2e, cmix ft.Cmix, kv *versioned.KV, rng *fastRNG.StreamGenerator) (
*Manager, error) {
ftManager, err := ft.NewManager(params, myID, cmix, kv, rng)
if err != nil {
return nil, errors.Errorf(errNewFtManager, err)
}
func NewManager(receiveCB ft.ReceiveCallback, ft ft.FileTransfer, myID *id.ID,
e2e E2e, cmix ft.Cmix) (*Manager, error) {
return &Manager{
receiveCB: receiveCB,
ft: ftManager,
ft: ft,
myID: myID,
cmix: cmix,
e2e: e2e,
......@@ -93,8 +77,8 @@ func (m *Manager) MaxPreviewSize() int {
return m.ft.MaxPreviewSize()
}
func (m *Manager) Send(fileName, fileType string, fileData []byte,
recipient *id.ID, retry float32, preview []byte,
func (m *Manager) Send(recipient *id.ID, fileName, fileType string,
fileData []byte, retry float32, preview []byte,
progressCB ft.SentProgressCallback, period time.Duration) (
*ftCrypto.TransferID, error) {
......@@ -104,7 +88,7 @@ func (m *Manager) Send(fileName, fileType string, fileData []byte,
modifiedProgressCB := m.addEndMessageToCallback(progressCB)
return m.ft.Send(fileName, fileType, fileData, recipient, retry, preview,
return m.ft.Send(recipient, fileName, fileType, fileData, retry, preview,
modifiedProgressCB, period, sendNew)
}
......
......@@ -61,8 +61,12 @@ func Test_FileTransfer_Smoke(t *testing.T) {
e2e1 := newMockE2e(myID1, e2eHandler)
e2e1.RegisterListener(
myID1, catalog.EndFileTransfer, newMockListener(endE2eChan1))
m1, err := NewManager(receiveCB1, params, myID1, e2e1,
newMockCmix(myID1, cMixHandler), kv1, rngGen)
cmix1 := newMockCmix(myID1, cMixHandler)
ftManager1, err := ft.NewManager(params, myID1, cmix1, kv1, rngGen)
if err != nil {
t.Errorf("Failed to make new file transfer manager: %+v", err)
}
m1, err := NewManager(receiveCB1, ftManager1, myID1, e2e1, cmix1)
if err != nil {
t.Errorf("Failed to create new file transfer manager 1: %+v", err)
}
......@@ -85,8 +89,12 @@ func Test_FileTransfer_Smoke(t *testing.T) {
e2e2 := newMockE2e(myID2, e2eHandler)
e2e2.RegisterListener(
myID2, catalog.EndFileTransfer, newMockListener(endE2eChan2))
m2, err := NewManager(receiveCB2, params, myID2, e2e2,
newMockCmix(myID2, cMixHandler), kv2, rngGen)
cmix2 := newMockCmix(myID1, cMixHandler)
ftManager2, err := ft.NewManager(params, myID2, cmix2, kv2, rngGen)
if err != nil {
t.Errorf("Failed to make new file transfer manager: %+v", err)
}
m2, err := NewManager(receiveCB2, ftManager2, myID2, e2e2, cmix2)
if err != nil {
t.Errorf("Failed to create new file transfer manager 2: %+v", err)
}
......@@ -156,7 +164,7 @@ func Test_FileTransfer_Smoke(t *testing.T) {
// Send file
sendStart := netTime.Now()
tid1, err := m1.Send(
fileName, fileType, fileData, myID2, retry, preview, sentProgressCb1, 0)
myID2, fileName, fileType, fileData, retry, preview, sentProgressCb1, 0)
if err != nil {
t.Errorf("Failed to send file: %+v", err)
}
......
......@@ -12,8 +12,6 @@ import (
ft "gitlab.com/elixxir/client/fileTransfer2"
"gitlab.com/elixxir/client/groupChat"
"gitlab.com/elixxir/client/stoppable"
"gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/crypto/fastRNG"
ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/elixxir/crypto/group"
"gitlab.com/xx_network/primitives/id"
......@@ -22,9 +20,6 @@ import (
// Error messages.
const (
// NewManager
errNewFtManager = "cannot create new group chat file transfer manager: %+v"
// Manager.StartProcesses
errAddNewService = "failed to add service to receive new group file transfers: %+v"
)
......@@ -47,9 +42,6 @@ type Manager struct {
// Group chat Manager
gc GroupChat
myID *id.ID
cmix ft.Cmix
}
// GroupChat interface matches a subset of the groupChat.GroupChat methods used
......@@ -61,21 +53,12 @@ type GroupChat interface {
}
// NewManager generates a new file transfer Manager for group chat.
func NewManager(receiveCB ft.ReceiveCallback, params ft.Params, myID *id.ID,
gc GroupChat, cmix ft.Cmix, kv *versioned.KV, rng *fastRNG.StreamGenerator) (
func NewManager(receiveCB ft.ReceiveCallback, ft ft.FileTransfer, gc GroupChat) (
*Manager, error) {
ftManager, err := ft.NewManager(params, myID, cmix, kv, rng)
if err != nil {
return nil, errors.Errorf(errNewFtManager, err)
}
return &Manager{
receiveCB: receiveCB,
ft: ftManager,
ft: ft,
gc: gc,
myID: myID,
cmix: cmix,
}, nil
}
......@@ -104,14 +87,15 @@ func (m *Manager) MaxPreviewSize() int {
return m.ft.MaxPreviewSize()
}
func (m *Manager) Send(fileName, fileType string, fileData []byte,
recipient *id.ID, retry float32, preview []byte,
progressCB ft.SentProgressCallback, period time.Duration) (*ftCrypto.TransferID, error) {
func (m *Manager) Send(groupID *id.ID, fileName, fileType string,
fileData []byte, retry float32, preview []byte,
progressCB ft.SentProgressCallback, period time.Duration) (
*ftCrypto.TransferID, error) {
sendNew := func(info *ft.TransferInfo) error {
return sendNewFileTransferMessage(recipient, info, m.gc)
return sendNewFileTransferMessage(groupID, info, m.gc)
}
return m.ft.Send(fileName, fileType, fileData, recipient, retry, preview,
return m.ft.Send(groupID, fileName, fileType, fileData, retry, preview,
progressCB, period, sendNew)
}
......
......@@ -9,7 +9,6 @@ package groupChat
import (
"bytes"
"gitlab.com/elixxir/client/e2e/receive"
ft "gitlab.com/elixxir/client/fileTransfer2"
"gitlab.com/elixxir/client/groupChat"
"gitlab.com/elixxir/client/storage/versioned"
......@@ -48,17 +47,12 @@ func Test_FileTransfer_Smoke(t *testing.T) {
}
// Set up the first client
receiveCbChan1 := make(chan receiveCbValues, 10)
receiveCB1 := func(tid *ftCrypto.TransferID, fileName, fileType string,
sender *id.ID, size uint32, preview []byte) {
receiveCbChan1 <- receiveCbValues{
tid, fileName, fileType, sender, size, preview}
}
myID1 := id.NewIdFromString("myID1", id.User, t)
kv1 := versioned.NewKV(ekv.MakeMemstore())
gc1 := newMockGC(gcHandler)
m1, err := NewManager(receiveCB1, params, myID1, gc1,
newMockCmix(myID1, cMixHandler), kv1, rngGen)
ftManager1, err := ft.NewManager(
params, myID1, newMockCmix(myID1, cMixHandler), kv1, rngGen)
m1, err := NewManager(nil, ftManager1, gc1)
if err != nil {
t.Errorf("Failed to create new file transfer manager 1: %+v", err)
}
......@@ -77,10 +71,10 @@ func Test_FileTransfer_Smoke(t *testing.T) {
}
myID2 := id.NewIdFromString("myID2", id.User, t)
kv2 := versioned.NewKV(ekv.MakeMemstore())
endE2eChan2 := make(chan receive.Message, 3)
gc2 := newMockGC(gcHandler) /**/
m2, err := NewManager(receiveCB2, params, myID2, gc2,
newMockCmix(myID2, cMixHandler), kv2, rngGen)
gc2 := newMockGC(gcHandler)
ftManager2, err := ft.NewManager(
params, myID2, newMockCmix(myID2, cMixHandler), kv2, rngGen)
m2, err := NewManager(receiveCB2, ftManager2, gc2)
if err != nil {
t.Errorf("Failed to create new file transfer manager 2: %+v", err)
}
......@@ -150,7 +144,7 @@ func Test_FileTransfer_Smoke(t *testing.T) {
// Send file
sendStart := netTime.Now()
tid1, err := m1.Send(
fileName, fileType, fileData, myID2, retry, preview, sentProgressCb1, 0)
myID2, fileName, fileType, fileData, retry, preview, sentProgressCb1, 0)
if err != nil {
t.Errorf("Failed to send file: %+v", err)
}
......@@ -170,12 +164,6 @@ func Test_FileTransfer_Smoke(t *testing.T) {
// Wait for file to be sent and received
wg.Wait()
select {
case <-endE2eChan2:
case <-time.After(15 * time.Millisecond):
t.Errorf("Timed out waiting for end file transfer message.")
}
err = m1.CloseSend(tid1)
if err != nil {
t.Errorf("Failed to close transfer: %+v", err)
......
......@@ -82,13 +82,13 @@ type FileTransfer interface {
// In-progress transfers are restored when closing and reopening; however, a
// SentProgressCallback must be registered again.
//
// recipient - ID of the receiver of the file transfer. The sender must
// have an E2E relationship with the recipient.
// fileName - Human-readable file name. Max length defined by
// MaxFileNameLen.
// fileType - Shorthand that identifies the type of file. Max length
// defined by MaxFileTypeLen.
// fileData - File contents. Max size defined by MaxFileSize.
// recipient - ID of the receiver of the file transfer. The sender must
// have an E2E relationship with the recipient.
// retry - The number of sending retries allowed on send failure (e.g.
// a retry of 2.0 with 6 parts means 12 total possible sends).
// preview - A preview of the file data (e.g. a thumbnail). Max size
......@@ -100,7 +100,7 @@ type FileTransfer interface {
// per period.
// sendNew - Function that sends the file transfer information to the
// recipient.
Send(fileName, fileType string, fileData []byte, recipient *id.ID,
Send(recipient *id.ID, fileName, fileType string, fileData []byte,
retry float32, preview []byte, progressCB SentProgressCallback,
period time.Duration, sendNew SendNew) (*ftCrypto.TransferID, error)
......
......@@ -230,8 +230,8 @@ func (m *manager) MaxPreviewSize() int {
// Send partitions the given file into cMix message sized chunks and sends them
// via cmix.SendMany.
func (m *manager) Send(fileName, fileType string, fileData []byte,
recipient *id.ID, retry float32, preview []byte,
func (m *manager) Send(recipient *id.ID, fileName, fileType string,
fileData []byte, retry float32, preview []byte,
progressCB SentProgressCallback, period time.Duration, sendNew SendNew) (
*ftCrypto.TransferID, error) {
......
......@@ -184,7 +184,7 @@ func Test_FileTransfer_Smoke(t *testing.T) {
// Send file.
sendStart := netTime.Now()
tid1, err := m1.Send(fileName, fileType, fileData, myID2, retry, preview,
tid1, err := m1.Send(myID2, fileName, fileType, fileData, retry, preview,
sentProgressCb1, 0, sendNewCb1)
if err != nil {
t.Errorf("Failed to send file: %+v", err)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment