Change space methods (handle requests)
This commit is contained in:
parent
aff2061bd1
commit
85a093dd4a
@ -31,7 +31,7 @@ var log = logger.NewNamed(CName)
|
|||||||
type ObjectSync interface {
|
type ObjectSync interface {
|
||||||
LastUsage() time.Time
|
LastUsage() time.Time
|
||||||
HandleMessage(ctx context.Context, hm HandleMessage) (err error)
|
HandleMessage(ctx context.Context, hm HandleMessage) (err error)
|
||||||
HandleRequest(ctx context.Context, hm HandleMessage) (resp *spacesyncproto.ObjectSyncMessage, err error)
|
HandleRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error)
|
||||||
CloseThread(id string) (err error)
|
CloseThread(id string) (err error)
|
||||||
app.ComponentRunnable
|
app.ComponentRunnable
|
||||||
}
|
}
|
||||||
@ -103,10 +103,12 @@ func (s *objectSync) LastUsage() time.Time {
|
|||||||
return time.Time{}
|
return time.Time{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *objectSync) HandleRequest(ctx context.Context, hm HandleMessage) (resp *spacesyncproto.ObjectSyncMessage, err error) {
|
func (s *objectSync) HandleRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error) {
|
||||||
hm.ReceiveTime = time.Now()
|
peerId, err := peer.CtxPeerId(ctx)
|
||||||
hm.StartHandlingTime = hm.ReceiveTime
|
if err != nil {
|
||||||
return s.handleRequest(ctx, hm.SenderId, hm.Message)
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.handleRequest(ctx, peerId, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *objectSync) HandleMessage(ctx context.Context, hm HandleMessage) (err error) {
|
func (s *objectSync) HandleMessage(ctx context.Context, hm HandleMessage) (err error) {
|
||||||
|
|||||||
@ -73,6 +73,7 @@ func (r *requestManager) Close(ctx context.Context) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *requestManager) SendRequest(ctx context.Context, peerId string, req *spacesyncproto.ObjectSyncMessage) (reply *spacesyncproto.ObjectSyncMessage, err error) {
|
func (r *requestManager) SendRequest(ctx context.Context, peerId string, req *spacesyncproto.ObjectSyncMessage) (reply *spacesyncproto.ObjectSyncMessage, err error) {
|
||||||
|
// TODO: limit concurrent sends?
|
||||||
return r.doRequest(ctx, peerId, req)
|
return r.doRequest(ctx, peerId, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"github.com/anyproto/any-sync/app"
|
"github.com/anyproto/any-sync/app"
|
||||||
"github.com/anyproto/any-sync/commonspace/headsync"
|
"github.com/anyproto/any-sync/commonspace/headsync"
|
||||||
|
"github.com/anyproto/any-sync/commonspace/object/acl/list"
|
||||||
|
"github.com/anyproto/any-sync/commonspace/object/acl/syncacl"
|
||||||
"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"
|
||||||
@ -58,6 +60,8 @@ type Space interface {
|
|||||||
Id() string
|
Id() string
|
||||||
Init(ctx context.Context) error
|
Init(ctx context.Context) error
|
||||||
|
|
||||||
|
Description() (desc SpaceDescription, err error)
|
||||||
|
|
||||||
TreeBuilder() objecttreebuilder.TreeBuilder
|
TreeBuilder() objecttreebuilder.TreeBuilder
|
||||||
SyncStatus() syncstatus.StatusUpdater
|
SyncStatus() syncstatus.StatusUpdater
|
||||||
Storage() spacestorage.SpaceStorage
|
Storage() spacestorage.SpaceStorage
|
||||||
@ -67,7 +71,8 @@ type Space interface {
|
|||||||
DeleteSpace(ctx context.Context, deleteChange *treechangeproto.RawTreeChangeWithId) (err error)
|
DeleteSpace(ctx context.Context, deleteChange *treechangeproto.RawTreeChangeWithId) (err error)
|
||||||
|
|
||||||
HandleMessage(ctx context.Context, msg objectsync.HandleMessage) (err error)
|
HandleMessage(ctx context.Context, msg objectsync.HandleMessage) (err error)
|
||||||
HandleRequest(ctx context.Context, msg objectsync.HandleMessage) (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)
|
||||||
|
|
||||||
TryClose(objectTTL time.Duration) (close bool, err error)
|
TryClose(objectTTL time.Duration) (close bool, err error)
|
||||||
Close() error
|
Close() error
|
||||||
@ -86,6 +91,28 @@ type space struct {
|
|||||||
syncStatus syncstatus.StatusProvider
|
syncStatus syncstatus.StatusProvider
|
||||||
settings settings.Settings
|
settings settings.Settings
|
||||||
storage spacestorage.SpaceStorage
|
storage spacestorage.SpaceStorage
|
||||||
|
aclList list.AclList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *space) Description() (desc SpaceDescription, err error) {
|
||||||
|
root := s.aclList.Root()
|
||||||
|
settingsStorage, err := s.storage.TreeStorage(s.storage.SpaceSettingsId())
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
settingsRoot, err := settingsStorage.Root()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
desc = SpaceDescription{
|
||||||
|
SpaceHeader: s.header,
|
||||||
|
AclId: root.Id,
|
||||||
|
AclPayload: root.Payload,
|
||||||
|
SpaceSettingsId: settingsRoot.Id,
|
||||||
|
SpaceSettingsPayload: settingsRoot.RawChange,
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *space) DeleteTree(ctx context.Context, id string) (err error) {
|
func (s *space) DeleteTree(ctx context.Context, id string) (err error) {
|
||||||
@ -104,8 +131,12 @@ func (s *space) HandleMessage(ctx context.Context, msg objectsync.HandleMessage)
|
|||||||
return s.objectSync.HandleMessage(ctx, msg)
|
return s.objectSync.HandleMessage(ctx, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *space) HandleRequest(ctx context.Context, msg objectsync.HandleMessage) (resp *spacesyncproto.ObjectSyncMessage, err error) {
|
func (s *space) HandleSyncRequest(ctx context.Context, req *spacesyncproto.ObjectSyncMessage) (resp *spacesyncproto.ObjectSyncMessage, err error) {
|
||||||
return s.objectSync.HandleRequest(ctx, msg)
|
return s.objectSync.HandleRequest(ctx, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *space) HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error) {
|
||||||
|
return s.headSync.HandleRangeRequest(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *space) TreeBuilder() objecttreebuilder.TreeBuilder {
|
func (s *space) TreeBuilder() objecttreebuilder.TreeBuilder {
|
||||||
@ -127,6 +158,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.aclList = s.app.MustComponent(syncacl.CName).(list.AclList)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user