import (
"fmt"
- "github.com/iotbzh/xds-agent/lib/apiv1"
st "github.com/iotbzh/xds-agent/lib/syncthing"
+ "github.com/iotbzh/xds-agent/lib/xaapiv1"
+ "github.com/iotbzh/xds-server/lib/xsapiv1"
)
// IPROJECT interface implementation for syncthing projects
type STProject struct {
*Context
server *XdsServer
- folder *XdsFolderConfig
+ folder *xsapiv1.FolderConfig
eventIDs []int
}
p := STProject{
Context: ctx,
server: svr,
- folder: &XdsFolderConfig{},
+ folder: &xsapiv1.FolderConfig{},
}
return &p
}
// Add a new project
-func (p *STProject) Add(cfg apiv1.ProjectConfig) (*apiv1.ProjectConfig, error) {
+func (p *STProject) Add(cfg xaapiv1.ProjectConfig) (*xaapiv1.ProjectConfig, error) {
var err error
// Add project/folder into XDS Server
locPrj, err := p.SThg.FolderConfigGet(id)
if err != nil {
- svrPrj.Status = apiv1.StatusErrorConfig
+ svrPrj.Status = xaapiv1.StatusErrorConfig
return nil, err
}
if svrPrj.ID != locPrj.ID {
}
// GetProject Get public part of project config
-func (p *STProject) GetProject() *apiv1.ProjectConfig {
+func (p *STProject) GetProject() *xaapiv1.ProjectConfig {
prj := p.server.FolderToProject(*p.folder)
prj.ServerID = p.server.ID
return &prj
}
// Setup Setup local project config
-func (p *STProject) Setup(prj apiv1.ProjectConfig) (*apiv1.ProjectConfig, error) {
+func (p *STProject) Setup(prj xaapiv1.ProjectConfig) (*xaapiv1.ProjectConfig, error) {
// Update folder
p.folder = p.server.ProjectToFolder(prj)
svrPrj := p.GetProject()
}
// Update Update some field of a project
-func (p *STProject) Update(prj apiv1.ProjectConfig) (*apiv1.ProjectConfig, error) {
+func (p *STProject) Update(prj xaapiv1.ProjectConfig) (*xaapiv1.ProjectConfig, error) {
if p.folder.ID != prj.ID {
return nil, fmt.Errorf("Invalid id")
// callback use to update (XDS Server) folder IsInSync status
func (p *STProject) _cbServerFolderChanged(pData interface{}, data interface{}) error {
- evt := data.(XdsEventFolderChange)
+ evt := data.(xsapiv1.EventMsg)
// Only process event that concerns this project/folder ID
if p.folder.ID != evt.Folder.ID {
p.folder.DataCloudSync.STSvrIsInSync = evt.Folder.IsInSync
p.folder.DataCloudSync.STSvrStatus = evt.Folder.Status
- if err := p.events.Emit(apiv1.EVTProjectChange, p.server.FolderToProject(*p.folder), ""); err != nil {
+ if err := p.events.Emit(xaapiv1.EVTProjectChange, p.server.FolderToProject(*p.folder), ""); err != nil {
p.Log.Warningf("Cannot notify project change (from server): %v", err)
}
}
to := ev.Data["to"]
switch to {
case "scanning", "syncing":
- sts = apiv1.StatusSyncing
+ sts = xaapiv1.StatusSyncing
case "idle":
- sts = apiv1.StatusEnable
+ sts = xaapiv1.StatusEnable
}
inSync = (to == "idle")
case st.EventFolderPaused:
- if sts == apiv1.StatusEnable {
- sts = apiv1.StatusPause
+ if sts == xaapiv1.StatusEnable {
+ sts = xaapiv1.StatusPause
}
inSync = false
}
p.folder.DataCloudSync.STLocIsInSync = inSync
p.folder.DataCloudSync.STLocStatus = sts
- if err := p.events.Emit(apiv1.EVTProjectChange, p.server.FolderToProject(*p.folder), ""); err != nil {
+ if err := p.events.Emit(xaapiv1.EVTProjectChange, p.server.FolderToProject(*p.folder), ""); err != nil {
p.Log.Warningf("Cannot notify project change (local): %v", err)
}
}