Move concrete logic to concrete packages

This commit is contained in:
mcrakhman 2022-10-22 14:23:42 +02:00 committed by Mikhail Iudin
parent e289fd4f89
commit 69211dfe66
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
11 changed files with 136 additions and 94 deletions

View File

@ -14,8 +14,8 @@ import (
) )
type DiffService interface { type DiffService interface {
HeadNotifiable
HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error) HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error)
UpdateHeads(id string, heads []string)
RemoveObject(id string) RemoveObject(id string)
AllIds() []string AllIds() []string

View File

@ -0,0 +1,5 @@
package diffservice
type HeadNotifiable interface {
UpdateHeads(id string, heads []string)
}

View File

@ -91,14 +91,15 @@ func (s *service) GetSpace(ctx context.Context, id string) (Space, error) {
lastConfiguration := s.configurationService.GetLast() lastConfiguration := s.configurationService.GetLast()
confConnector := nodeconf.NewConfConnector(lastConfiguration, s.pool) confConnector := nodeconf.NewConfConnector(lastConfiguration, s.pool)
diffService := diffservice.NewDiffService(id, s.config.SyncPeriod, st, confConnector, s.cache, log) diffService := diffservice.NewDiffService(id, s.config.SyncPeriod, st, confConnector, s.cache, log)
syncService := syncservice.NewSyncService(id, diffService, lastConfiguration, confConnector) syncService := syncservice.NewSyncService(id, confConnector)
sp := &space{ sp := &space{
id: id, id: id,
syncService: syncService, syncService: syncService,
diffService: diffService, diffService: diffService,
cache: s.cache, cache: s.cache,
account: s.account, account: s.account,
storage: st, configuration: lastConfiguration,
storage: st,
} }
if err := sp.Init(ctx); err != nil { if err := sp.Init(ctx); err != nil {
return nil, err return nil, err

View File

@ -13,6 +13,7 @@ import (
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list"
aclstorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage" aclstorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage"
tree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" tree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
@ -69,12 +70,13 @@ type space struct {
rpc *rpcHandler rpc *rpcHandler
syncService syncservice.SyncService syncService syncservice.SyncService
diffService diffservice.DiffService diffService diffservice.DiffService
storage storage.SpaceStorage storage storage.SpaceStorage
cache treegetter.TreeGetter cache treegetter.TreeGetter
account account.Service account account.Service
aclList *syncacl.SyncACL aclList *syncacl.SyncACL
configuration nodeconf.Configuration
isClosed atomic.Bool isClosed atomic.Bool
} }
@ -101,7 +103,7 @@ func (s *space) Init(ctx context.Context) (err error) {
if err != nil { if err != nil {
return return
} }
s.aclList = syncacl.NewSyncACL(aclList, s.syncService.SyncClient()) s.aclList = syncacl.NewSyncACL(aclList, s.syncService.StreamPool())
objectGetter := newCommonSpaceGetter(s.id, s.aclList, s.cache) objectGetter := newCommonSpaceGetter(s.id, s.aclList, s.cache)
s.syncService.Init(objectGetter) s.syncService.Init(objectGetter)
s.diffService.Init(initialIds) s.diffService.Init(initialIds)
@ -129,12 +131,15 @@ func (s *space) DeriveTree(ctx context.Context, payload tree.ObjectTreeCreatePay
err = ErrSpaceClosed err = ErrSpaceClosed
return return
} }
deps := synctree.SyncTreeCreateDeps{ deps := synctree.CreateDeps{
Payload: payload, SpaceId: s.id,
SyncClient: s.syncService.SyncClient(), Payload: payload,
Listener: listener, StreamPool: s.syncService.StreamPool(),
AclList: s.aclList, Configuration: s.configuration,
CreateStorage: s.storage.CreateTreeStorage, HeadNotifiable: s.diffService,
Listener: listener,
AclList: s.aclList,
CreateStorage: s.storage.CreateTreeStorage,
} }
return synctree.DeriveSyncTree(ctx, deps) return synctree.DeriveSyncTree(ctx, deps)
} }
@ -144,12 +149,15 @@ func (s *space) CreateTree(ctx context.Context, payload tree.ObjectTreeCreatePay
err = ErrSpaceClosed err = ErrSpaceClosed
return return
} }
deps := synctree.SyncTreeCreateDeps{ deps := synctree.CreateDeps{
Payload: payload, SpaceId: s.id,
SyncClient: s.syncService.SyncClient(), Payload: payload,
Listener: listener, StreamPool: s.syncService.StreamPool(),
AclList: s.aclList, Configuration: s.configuration,
CreateStorage: s.storage.CreateTreeStorage, HeadNotifiable: s.diffService,
Listener: listener,
AclList: s.aclList,
CreateStorage: s.storage.CreateTreeStorage,
} }
return synctree.CreateSyncTree(ctx, deps) return synctree.CreateSyncTree(ctx, deps)
} }
@ -165,9 +173,9 @@ func (s *space) BuildTree(ctx context.Context, id string, listener updatelistene
if err != nil { if err != nil {
return nil, err return nil, err
} }
return s.syncService.SyncClient().SendSync( return s.syncService.StreamPool().SendSync(
peerId, peerId,
s.syncService.SyncClient().CreateNewTreeRequest(id), synctree.GetRequestFactory().CreateNewTreeRequest(id),
) )
} }
@ -204,11 +212,14 @@ func (s *space) BuildTree(ctx context.Context, id string, listener updatelistene
return return
} }
} }
deps := synctree.SyncTreeBuildDeps{ deps := synctree.BuildDeps{
SyncClient: s.syncService.SyncClient(), SpaceId: s.id,
Listener: listener, StreamPool: s.syncService.StreamPool(),
AclList: s.aclList, Configuration: s.configuration,
Storage: store, HeadNotifiable: s.diffService,
Listener: listener,
AclList: s.aclList,
Storage: store,
} }
return synctree.BuildSyncTree(ctx, isFirstBuild, deps) return synctree.BuildSyncTree(ctx, isFirstBuild, deps)
} }

