Add auxiliary methods to acl for getting records, export peer manager
This commit is contained in:
parent
20c891b7dd
commit
854079d1be
@ -49,6 +49,7 @@ type AclList interface {
|
|||||||
Head() *AclRecord
|
Head() *AclRecord
|
||||||
|
|
||||||
RecordsAfter(ctx context.Context, id string) (records []*consensusproto.RawRecordWithId, err error)
|
RecordsAfter(ctx context.Context, id string) (records []*consensusproto.RawRecordWithId, err error)
|
||||||
|
RecordsBefore(ctx context.Context, headId string) (records []*consensusproto.RawRecordWithId, err error)
|
||||||
Get(id string) (*AclRecord, error)
|
Get(id string) (*AclRecord, error)
|
||||||
GetIndex(idx int) (*AclRecord, error)
|
GetIndex(idx int) (*AclRecord, error)
|
||||||
Iterate(iterFunc IterFunc)
|
Iterate(iterFunc IterFunc)
|
||||||
@ -305,6 +306,24 @@ func (a *aclList) RecordsAfter(ctx context.Context, id string) (records []*conse
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *aclList) RecordsBefore(ctx context.Context, headId string) (records []*consensusproto.RawRecordWithId, err error) {
|
||||||
|
if headId == "" {
|
||||||
|
headId = a.Head().Id
|
||||||
|
}
|
||||||
|
recIdx, ok := a.indexes[headId]
|
||||||
|
if !ok {
|
||||||
|
return nil, ErrNoSuchRecord
|
||||||
|
}
|
||||||
|
for i := 0; i <= recIdx; i++ {
|
||||||
|
rawRec, err := a.storage.GetRawRecord(ctx, a.records[i].Id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
records = append(records, rawRec)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (a *aclList) IterateFrom(startId string, iterFunc IterFunc) {
|
func (a *aclList) IterateFrom(startId string, iterFunc IterFunc) {
|
||||||
recIdx, ok := a.indexes[startId]
|
recIdx, ok := a.indexes[startId]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@ -297,6 +297,21 @@ func (mr *MockAclListMockRecorder) RecordsAfter(arg0, arg1 interface{}) *gomock.
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsAfter", reflect.TypeOf((*MockAclList)(nil).RecordsAfter), arg0, arg1)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsAfter", reflect.TypeOf((*MockAclList)(nil).RecordsAfter), arg0, arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RecordsBefore mocks base method.
|
||||||
|
func (m *MockAclList) RecordsBefore(arg0 context.Context, arg1 string) ([]*consensusproto.RawRecordWithId, error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "RecordsBefore", arg0, arg1)
|
||||||
|
ret0, _ := ret[0].([]*consensusproto.RawRecordWithId)
|
||||||
|
ret1, _ := ret[1].(error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecordsBefore indicates an expected call of RecordsBefore.
|
||||||
|
func (mr *MockAclListMockRecorder) RecordsBefore(arg0, arg1 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsBefore", reflect.TypeOf((*MockAclList)(nil).RecordsBefore), arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
// Root mocks base method.
|
// Root mocks base method.
|
||||||
func (m *MockAclList) Root() *consensusproto.RawRecordWithId {
|
func (m *MockAclList) Root() *consensusproto.RawRecordWithId {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
|
|||||||
@ -357,6 +357,21 @@ func (mr *MockSyncAclMockRecorder) RecordsAfter(arg0, arg1 interface{}) *gomock.
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsAfter", reflect.TypeOf((*MockSyncAcl)(nil).RecordsAfter), arg0, arg1)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsAfter", reflect.TypeOf((*MockSyncAcl)(nil).RecordsAfter), arg0, arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RecordsBefore mocks base method.
|
||||||
|
func (m *MockSyncAcl) RecordsBefore(arg0 context.Context, arg1 string) ([]*consensusproto.RawRecordWithId, error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "RecordsBefore", arg0, arg1)
|
||||||
|
ret0, _ := ret[0].([]*consensusproto.RawRecordWithId)
|
||||||
|
ret1, _ := ret[1].(error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecordsBefore indicates an expected call of RecordsBefore.
|
||||||
|
func (mr *MockSyncAclMockRecorder) RecordsBefore(arg0, arg1 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordsBefore", reflect.TypeOf((*MockSyncAcl)(nil).RecordsBefore), arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
// Root mocks base method.
|
// Root mocks base method.
|
||||||
func (m *MockSyncAcl) Root() *consensusproto.RawRecordWithId {
|
func (m *MockSyncAcl) Root() *consensusproto.RawRecordWithId {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
|
|||||||
@ -157,6 +157,10 @@ func (r *requestPeerManager) GetResponsiblePeers(ctx context.Context) (peers []p
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *requestPeerManager) GetNodePeers(ctx context.Context) (peers []peer.Peer, err error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
// testSyncHandler is the wrapper around individual tree to test sync protocol
|
// testSyncHandler is the wrapper around individual tree to test sync protocol
|
||||||
type testSyncHandler struct {
|
type testSyncHandler struct {
|
||||||
synchandler.SyncHandler
|
synchandler.SyncHandler
|
||||||
|
|||||||
@ -51,6 +51,21 @@ func (mr *MockPeerManagerMockRecorder) Broadcast(arg0, arg1 interface{}) *gomock
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Broadcast", reflect.TypeOf((*MockPeerManager)(nil).Broadcast), arg0, arg1)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Broadcast", reflect.TypeOf((*MockPeerManager)(nil).Broadcast), arg0, arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetNodePeers mocks base method.
|
||||||
|
func (m *MockPeerManager) GetNodePeers(arg0 context.Context) ([]peer.Peer, error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "GetNodePeers", arg0)
|
||||||
|
ret0, _ := ret[0].([]peer.Peer)
|
||||||
|
ret1, _ := ret[1].(error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNodePeers indicates an expected call of GetNodePeers.
|
||||||
|
func (mr *MockPeerManagerMockRecorder) GetNodePeers(arg0 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNodePeers", reflect.TypeOf((*MockPeerManager)(nil).GetNodePeers), arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// GetResponsiblePeers mocks base method.
|
// GetResponsiblePeers mocks base method.
|
||||||
func (m *MockPeerManager) GetResponsiblePeers(arg0 context.Context) ([]peer.Peer, error) {
|
func (m *MockPeerManager) GetResponsiblePeers(arg0 context.Context) ([]peer.Peer, error) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
|
|||||||
@ -18,8 +18,10 @@ type PeerManager interface {
|
|||||||
SendPeer(ctx context.Context, peerId string, msg *spacesyncproto.ObjectSyncMessage) (err error)
|
SendPeer(ctx context.Context, peerId string, msg *spacesyncproto.ObjectSyncMessage) (err error)
|
||||||
// Broadcast sends a message to all subscribed peers
|
// Broadcast sends a message to all subscribed peers
|
||||||
Broadcast(ctx context.Context, msg *spacesyncproto.ObjectSyncMessage) (err error)
|
Broadcast(ctx context.Context, msg *spacesyncproto.ObjectSyncMessage) (err error)
|
||||||
// GetResponsiblePeers dials or gets from cache responsible peers to unary operations
|
// GetResponsiblePeers dials or gets from cache responsible peers
|
||||||
GetResponsiblePeers(ctx context.Context) (peers []peer.Peer, err error)
|
GetResponsiblePeers(ctx context.Context) (peers []peer.Peer, err error)
|
||||||
|
// GetNodePeers dials or gets from cache node peers
|
||||||
|
GetNodePeers(ctx context.Context) (peers []peer.Peer, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type PeerManagerProvider interface {
|
type PeerManagerProvider interface {
|
||||||
|
|||||||
@ -9,11 +9,13 @@ import (
|
|||||||
"github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto"
|
"github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto"
|
||||||
"github.com/anyproto/any-sync/commonspace/objectsync"
|
"github.com/anyproto/any-sync/commonspace/objectsync"
|
||||||
"github.com/anyproto/any-sync/commonspace/objecttreebuilder"
|
"github.com/anyproto/any-sync/commonspace/objecttreebuilder"
|
||||||
|
"github.com/anyproto/any-sync/commonspace/peermanager"
|
||||||
"github.com/anyproto/any-sync/commonspace/settings"
|
"github.com/anyproto/any-sync/commonspace/settings"
|
||||||
"github.com/anyproto/any-sync/commonspace/spacestate"
|
"github.com/anyproto/any-sync/commonspace/spacestate"
|
||||||
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
||||||
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
||||||
"github.com/anyproto/any-sync/commonspace/syncstatus"
|
"github.com/anyproto/any-sync/commonspace/syncstatus"
|
||||||
|
"github.com/anyproto/any-sync/net/peer"
|
||||||
"github.com/anyproto/any-sync/util/crypto"
|
"github.com/anyproto/any-sync/util/crypto"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -73,6 +75,8 @@ type Space interface {
|
|||||||
SpaceDeleteRawChange(ctx context.Context) (raw *treechangeproto.RawTreeChangeWithId, err error)
|
SpaceDeleteRawChange(ctx context.Context) (raw *treechangeproto.RawTreeChangeWithId, err error)
|
||||||
DeleteSpace(ctx context.Context, deleteChange *treechangeproto.RawTreeChangeWithId) (err error)
|
DeleteSpace(ctx context.Context, deleteChange *treechangeproto.RawTreeChangeWithId) (err error)
|
||||||
|
|
||||||
|
GetNodePeers(ctx context.Context) (peer []peer.Peer, err error)
|
||||||
|
|
||||||
HandleMessage(ctx context.Context, msg objectsync.HandleMessage) (err error)
|
HandleMessage(ctx context.Context, msg objectsync.HandleMessage) (err error)
|
||||||
HandleSyncRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error)
|
HandleSyncRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error)
|
||||||
HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error)
|
HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error)
|
||||||
@ -89,6 +93,7 @@ type space struct {
|
|||||||
app *app.App
|
app *app.App
|
||||||
|
|
||||||
treeBuilder objecttreebuilder.TreeBuilderComponent
|
treeBuilder objecttreebuilder.TreeBuilderComponent
|
||||||
|
peerManager peermanager.PeerManager
|
||||||
headSync headsync.HeadSync
|
headSync headsync.HeadSync
|
||||||
objectSync objectsync.ObjectSync
|
objectSync objectsync.ObjectSync
|
||||||
syncStatus syncstatus.StatusService
|
syncStatus syncstatus.StatusService
|
||||||
@ -154,6 +159,10 @@ func (s *space) TreeBuilder() objecttreebuilder.TreeBuilder {
|
|||||||
return s.treeBuilder
|
return s.treeBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *space) GetNodePeers(ctx context.Context) (peer []peer.Peer, err error) {
|
||||||
|
return s.peerManager.GetNodePeers(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *space) Acl() list.AclList {
|
func (s *space) Acl() list.AclList {
|
||||||
return s.aclList
|
return s.aclList
|
||||||
}
|
}
|
||||||
@ -173,6 +182,7 @@ func (s *space) Init(ctx context.Context) (err error) {
|
|||||||
s.settings = s.app.MustComponent(settings.CName).(settings.Settings)
|
s.settings = s.app.MustComponent(settings.CName).(settings.Settings)
|
||||||
s.objectSync = s.app.MustComponent(objectsync.CName).(objectsync.ObjectSync)
|
s.objectSync = s.app.MustComponent(objectsync.CName).(objectsync.ObjectSync)
|
||||||
s.storage = s.app.MustComponent(spacestorage.CName).(spacestorage.SpaceStorage)
|
s.storage = s.app.MustComponent(spacestorage.CName).(spacestorage.SpaceStorage)
|
||||||
|
s.peerManager = s.app.MustComponent(peermanager.CName).(peermanager.PeerManager)
|
||||||
s.aclList = s.app.MustComponent(syncacl.CName).(list.AclList)
|
s.aclList = s.app.MustComponent(syncacl.CName).(list.AclList)
|
||||||
s.header, err = s.storage.SpaceHeader()
|
s.header, err = s.storage.SpaceHeader()
|
||||||
return
|
return
|
||||||
|
|||||||
@ -151,6 +151,10 @@ func (p *mockPeerManager) GetResponsiblePeers(ctx context.Context) (peers []peer
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *mockPeerManager) GetNodePeers(ctx context.Context) (peers []peer.Peer, err error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Mock PeerManagerProvider
|
// Mock PeerManagerProvider
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user