Unregistered events when client WS session is closed.
[src/xds/xds-agent.git] / lib / agent / project-st.go
index dba5978..e2cd3cb 100644 (file)
@@ -85,7 +85,7 @@ func (p *STProject) UpdateProject(prj apiv1.ProjectConfig) (*apiv1.ProjectConfig
 
        // Register events to update folder status
        // Register to XDS Server events
-       p.server.EventOn("event:FolderStateChanged", p._cbServerFolderChanged)
+       p.server.EventOn("event:FolderStateChanged", "", p._cbServerFolderChanged)
        if err := p.server.EventRegister("FolderStateChanged", svrPrj.ID); err != nil {
                p.Log.Warningf("XDS Server EventRegister failed: %v", err)
                return svrPrj, err
@@ -128,12 +128,12 @@ func (p *STProject) IsInSync() (bool, error) {
 
 // callback use to update (XDS Server) folder IsInSync status
 
-func (p *STProject) _cbServerFolderChanged(data interface{}) {
+func (p *STProject) _cbServerFolderChanged(pData interface{}, data interface{}) error {
        evt := data.(XdsEventFolderChange)
 
        // Only process event that concerns this project/folder ID
        if p.folder.ID != evt.Folder.ID {
-               return
+               return nil
        }
 
        if evt.Folder.IsInSync != p.folder.DataCloudSync.STSvrIsInSync ||
@@ -143,9 +143,10 @@ func (p *STProject) _cbServerFolderChanged(data interface{}) {
                p.folder.DataCloudSync.STSvrStatus = evt.Folder.Status
 
                if err := p.events.Emit(apiv1.EVTProjectChange, p.server.FolderToProject(*p.folder)); err != nil {
-                       p.Log.Warningf("Cannot notify project change: %v", err)
+                       p.Log.Warningf("Cannot notify project change (from server): %v", err)
                }
        }
+       return nil
 }
 
 // callback use to update IsInSync status
@@ -181,7 +182,7 @@ func (p *STProject) _cbLocalSTEvents(ev st.Event, data *st.EventsCBData) {
                p.folder.DataCloudSync.STLocStatus = sts
 
                if err := p.events.Emit(apiv1.EVTProjectChange, p.server.FolderToProject(*p.folder)); err != nil {
-                       p.Log.Warningf("Cannot notify project change: %v", err)
+                       p.Log.Warningf("Cannot notify project change (local): %v", err)
                }
        }
 }