View File

@ -8,14 +8,14 @@ import (
type SyncACL struct { type SyncACL struct {
list.ACLList list.ACLList
syncservice.SyncClient
synchandler.SyncHandler synchandler.SyncHandler
streamPool syncservice.StreamPool
} }
func NewSyncACL(aclList list.ACLList, syncClient syncservice.SyncClient) *SyncACL { func NewSyncACL(aclList list.ACLList, streamPool syncservice.StreamPool) *SyncACL {
return &SyncACL{ return &SyncACL{
ACLList: aclList, ACLList: aclList,
SyncClient: syncClient,
SyncHandler: nil, SyncHandler: nil,
streamPool: streamPool,
} }
} }

View File

@ -18,22 +18,18 @@ var log = logger.NewNamed("syncservice").Sugar()
type SyncService interface { type SyncService interface {
ocache.ObjectLastUsage ocache.ObjectLastUsage
synchandler.SyncHandler synchandler.SyncHandler
SyncClient() SyncClient StreamPool() StreamPool
Init(getter objectgetter.ObjectGetter) Init(getter objectgetter.ObjectGetter)
Close() (err error) Close() (err error)
} }
type HeadNotifiable interface {
UpdateHeads(id string, heads []string)
}
const respPeersStreamCheckInterval = time.Second * 10 const respPeersStreamCheckInterval = time.Second * 10
type syncService struct { type syncService struct {
spaceId string spaceId string
syncClient SyncClient streamPool StreamPool
clientFactory spacesyncproto.ClientFactory clientFactory spacesyncproto.ClientFactory
objectGetter objectgetter.ObjectGetter objectGetter objectgetter.ObjectGetter
@ -45,17 +41,13 @@ type syncService struct {
func NewSyncService( func NewSyncService(
spaceId string, spaceId string,
headNotifiable HeadNotifiable,
configuration nodeconf.Configuration,
confConnector nodeconf.ConfConnector) (syncService SyncService) { confConnector nodeconf.ConfConnector) (syncService SyncService) {
streamPool := newStreamPool(func(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) { streamPool := newStreamPool(func(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) {
return syncService.HandleMessage(ctx, senderId, message) return syncService.HandleMessage(ctx, senderId, message)
}) })
factory := newRequestFactory()
syncClient := newSyncClient(spaceId, streamPool, headNotifiable, factory, configuration)
syncService = newSyncService( syncService = newSyncService(
spaceId, spaceId,
syncClient, streamPool,
spacesyncproto.ClientFactoryFunc(spacesyncproto.NewDRPCSpaceClient), spacesyncproto.ClientFactoryFunc(spacesyncproto.NewDRPCSpaceClient),
confConnector) confConnector)
return return
@ -63,11 +55,11 @@ func NewSyncService(
func newSyncService( func newSyncService(
spaceId string, spaceId string,
syncClient SyncClient, streamPool StreamPool,
clientFactory spacesyncproto.ClientFactory, clientFactory spacesyncproto.ClientFactory,
connector nodeconf.ConfConnector) *syncService { connector nodeconf.ConfConnector) *syncService {
return &syncService{ return &syncService{
syncClient: syncClient, streamPool: streamPool,
connector: connector, connector: connector,
clientFactory: clientFactory, clientFactory: clientFactory,
spaceId: spaceId, spaceId: spaceId,
@ -84,11 +76,11 @@ func (s *syncService) Init(objectGetter objectgetter.ObjectGetter) {
func (s *syncService) Close() (err error) { func (s *syncService) Close() (err error) {
s.stopStreamLoop() s.stopStreamLoop()
<-s.streamLoopDone <-s.streamLoopDone
return s.syncClient.Close() return s.streamPool.Close()
} }
func (s *syncService) LastUsage() time.Time { func (s *syncService) LastUsage() time.Time {
return s.syncClient.LastUsage() return s.streamPool.LastUsage()
} }
func (s *syncService) HandleMessage(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) { func (s *syncService) HandleMessage(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) {
@ -107,7 +99,7 @@ func (s *syncService) responsibleStreamCheckLoop(ctx context.Context) {
return return
} }
for _, peer := range respPeers { for _, peer := range respPeers {
if s.syncClient.HasActiveStream(peer.Id()) { if s.streamPool.HasActiveStream(peer.Id()) {
continue continue
} }
stream, err := s.clientFactory.Client(peer).Stream(ctx) stream, err := s.clientFactory.Client(peer).Stream(ctx)
@ -125,7 +117,7 @@ func (s *syncService) responsibleStreamCheckLoop(ctx context.Context) {
log.With("spaceId", s.spaceId).Errorf("failed to send first message to stream: %v", err) log.With("spaceId", s.spaceId).Errorf("failed to send first message to stream: %v", err)
continue continue
} }
s.syncClient.AddAndReadStreamAsync(stream) s.streamPool.AddAndReadStreamAsync(stream)
} }
} }
@ -142,6 +134,6 @@ func (s *syncService) responsibleStreamCheckLoop(ctx context.Context) {
} }
} }
func (s *syncService) SyncClient() SyncClient { func (s *syncService) StreamPool() StreamPool {
return s.syncClient return s.streamPool
} }

View File

@ -1,4 +1,4 @@
package syncservice package synctree
import ( import (
"fmt" "fmt"
@ -15,8 +15,10 @@ type RequestFactory interface {
CreateFullSyncResponse(t tree.ObjectTree, theirHeads, theirSnapshotPath []string, trackingId string) (*spacesyncproto.ObjectSyncMessage, error) CreateFullSyncResponse(t tree.ObjectTree, theirHeads, theirSnapshotPath []string, trackingId string) (*spacesyncproto.ObjectSyncMessage, error)
} }
func newRequestFactory() RequestFactory { var factory = &requestFactory{}
return &requestFactory{}
func GetRequestFactory() RequestFactory {
return factory
} }
type requestFactory struct{} type requestFactory struct{}

View File

@ -1,28 +1,35 @@
package syncservice package synctree
import ( import (
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ocache" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ocache"
"time" "time"
) )
type SyncClient interface { type SyncClient interface {
StreamPool syncservice.StreamPool
RequestFactory RequestFactory
ocache.ObjectLastUsage ocache.ObjectLastUsage
BroadcastAsyncOrSendResponsible(message *spacesyncproto.ObjectSyncMessage) (err error) BroadcastAsyncOrSendResponsible(message *spacesyncproto.ObjectSyncMessage) (err error)
} }
type syncClient struct { type syncClient struct {
StreamPool syncservice.StreamPool
RequestFactory RequestFactory
spaceId string spaceId string
notifiable HeadNotifiable notifiable diffservice.HeadNotifiable
configuration nodeconf.Configuration configuration nodeconf.Configuration
} }
func newSyncClient(spaceId string, pool StreamPool, notifiable HeadNotifiable, factory RequestFactory, configuration nodeconf.Configuration) SyncClient { func newSyncClient(
spaceId string,
pool syncservice.StreamPool,
notifiable diffservice.HeadNotifiable,
factory RequestFactory,
configuration nodeconf.Configuration) SyncClient {
return &syncClient{ return &syncClient{
StreamPool: pool, StreamPool: pool,
RequestFactory: factory, RequestFactory: factory,

View File

@ -4,9 +4,11 @@ import (
"context" "context"
"errors" "errors"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/synchandler" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/synchandler"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
@ -19,7 +21,7 @@ var ErrSyncTreeClosed = errors.New("sync tree is closed")
type SyncTree struct { type SyncTree struct {
tree.ObjectTree tree.ObjectTree
synchandler.SyncHandler synchandler.SyncHandler
syncClient syncservice.SyncClient syncClient SyncClient
listener updatelistener.UpdateListener listener updatelistener.UpdateListener
isClosed bool isClosed bool
} }
@ -30,78 +32,102 @@ var createDerivedObjectTree = tree.CreateDerivedObjectTree
var createObjectTree = tree.CreateObjectTree var createObjectTree = tree.CreateObjectTree
var buildObjectTree = tree.BuildObjectTree var buildObjectTree = tree.BuildObjectTree
type SyncTreeCreateDeps struct { type CreateDeps struct {
Payload tree.ObjectTreeCreatePayload SpaceId string
SyncClient syncservice.SyncClient Payload tree.ObjectTreeCreatePayload
Listener updatelistener.UpdateListener Configuration nodeconf.Configuration
AclList list.ACLList HeadNotifiable diffservice.HeadNotifiable
CreateStorage storage.TreeStorageCreatorFunc StreamPool syncservice.StreamPool
Listener updatelistener.UpdateListener
AclList list.ACLList
CreateStorage storage.TreeStorageCreatorFunc
} }
type SyncTreeBuildDeps struct { type BuildDeps struct {
SyncClient syncservice.SyncClient SpaceId string
Listener updatelistener.UpdateListener StreamPool syncservice.StreamPool
AclList list.ACLList Configuration nodeconf.Configuration
Storage storage.TreeStorage HeadNotifiable diffservice.HeadNotifiable
Listener updatelistener.UpdateListener
AclList list.ACLList
Storage storage.TreeStorage
} }
func DeriveSyncTree( func DeriveSyncTree(
ctx context.Context, ctx context.Context,
deps SyncTreeCreateDeps) (t tree.ObjectTree, err error) { deps CreateDeps) (t tree.ObjectTree, err error) {
t, err = createDerivedObjectTree(deps.Payload, deps.AclList, deps.CreateStorage) t, err = createDerivedObjectTree(deps.Payload, deps.AclList, deps.CreateStorage)
if err != nil { if err != nil {
return return
} }
syncClient := newSyncClient(
deps.SpaceId,
deps.StreamPool,
deps.HeadNotifiable,
GetRequestFactory(),
deps.Configuration)
syncTree := &SyncTree{ syncTree := &SyncTree{
ObjectTree: t, ObjectTree: t,
syncClient: deps.SyncClient, syncClient: syncClient,
listener: deps.Listener, listener: deps.Listener,
} }
syncHandler := newSyncTreeHandler(syncTree, deps.SyncClient) syncHandler := newSyncTreeHandler(syncTree, syncClient)
syncTree.SyncHandler = syncHandler syncTree.SyncHandler = syncHandler
t = syncTree t = syncTree
headUpdate := deps.SyncClient.CreateHeadUpdate(t, nil) headUpdate := syncClient.CreateHeadUpdate(t, nil)
err = deps.SyncClient.BroadcastAsync(headUpdate) err = syncClient.BroadcastAsync(headUpdate)
return return
} }
func CreateSyncTree( func CreateSyncTree(
ctx context.Context, ctx context.Context,
deps SyncTreeCreateDeps) (t tree.ObjectTree, err error) { deps CreateDeps) (t tree.ObjectTree, err error) {
t, err = createObjectTree(deps.Payload, deps.AclList, deps.CreateStorage) t, err = createObjectTree(deps.Payload, deps.AclList, deps.CreateStorage)
if err != nil { if err != nil {
return return
} }
syncClient := newSyncClient(
deps.SpaceId,
deps.StreamPool,
deps.HeadNotifiable,
GetRequestFactory(),
deps.Configuration)
syncTree := &SyncTree{ syncTree := &SyncTree{
ObjectTree: t, ObjectTree: t,
syncClient: deps.SyncClient, syncClient: syncClient,
listener: deps.Listener, listener: deps.Listener,
} }
syncHandler := newSyncTreeHandler(syncTree, deps.SyncClient) syncHandler := newSyncTreeHandler(syncTree, syncClient)
syncTree.SyncHandler = syncHandler syncTree.SyncHandler = syncHandler
t = syncTree t = syncTree
headUpdate := deps.SyncClient.CreateHeadUpdate(t, nil) headUpdate := syncClient.CreateHeadUpdate(t, nil)
err = deps.SyncClient.BroadcastAsync(headUpdate) err = syncClient.BroadcastAsync(headUpdate)
return return
} }
func BuildSyncTree( func BuildSyncTree(
ctx context.Context, ctx context.Context,
isFirstBuild bool, isFirstBuild bool,
deps SyncTreeBuildDeps) (t tree.ObjectTree, err error) { deps BuildDeps) (t tree.ObjectTree, err error) {
t, err = buildObjectTree(deps.Storage, deps.AclList) t, err = buildObjectTree(deps.Storage, deps.AclList)
if err != nil { if err != nil {
return return
} }
syncClient := newSyncClient(
deps.SpaceId,
deps.StreamPool,
deps.HeadNotifiable,
GetRequestFactory(),
deps.Configuration)
syncTree := &SyncTree{ syncTree := &SyncTree{
ObjectTree: t, ObjectTree: t,
syncClient: deps.SyncClient, syncClient: syncClient,
listener: deps.Listener, listener: deps.Listener,
} }
syncHandler := newSyncTreeHandler(syncTree, deps.SyncClient) syncHandler := newSyncTreeHandler(syncTree, syncClient)
syncTree.SyncHandler = syncHandler syncTree.SyncHandler = syncHandler
t = syncTree t = syncTree

View File

@ -3,7 +3,6 @@ package synctree
import ( import (
"context" "context"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/mock_syncservice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/mock_syncservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener/mock_updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener/mock_updatelistener"
@ -21,7 +20,7 @@ import (
type syncTreeMatcher struct { type syncTreeMatcher struct {
objTree tree2.ObjectTree objTree tree2.ObjectTree
client syncservice.SyncClient client SyncClient
listener updatelistener.UpdateListener listener updatelistener.UpdateListener
} }

View File

@ -3,7 +3,6 @@ package synctree
import ( import (
"context" "context"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/synchandler" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/synchandler"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/slice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/slice"
@ -11,10 +10,10 @@ import (
type syncTreeHandler struct { type syncTreeHandler struct {
objTree tree.ObjectTree objTree tree.ObjectTree
syncClient syncservice.SyncClient syncClient SyncClient
} }
func newSyncTreeHandler(objTree tree.ObjectTree, syncClient syncservice.SyncClient) synchandler.SyncHandler { func newSyncTreeHandler(objTree tree.ObjectTree, syncClient SyncClient) synchandler.SyncHandler {
return &syncTreeHandler{ return &syncTreeHandler{
objTree: objTree, objTree: objTree,
syncClient: syncClient, syncClient: syncClient,