From 8f44cc7217ce48f3f94c8ea3f037cdf011c4493b Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Fri, 18 Aug 2017 01:04:02 +0200 Subject: Add folder synchronization status. Also add ability to force re-synchronization. --- lib/folder/folder-interface.go | 21 +++++++++++++++------ lib/folder/folder-pathmap.go | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) (limited to 'lib/folder') diff --git a/lib/folder/folder-interface.go b/lib/folder/folder-interface.go index b76b3f3..c04cbd7 100644 --- a/lib/folder/folder-interface.go +++ b/lib/folder/folder-interface.go @@ -14,16 +14,24 @@ const ( StatusErrorConfig = "ErrorConfig" StatusDisable = "Disable" StatusEnable = "Enable" + StatusPause = "Pause" + StatusSyncing = "Syncing" ) +type EventCBData map[string]interface{} +type EventCB func(cfg *FolderConfig, data *EventCBData) + // IFOLDER Folder interface type IFOLDER interface { - Add(cfg FolderConfig) (*FolderConfig, error) // Add a new folder - GetConfig() FolderConfig // Get folder public configuration - GetFullPath(dir string) string // Get folder full path - Remove() error // Remove a folder - Sync() error // Force folder files synchronization - IsInSync() (bool, error) // Check if folder files are in-sync + NewUID(suffix string) string // Get a new folder UUID + Add(cfg FolderConfig) (*FolderConfig, error) // Add a new folder + GetConfig() FolderConfig // Get folder public configuration + GetFullPath(dir string) string // Get folder full path + Remove() error // Remove a folder + RegisterEventChange(cb *EventCB, data *EventCBData) error // Request events registration (sent through WS) + UnRegisterEventChange() error // Un-register events + Sync() error // Force folder files synchronization + IsInSync() (bool, error) // Check if folder files are in-sync } // FolderConfig is the config for one folder @@ -33,6 +41,7 @@ type FolderConfig struct { ClientPath string `json:"path"` Type FolderType `json:"type"` Status string `json:"status"` + IsInSync bool `json:"isInSync"` DefaultSdk string `json:"defaultSdk"` // Not exported fields from REST API point of view diff --git a/lib/folder/folder-pathmap.go b/lib/folder/folder-pathmap.go index 2ad8a93..f73f271 100644 --- a/lib/folder/folder-pathmap.go +++ b/lib/folder/folder-pathmap.go @@ -8,6 +8,7 @@ import ( common "github.com/iotbzh/xds-common/golib" "github.com/iotbzh/xds-server/lib/xdsconfig" + uuid "github.com/satori/go.uuid" ) // IFOLDER interface implementation for native/path mapping folders @@ -26,6 +27,11 @@ func NewFolderPathMap(gc *xdsconfig.Config) *PathMap { return &f } +// NewUID Get a UUID +func (f *PathMap) NewUID(suffix string) string { + return uuid.NewV1().String() + "_" + suffix +} + // Add a new folder func (f *PathMap) Add(cfg FolderConfig) (*FolderConfig, error) { if cfg.DataPathMap.ServerPath == "" { @@ -63,6 +69,7 @@ func (f *PathMap) Add(cfg FolderConfig) (*FolderConfig, error) { f.config = cfg f.config.RootPath = dir f.config.DataPathMap.ServerPath = dir + f.config.IsInSync = true f.config.Status = StatusEnable return &f.config, nil @@ -87,6 +94,16 @@ func (f *PathMap) Remove() error { return nil } +// RegisterEventChange requests registration for folder change event +func (f *PathMap) RegisterEventChange(cb *EventCB, data *EventCBData) error { + return nil +} + +// UnRegisterEventChange remove registered callback +func (f *PathMap) UnRegisterEventChange() error { + return nil +} + // Sync Force folder files synchronization func (f *PathMap) Sync() error { return nil -- cgit 1.2.3-korg