mirror of
https://github.com/octoleo/syncthing.git
synced 2025-01-03 07:12:27 +00:00
wip
This commit is contained in:
parent
b64fbdd1c1
commit
5912f32a34
@ -33,7 +33,7 @@ func newFakeConnection(id protocol.DeviceID, model Model) *fakeConnection {
|
||||
f.RequestCalls(func(ctx context.Context, folder, name string, blockNo int, offset int64, size int, hash []byte, weakHash uint32, fromTemporary bool) ([]byte, error) {
|
||||
return f.fileData[name], nil
|
||||
})
|
||||
f.IDReturns(id)
|
||||
f.DeviceIDReturns(id)
|
||||
f.ConnectionIDReturns(rand.String(16))
|
||||
f.CloseCalls(func(err error) {
|
||||
f.closeOnce.Do(func() {
|
||||
|
@ -56,10 +56,10 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f
|
||||
// the IndexID, or something else weird has
|
||||
// happened. We send a full index to reset the
|
||||
// situation.
|
||||
l.Infof("Device %v folder %s is delta index compatible, but seems out of sync with reality", conn.ID().Short(), folder.Description())
|
||||
l.Infof("Device %v folder %s is delta index compatible, but seems out of sync with reality", conn.DeviceID().Short(), folder.Description())
|
||||
startSequence = 0
|
||||
} else {
|
||||
l.Debugf("Device %v folder %s is delta index compatible (mlv=%d)", conn.ID().Short(), folder.Description(), startInfo.local.MaxSequence)
|
||||
l.Debugf("Device %v folder %s is delta index compatible (mlv=%d)", conn.DeviceID().Short(), folder.Description(), startInfo.local.MaxSequence)
|
||||
startSequence = startInfo.local.MaxSequence
|
||||
}
|
||||
} else if startInfo.local.IndexID != 0 {
|
||||
@ -67,10 +67,10 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f
|
||||
// not the right one. Either they are confused or we
|
||||
// must have reset our database since last talking to
|
||||
// them. We'll start with a full index transfer.
|
||||
l.Infof("Device %v folder %s has mismatching index ID for us (%v != %v)", conn.ID().Short(), folder.Description(), startInfo.local.IndexID, myIndexID)
|
||||
l.Infof("Device %v folder %s has mismatching index ID for us (%v != %v)", conn.DeviceID().Short(), folder.Description(), startInfo.local.IndexID, myIndexID)
|
||||
startSequence = 0
|
||||
} else {
|
||||
l.Debugf("Device %v folder %s has no index ID for us", conn.ID().Short(), folder.Description())
|
||||
l.Debugf("Device %v folder %s has no index ID for us", conn.DeviceID().Short(), folder.Description())
|
||||
}
|
||||
|
||||
// This is the other side's description of themselves. We
|
||||
@ -78,23 +78,23 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f
|
||||
// otherwise we drop our old index data and expect to get a
|
||||
// completely new set.
|
||||
|
||||
theirIndexID := fset.IndexID(conn.ID())
|
||||
theirIndexID := fset.IndexID(conn.DeviceID())
|
||||
if startInfo.remote.IndexID == 0 {
|
||||
// They're not announcing an index ID. This means they
|
||||
// do not support delta indexes and we should clear any
|
||||
// information we have from them before accepting their
|
||||
// index, which will presumably be a full index.
|
||||
l.Debugf("Device %v folder %s does not announce an index ID", conn.ID().Short(), folder.Description())
|
||||
fset.Drop(conn.ID())
|
||||
l.Debugf("Device %v folder %s does not announce an index ID", conn.DeviceID().Short(), folder.Description())
|
||||
fset.Drop(conn.DeviceID())
|
||||
} else if startInfo.remote.IndexID != theirIndexID {
|
||||
// The index ID we have on file is not what they're
|
||||
// announcing. They must have reset their database and
|
||||
// will probably send us a full index. We drop any
|
||||
// information we have and remember this new index ID
|
||||
// instead.
|
||||
l.Infof("Device %v folder %s has a new index ID (%v)", conn.ID().Short(), folder.Description(), startInfo.remote.IndexID)
|
||||
fset.Drop(conn.ID())
|
||||
fset.SetIndexID(conn.ID(), startInfo.remote.IndexID)
|
||||
l.Infof("Device %v folder %s has a new index ID (%v)", conn.DeviceID().Short(), folder.Description(), startInfo.remote.IndexID)
|
||||
fset.Drop(conn.DeviceID())
|
||||
fset.SetIndexID(conn.DeviceID(), startInfo.remote.IndexID)
|
||||
}
|
||||
|
||||
return &indexHandler{
|
||||
@ -129,12 +129,12 @@ func (s *indexHandler) waitForFileset(ctx context.Context) (*db.FileSet, error)
|
||||
}
|
||||
|
||||
func (s *indexHandler) Serve(ctx context.Context) (err error) {
|
||||
l.Infof("Starting index handler for %s to %s at %s (slv=%d)", s.folder, s.conn.ID().Short(), s.conn, s.prevSequence)
|
||||
l.Infof("Starting index handler for %s to %s at %s (slv=%d)", s.folder, s.conn.DeviceID().Short(), s.conn, s.prevSequence)
|
||||
stop := make(chan struct{})
|
||||
|
||||
defer func() {
|
||||
err = svcutil.NoRestartErr(err)
|
||||
l.Infof("Exiting index handler for %s to %s at %s: %v", s.folder, s.conn.ID().Short(), s.conn, err)
|
||||
l.Infof("Exiting index handler for %s to %s at %s: %v", s.folder, s.conn.DeviceID().Short(), s.conn, err)
|
||||
close(stop)
|
||||
}()
|
||||
|
||||
@ -320,7 +320,7 @@ func (s *indexHandler) sendIndexTo(ctx context.Context, fset *db.FileSet) error
|
||||
}
|
||||
|
||||
func (s *indexHandler) receive(fs []protocol.FileInfo, update bool, op string) error {
|
||||
deviceID := s.conn.ID()
|
||||
deviceID := s.conn.DeviceID()
|
||||
|
||||
s.cond.L.Lock()
|
||||
paused := s.paused
|
||||
@ -381,7 +381,7 @@ func prepareFileInfoForIndex(f protocol.FileInfo) protocol.FileInfo {
|
||||
}
|
||||
|
||||
func (s *indexHandler) String() string {
|
||||
return fmt.Sprintf("indexHandler@%p for %s to %s at %s", s, s.folder, s.conn.ID().Short(), s.conn)
|
||||
return fmt.Sprintf("indexHandler@%p for %s to %s at %s", s, s.folder, s.conn.DeviceID().Short(), s.conn)
|
||||
}
|
||||
|
||||
type indexHandlerRegistry struct {
|
||||
@ -426,7 +426,7 @@ func newIndexHandlerRegistry(conn protocol.Connection, downloads *deviceDownload
|
||||
}
|
||||
|
||||
func (r *indexHandlerRegistry) String() string {
|
||||
return fmt.Sprintf("indexHandlerRegistry/%v", r.conn.ID().Short())
|
||||
return fmt.Sprintf("indexHandlerRegistry/%v", r.conn.DeviceID().Short())
|
||||
}
|
||||
|
||||
func (r *indexHandlerRegistry) GetSupervisor() *suture.Supervisor {
|
||||
@ -459,11 +459,11 @@ func (r *indexHandlerRegistry) AddIndexInfo(folder string, startInfo *clusterCon
|
||||
if is, ok := r.indexHandlers[folder]; ok {
|
||||
r.sup.RemoveAndWait(is.token, 0)
|
||||
delete(r.indexHandlers, folder)
|
||||
l.Debugf("Removed index sender for device %v and folder %v due to added pending", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Removed index sender for device %v and folder %v due to added pending", r.conn.DeviceID().Short(), folder)
|
||||
}
|
||||
folderState, ok := r.folderStates[folder]
|
||||
if !ok {
|
||||
l.Debugf("Pending index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Pending index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
r.startInfos[folder] = startInfo
|
||||
return
|
||||
}
|
||||
@ -476,13 +476,13 @@ func (r *indexHandlerRegistry) Remove(folder string) {
|
||||
r.mut.Lock()
|
||||
defer r.mut.Unlock()
|
||||
|
||||
l.Debugf("Removing index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Removing index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
if is, ok := r.indexHandlers[folder]; ok {
|
||||
r.sup.RemoveAndWait(is.token, 0)
|
||||
delete(r.indexHandlers, folder)
|
||||
}
|
||||
delete(r.startInfos, folder)
|
||||
l.Debugf("Removed index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Removed index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
}
|
||||
|
||||
// RemoveAllExcept stops all running index handlers and removes those pending to be started,
|
||||
@ -496,13 +496,13 @@ func (r *indexHandlerRegistry) RemoveAllExcept(except map[string]remoteFolderSta
|
||||
if _, ok := except[folder]; !ok {
|
||||
r.sup.RemoveAndWait(is.token, 0)
|
||||
delete(r.indexHandlers, folder)
|
||||
l.Debugf("Removed index handler for device %v and folder %v (removeAllExcept)", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Removed index handler for device %v and folder %v (removeAllExcept)", r.conn.DeviceID().Short(), folder)
|
||||
}
|
||||
}
|
||||
for folder := range r.startInfos {
|
||||
if _, ok := except[folder]; !ok {
|
||||
delete(r.startInfos, folder)
|
||||
l.Debugf("Removed pending index handler for device %v and folder %v (removeAllExcept)", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Removed pending index handler for device %v and folder %v (removeAllExcept)", r.conn.DeviceID().Short(), folder)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -511,7 +511,7 @@ func (r *indexHandlerRegistry) RemoveAllExcept(except map[string]remoteFolderSta
|
||||
// changes. The exception being if the folder is removed entirely, then call
|
||||
// Remove. The fset and runner arguments may be nil, if given folder is paused.
|
||||
func (r *indexHandlerRegistry) RegisterFolderState(folder config.FolderConfiguration, fset *db.FileSet, runner service) {
|
||||
if !folder.SharedWith(r.conn.ID()) {
|
||||
if !folder.SharedWith(r.conn.DeviceID()) {
|
||||
r.Remove(folder.ID)
|
||||
return
|
||||
}
|
||||
@ -528,13 +528,13 @@ func (r *indexHandlerRegistry) RegisterFolderState(folder config.FolderConfigura
|
||||
// folderPausedLocked stops a running index handler.
|
||||
// It is a noop if the folder isn't known or has not been started yet.
|
||||
func (r *indexHandlerRegistry) folderPausedLocked(folder string) {
|
||||
l.Debugf("Pausing index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Pausing index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
delete(r.folderStates, folder)
|
||||
if is, ok := r.indexHandlers[folder]; ok {
|
||||
is.pause()
|
||||
l.Debugf("Paused index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Paused index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
} else {
|
||||
l.Debugf("No index handler for device %v and folder %v to pause", r.conn.ID().Short(), folder)
|
||||
l.Debugf("No index handler for device %v and folder %v to pause", r.conn.DeviceID().Short(), folder)
|
||||
}
|
||||
}
|
||||
|
||||
@ -553,16 +553,16 @@ func (r *indexHandlerRegistry) folderRunningLocked(folder config.FolderConfigura
|
||||
if isOk {
|
||||
r.sup.RemoveAndWait(is.token, 0)
|
||||
delete(r.indexHandlers, folder.ID)
|
||||
l.Debugf("Removed index handler for device %v and folder %v in resume", r.conn.ID().Short(), folder.ID)
|
||||
l.Debugf("Removed index handler for device %v and folder %v in resume", r.conn.DeviceID().Short(), folder.ID)
|
||||
}
|
||||
r.startLocked(folder, fset, runner, info)
|
||||
delete(r.startInfos, folder.ID)
|
||||
l.Debugf("Started index handler for device %v and folder %v in resume", r.conn.ID().Short(), folder.ID)
|
||||
l.Debugf("Started index handler for device %v and folder %v in resume", r.conn.DeviceID().Short(), folder.ID)
|
||||
} else if isOk {
|
||||
l.Debugf("Resuming index handler for device %v and folder %v", r.conn.ID().Short(), folder)
|
||||
l.Debugf("Resuming index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder)
|
||||
is.resume(fset, runner)
|
||||
} else {
|
||||
l.Debugf("Not resuming index handler for device %v and folder %v as none is paused and there is no start info", r.conn.ID().Short(), folder.ID)
|
||||
l.Debugf("Not resuming index handler for device %v and folder %v as none is paused and there is no start info", r.conn.DeviceID().Short(), folder.ID)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1181,7 +1181,7 @@ func (m *model) handleIndex(conn protocol.Connection, folder string, fs []protoc
|
||||
op += " update"
|
||||
}
|
||||
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
l.Debugf("%v (in): %s / %q: %d files", op, deviceID, folder, len(fs))
|
||||
|
||||
if cfg, ok := m.cfg.Folder(folder); !ok || !cfg.SharedWith(deviceID) {
|
||||
@ -1216,7 +1216,7 @@ func (m *model) ClusterConfig(conn protocol.Connection, cm protocol.ClusterConfi
|
||||
// Also, collect a list of folders we do share, and if he's interested in
|
||||
// temporary indexes, subscribe the connection.
|
||||
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
connID := conn.ConnectionID()
|
||||
l.Debugf("Handling ClusterConfig from %v/%s", deviceID.Short(), connID)
|
||||
|
||||
@ -1342,7 +1342,7 @@ func (m *model) ClusterConfig(conn protocol.Connection, cm protocol.ClusterConfi
|
||||
}
|
||||
|
||||
func (m *model) ensureIndexHandler(conn protocol.Connection) *indexHandlerRegistry {
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
connID := conn.ConnectionID()
|
||||
|
||||
m.pmut.Lock()
|
||||
@ -1629,7 +1629,7 @@ func (m *model) sendClusterConfig(ids []protocol.DeviceID) {
|
||||
m.pmut.RUnlock()
|
||||
// Generating cluster-configs acquires fmut -> must happen outside of pmut.
|
||||
for _, conn := range ccConns {
|
||||
cm, passwords := m.generateClusterConfig(conn.ID())
|
||||
cm, passwords := m.generateClusterConfig(conn.DeviceID())
|
||||
conn.SetFolderPasswords(passwords)
|
||||
go conn.ClusterConfig(cm)
|
||||
}
|
||||
@ -1861,7 +1861,7 @@ func (m *model) introduceDevice(device protocol.Device, introducerCfg config.Dev
|
||||
// Closed is called when a connection has been closed
|
||||
func (m *model) Closed(conn protocol.Connection, err error) {
|
||||
connID := conn.ConnectionID()
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
|
||||
m.pmut.Lock()
|
||||
conn, ok := m.conns[connID]
|
||||
@ -1948,7 +1948,7 @@ func (m *model) Request(conn protocol.Connection, folder, name string, _, size i
|
||||
return nil, protocol.ErrInvalid
|
||||
}
|
||||
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
connID := conn.ConnectionID()
|
||||
|
||||
m.fmut.RLock()
|
||||
@ -2330,7 +2330,7 @@ func (m *model) GetHello(id protocol.DeviceID) protocol.HelloIntf {
|
||||
// be sent to the connected peer, thereafter index updates whenever the local
|
||||
// folder changes.
|
||||
func (m *model) AddConnection(conn protocol.Connection, hello protocol.Hello) {
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
|
||||
deviceCfg, ok := m.cfg.Device(deviceID)
|
||||
if !ok {
|
||||
@ -2435,7 +2435,7 @@ func (m *model) promoteConnections() {
|
||||
}
|
||||
|
||||
func (m *model) DownloadProgress(conn protocol.Connection, folder string, updates []protocol.FileDownloadProgressUpdate) error {
|
||||
deviceID := conn.ID()
|
||||
deviceID := conn.DeviceID()
|
||||
|
||||
m.fmut.RLock()
|
||||
cfg, ok := m.folderCfgs[folder]
|
||||
|
@ -1338,7 +1338,7 @@ func TestAutoAcceptEnc(t *testing.T) {
|
||||
// would panic.
|
||||
clusterConfig := func(deviceID protocol.DeviceID, cm protocol.ClusterConfig) {
|
||||
m.AddConnection(newFakeConnection(deviceID, m), protocol.Hello{})
|
||||
m.ClusterConfig(&protocolmocks.Connection{IDStub: func() protocol.DeviceID { return deviceID }}, cm)
|
||||
m.ClusterConfig(&protocolmocks.Connection{DeviceIDStub: func() protocol.DeviceID { return deviceID }}, cm)
|
||||
}
|
||||
|
||||
clusterConfig(device1, basicCC())
|
||||
|
@ -315,15 +315,15 @@ func (t *ProgressEmitter) emptyLocked() bool {
|
||||
func (t *ProgressEmitter) temporaryIndexSubscribe(conn protocol.Connection, folders []string) {
|
||||
t.mut.Lock()
|
||||
defer t.mut.Unlock()
|
||||
t.connections[conn.ID()] = conn
|
||||
t.foldersByConns[conn.ID()] = folders
|
||||
t.connections[conn.DeviceID()] = conn
|
||||
t.foldersByConns[conn.DeviceID()] = folders
|
||||
}
|
||||
|
||||
func (t *ProgressEmitter) temporaryIndexUnsubscribe(conn protocol.Connection) {
|
||||
t.mut.Lock()
|
||||
defer t.mut.Unlock()
|
||||
delete(t.connections, conn.ID())
|
||||
delete(t.foldersByConns, conn.ID())
|
||||
delete(t.connections, conn.DeviceID())
|
||||
delete(t.foldersByConns, conn.DeviceID())
|
||||
}
|
||||
|
||||
func (t *ProgressEmitter) clearLocked() {
|
||||
|
@ -463,7 +463,7 @@ func TestSendDownloadProgressMessages(t *testing.T) {
|
||||
p.temporaryIndexUnsubscribe(fc)
|
||||
|
||||
sendMsgs(p)
|
||||
_, ok := p.sentDownloadStates[fc.ID()]
|
||||
_, ok := p.sentDownloadStates[fc.DeviceID()]
|
||||
if ok {
|
||||
t.Error("Should not be there")
|
||||
}
|
||||
|
@ -38,9 +38,9 @@ func init() {
|
||||
myID, _ = protocol.DeviceIDFromString("ZNWFSWE-RWRV2BD-45BLMCV-LTDE2UR-4LJDW6J-R5BPWEB-TXD27XJ-IZF5RA4")
|
||||
device1, _ = protocol.DeviceIDFromString("AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR")
|
||||
device2, _ = protocol.DeviceIDFromString("GYRZZQB-IRNPV4Z-T7TC52W-EQYJ3TT-FDQW6MW-DFLMU42-SSSU6EM-FBK2VAY")
|
||||
device1Conn.IDReturns(device1)
|
||||
device1Conn.DeviceIDReturns(device1)
|
||||
device1Conn.ConnectionIDReturns(rand.String(16))
|
||||
device2Conn.IDReturns(device2)
|
||||
device2Conn.DeviceIDReturns(device2)
|
||||
device2Conn.ConnectionIDReturns(rand.String(16))
|
||||
|
||||
cfg := config.New(myID)
|
||||
|
@ -185,8 +185,8 @@ func (e encryptedConnection) SetFolderPasswords(passwords map[string]string) {
|
||||
e.folderKeys.setPasswords(passwords)
|
||||
}
|
||||
|
||||
func (e encryptedConnection) ID() DeviceID {
|
||||
return e.conn.ID()
|
||||
func (e encryptedConnection) DeviceID() DeviceID {
|
||||
return e.conn.DeviceID()
|
||||
}
|
||||
|
||||
func (e encryptedConnection) Index(ctx context.Context, folder string, files []FileInfo) error {
|
||||
|
@ -51,6 +51,16 @@ type Connection struct {
|
||||
cryptoReturnsOnCall map[int]struct {
|
||||
result1 string
|
||||
}
|
||||
DeviceIDStub func() protocol.DeviceID
|
||||
deviceIDMutex sync.RWMutex
|
||||
deviceIDArgsForCall []struct {
|
||||
}
|
||||
deviceIDReturns struct {
|
||||
result1 protocol.DeviceID
|
||||
}
|
||||
deviceIDReturnsOnCall map[int]struct {
|
||||
result1 protocol.DeviceID
|
||||
}
|
||||
DownloadProgressStub func(context.Context, string, []protocol.FileDownloadProgressUpdate)
|
||||
downloadProgressMutex sync.RWMutex
|
||||
downloadProgressArgsForCall []struct {
|
||||
@ -68,16 +78,6 @@ type Connection struct {
|
||||
establishedAtReturnsOnCall map[int]struct {
|
||||
result1 time.Time
|
||||
}
|
||||
IDStub func() protocol.DeviceID
|
||||
iDMutex sync.RWMutex
|
||||
iDArgsForCall []struct {
|
||||
}
|
||||
iDReturns struct {
|
||||
result1 protocol.DeviceID
|
||||
}
|
||||
iDReturnsOnCall map[int]struct {
|
||||
result1 protocol.DeviceID
|
||||
}
|
||||
IndexStub func(context.Context, string, []protocol.FileInfo) error
|
||||
indexMutex sync.RWMutex
|
||||
indexArgsForCall []struct {
|
||||
@ -431,6 +431,59 @@ func (fake *Connection) CryptoReturnsOnCall(i int, result1 string) {
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) DeviceID() protocol.DeviceID {
|
||||
fake.deviceIDMutex.Lock()
|
||||
ret, specificReturn := fake.deviceIDReturnsOnCall[len(fake.deviceIDArgsForCall)]
|
||||
fake.deviceIDArgsForCall = append(fake.deviceIDArgsForCall, struct {
|
||||
}{})
|
||||
stub := fake.DeviceIDStub
|
||||
fakeReturns := fake.deviceIDReturns
|
||||
fake.recordInvocation("DeviceID", []interface{}{})
|
||||
fake.deviceIDMutex.Unlock()
|
||||
if stub != nil {
|
||||
return stub()
|
||||
}
|
||||
if specificReturn {
|
||||
return ret.result1
|
||||
}
|
||||
return fakeReturns.result1
|
||||
}
|
||||
|
||||
func (fake *Connection) DeviceIDCallCount() int {
|
||||
fake.deviceIDMutex.RLock()
|
||||
defer fake.deviceIDMutex.RUnlock()
|
||||
return len(fake.deviceIDArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *Connection) DeviceIDCalls(stub func() protocol.DeviceID) {
|
||||
fake.deviceIDMutex.Lock()
|
||||
defer fake.deviceIDMutex.Unlock()
|
||||
fake.DeviceIDStub = stub
|
||||
}
|
||||
|
||||
func (fake *Connection) DeviceIDReturns(result1 protocol.DeviceID) {
|
||||
fake.deviceIDMutex.Lock()
|
||||
defer fake.deviceIDMutex.Unlock()
|
||||
fake.DeviceIDStub = nil
|
||||
fake.deviceIDReturns = struct {
|
||||
result1 protocol.DeviceID
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) DeviceIDReturnsOnCall(i int, result1 protocol.DeviceID) {
|
||||
fake.deviceIDMutex.Lock()
|
||||
defer fake.deviceIDMutex.Unlock()
|
||||
fake.DeviceIDStub = nil
|
||||
if fake.deviceIDReturnsOnCall == nil {
|
||||
fake.deviceIDReturnsOnCall = make(map[int]struct {
|
||||
result1 protocol.DeviceID
|
||||
})
|
||||
}
|
||||
fake.deviceIDReturnsOnCall[i] = struct {
|
||||
result1 protocol.DeviceID
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) DownloadProgress(arg1 context.Context, arg2 string, arg3 []protocol.FileDownloadProgressUpdate) {
|
||||
var arg3Copy []protocol.FileDownloadProgressUpdate
|
||||
if arg3 != nil {
|
||||
@ -523,59 +576,6 @@ func (fake *Connection) EstablishedAtReturnsOnCall(i int, result1 time.Time) {
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) ID() protocol.DeviceID {
|
||||
fake.iDMutex.Lock()
|
||||
ret, specificReturn := fake.iDReturnsOnCall[len(fake.iDArgsForCall)]
|
||||
fake.iDArgsForCall = append(fake.iDArgsForCall, struct {
|
||||
}{})
|
||||
stub := fake.IDStub
|
||||
fakeReturns := fake.iDReturns
|
||||
fake.recordInvocation("ID", []interface{}{})
|
||||
fake.iDMutex.Unlock()
|
||||
if stub != nil {
|
||||
return stub()
|
||||
}
|
||||
if specificReturn {
|
||||
return ret.result1
|
||||
}
|
||||
return fakeReturns.result1
|
||||
}
|
||||
|
||||
func (fake *Connection) IDCallCount() int {
|
||||
fake.iDMutex.RLock()
|
||||
defer fake.iDMutex.RUnlock()
|
||||
return len(fake.iDArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *Connection) IDCalls(stub func() protocol.DeviceID) {
|
||||
fake.iDMutex.Lock()
|
||||
defer fake.iDMutex.Unlock()
|
||||
fake.IDStub = stub
|
||||
}
|
||||
|
||||
func (fake *Connection) IDReturns(result1 protocol.DeviceID) {
|
||||
fake.iDMutex.Lock()
|
||||
defer fake.iDMutex.Unlock()
|
||||
fake.IDStub = nil
|
||||
fake.iDReturns = struct {
|
||||
result1 protocol.DeviceID
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) IDReturnsOnCall(i int, result1 protocol.DeviceID) {
|
||||
fake.iDMutex.Lock()
|
||||
defer fake.iDMutex.Unlock()
|
||||
fake.IDStub = nil
|
||||
if fake.iDReturnsOnCall == nil {
|
||||
fake.iDReturnsOnCall = make(map[int]struct {
|
||||
result1 protocol.DeviceID
|
||||
})
|
||||
}
|
||||
fake.iDReturnsOnCall[i] = struct {
|
||||
result1 protocol.DeviceID
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *Connection) Index(arg1 context.Context, arg2 string, arg3 []protocol.FileInfo) error {
|
||||
var arg3Copy []protocol.FileInfo
|
||||
if arg3 != nil {
|
||||
@ -1229,12 +1229,12 @@ func (fake *Connection) Invocations() map[string][][]interface{} {
|
||||
defer fake.connectionIDMutex.RUnlock()
|
||||
fake.cryptoMutex.RLock()
|
||||
defer fake.cryptoMutex.RUnlock()
|
||||
fake.deviceIDMutex.RLock()
|
||||
defer fake.deviceIDMutex.RUnlock()
|
||||
fake.downloadProgressMutex.RLock()
|
||||
defer fake.downloadProgressMutex.RUnlock()
|
||||
fake.establishedAtMutex.RLock()
|
||||
defer fake.establishedAtMutex.RUnlock()
|
||||
fake.iDMutex.RLock()
|
||||
defer fake.iDMutex.RUnlock()
|
||||
fake.indexMutex.RLock()
|
||||
defer fake.indexMutex.RUnlock()
|
||||
fake.indexUpdateMutex.RLock()
|
||||
|
@ -161,7 +161,7 @@ type Connection interface {
|
||||
Start()
|
||||
SetFolderPasswords(passwords map[string]string)
|
||||
Close(err error)
|
||||
ID() DeviceID
|
||||
DeviceID() DeviceID
|
||||
Index(ctx context.Context, folder string, files []FileInfo) error
|
||||
IndexUpdate(ctx context.Context, folder string, files []FileInfo) error
|
||||
Request(ctx context.Context, folder string, name string, blockNo int, offset int64, size int, hash []byte, weakHash uint32, fromTemporary bool) ([]byte, error)
|
||||
@ -187,7 +187,7 @@ type ConnectionInfo interface {
|
||||
type rawConnection struct {
|
||||
ConnectionInfo
|
||||
|
||||
id DeviceID
|
||||
deviceID DeviceID
|
||||
model contextLessModel
|
||||
startTime time.Time
|
||||
|
||||
@ -273,7 +273,7 @@ func newRawConnection(deviceID DeviceID, reader io.Reader, writer io.Writer, clo
|
||||
|
||||
return &rawConnection{
|
||||
ConnectionInfo: connInfo,
|
||||
id: deviceID,
|
||||
deviceID: deviceID,
|
||||
model: receiver,
|
||||
cr: cr,
|
||||
cw: cw,
|
||||
@ -318,8 +318,8 @@ func (c *rawConnection) Start() {
|
||||
c.startTime = time.Now().Truncate(time.Second)
|
||||
}
|
||||
|
||||
func (c *rawConnection) ID() DeviceID {
|
||||
return c.id
|
||||
func (c *rawConnection) DeviceID() DeviceID {
|
||||
return c.deviceID
|
||||
}
|
||||
|
||||
// Index writes the list of file information to the connected peer device
|
||||
@ -602,12 +602,12 @@ func (c *rawConnection) readHeader(fourByteBuf []byte) (Header, error) {
|
||||
}
|
||||
|
||||
func (c *rawConnection) handleIndex(im Index) error {
|
||||
l.Debugf("Index(%v, %v, %d file)", c.id, im.Folder, len(im.Files))
|
||||
l.Debugf("Index(%v, %v, %d file)", c.deviceID, im.Folder, len(im.Files))
|
||||
return c.model.Index(im.Folder, im.Files)
|
||||
}
|
||||
|
||||
func (c *rawConnection) handleIndexUpdate(im IndexUpdate) error {
|
||||
l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Folder, len(im.Files))
|
||||
l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.deviceID, im.Folder, len(im.Files))
|
||||
return c.model.IndexUpdate(im.Folder, im.Files)
|
||||
}
|
||||
|
||||
@ -948,7 +948,7 @@ func (c *rawConnection) internalClose(err error) {
|
||||
c.closeOnce.Do(func() {
|
||||
l.Debugln("close due to", err)
|
||||
if cerr := c.closer.Close(); cerr != nil {
|
||||
l.Debugln(c.id, "failed to close underlying conn:", cerr)
|
||||
l.Debugln(c.deviceID, "failed to close underlying conn:", cerr)
|
||||
}
|
||||
close(c.closed)
|
||||
|
||||
@ -981,11 +981,11 @@ func (c *rawConnection) pingSender() {
|
||||
case <-ticker.C:
|
||||
d := time.Since(c.cw.Last())
|
||||
if d < PingSendInterval/2 {
|
||||
l.Debugln(c.id, "ping skipped after wr", d)
|
||||
l.Debugln(c.deviceID, "ping skipped after wr", d)
|
||||
continue
|
||||
}
|
||||
|
||||
l.Debugln(c.id, "ping -> after", d)
|
||||
l.Debugln(c.deviceID, "ping -> after", d)
|
||||
c.ping()
|
||||
|
||||
case <-c.closed:
|
||||
@ -1006,11 +1006,11 @@ func (c *rawConnection) pingReceiver() {
|
||||
case <-ticker.C:
|
||||
d := time.Since(c.cr.Last())
|
||||
if d > ReceiveTimeout {
|
||||
l.Debugln(c.id, "ping timeout", d)
|
||||
l.Debugln(c.deviceID, "ping timeout", d)
|
||||
c.internalClose(ErrTimeout)
|
||||
}
|
||||
|
||||
l.Debugln(c.id, "last read within", d)
|
||||
l.Debugln(c.deviceID, "last read within", d)
|
||||
|
||||
case <-c.closed:
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user