X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fagent%2Fevents.go;h=2f1fc2940e7f43d6f22721ee5efa1541887beae3;hb=247bb7c2db5f0d48178398599348249bf886ebbc;hp=24efc5a192a35814679d649478c6192ccc83c97c;hpb=97ca1f277dc8b6973d6fa67add5593a9c395ce60;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/agent/events.go b/lib/agent/events.go index 24efc5a..2f1fc29 100644 --- a/lib/agent/events.go +++ b/lib/agent/events.go @@ -1,42 +1,35 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Sebastien Douheret + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package agent import ( "fmt" "time" -) -// Events constants -const ( - // EventTypePrefix Used as event prefix - EventTypePrefix = "event:" // following by event type - - // Supported Events type - EVTAll = "all" - EVTServerConfig = "server-config" // data type ServerCfg - EVTProjectAdd = "project-add" // data type ProjectConfig - EVTProjectDelete = "project-delete" // data type ProjectConfig - EVTProjectChange = "project-state-change" // data type ProjectConfig + "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1" ) -var EVTAllList = []string{ - EVTServerConfig, - EVTProjectAdd, - EVTProjectDelete, - EVTProjectChange, -} - -// EventMsg Message send -type EventMsg struct { - Time string `json:"time"` - Type string `json:"type"` - Data interface{} `json:"data"` -} - +// EventDef Definition on one event type EventDef struct { - // SEB cbs []EventsCB sids map[string]int } +// Events Hold registered events per context type Events struct { *Context eventsMap map[string]*EventDef @@ -45,7 +38,7 @@ type Events struct { // NewEvents creates an instance of Events func NewEvents(ctx *Context) *Events { evMap := make(map[string]*EventDef) - for _, ev := range EVTAllList { + for _, ev := range xaapiv1.EVTAllList { evMap[ev] = &EventDef{ sids: make(map[string]int), } @@ -58,13 +51,13 @@ func NewEvents(ctx *Context) *Events { // GetList returns the list of all supported events func (e *Events) GetList() []string { - return EVTAllList + return xaapiv1.EVTAllList } // Register Used by a client/session to register to a specific (or all) event(s) func (e *Events) Register(evName, sessionID string) error { - evs := EVTAllList - if evName != EVTAll { + evs := xaapiv1.EVTAllList + if evName != xaapiv1.EVTAll { if _, ok := e.eventsMap[evName]; !ok { return fmt.Errorf("Unsupported event type name") } @@ -78,8 +71,8 @@ func (e *Events) Register(evName, sessionID string) error { // UnRegister Used by a client/session to unregister event(s) func (e *Events) UnRegister(evName, sessionID string) error { - evs := EVTAllList - if evName != EVTAll { + evs := xaapiv1.EVTAllList + if evName != xaapiv1.EVTAll { if _, ok := e.eventsMap[evName]; !ok { return fmt.Errorf("Unsupported event type name") } @@ -95,14 +88,14 @@ func (e *Events) UnRegister(evName, sessionID string) error { } // Emit Used to manually emit an event -func (e *Events) Emit(evName string, data interface{}) error { +func (e *Events) Emit(evName string, data interface{}, fromSid string) error { var firstErr error if _, ok := e.eventsMap[evName]; !ok { return fmt.Errorf("Unsupported event type") } - e.Log.Debugf("Emit Event %s: %v", evName, data) + e.LogSillyf("Emit Event %s: %v", evName, data) firstErr = nil evm := e.eventsMap[evName] @@ -110,17 +103,19 @@ func (e *Events) Emit(evName string, data interface{}) error { so := e.webServer.sessions.IOSocketGet(sid) if so == nil { if firstErr == nil { - firstErr = fmt.Errorf("IOSocketGet return nil") + firstErr = fmt.Errorf("IOSocketGet return nil (SID=%v)", sid) } continue } - msg := EventMsg{ - Time: time.Now().String(), - Type: evName, - Data: data, + msg := xaapiv1.EventMsg{ + Time: time.Now().String(), + FromSessionID: fromSid, + Type: evName, + Data: data, } - if err := (*so).Emit(EventTypePrefix+evName, msg); err != nil { - e.Log.Errorf("WS Emit %v error : %v", EventTypePrefix+evName, err) + + if err := (*so).Emit(evName, msg); err != nil { + e.Log.Errorf("WS Emit %v error : %v", evName, err) if firstErr == nil { firstErr = err }