aboutsummaryrefslogtreecommitdiffstats
path: root/lib/folder
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-18 01:04:02 +0200
committerSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-18 01:04:02 +0200
commit8f44cc7217ce48f3f94c8ea3f037cdf011c4493b (patch)
treea93c483370e6ad64a7440241cfb7c21beb6021ba /lib/folder
parent4feef5296bf3aea331fdde4cd7b94ee2322a907e (diff)
Add folder synchronization status.
Also add ability to force re-synchronization.
Diffstat (limited to 'lib/folder')
-rw-r--r--lib/folder/folder-interface.go21
-rw-r--r--lib/folder/folder-pathmap.go17
2 files changed, 32 insertions, 6 deletions
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