X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fagent%2Fapiv1.go;h=c5f4d2210fbb54c2c3c5f683703df9027f25f5cb;hb=7c9ab951706232bc958e9cfa88cbef2a40311044;hp=d0e5a1cf84a78750cee4f41d72b60edcd42fd61b;hpb=45f6472d1e8ecad428da314a6d762143f033865d;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/agent/apiv1.go b/lib/agent/apiv1.go index d0e5a1c..c5f4d22 100644 --- a/lib/agent/apiv1.go +++ b/lib/agent/apiv1.go @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 "IoT.bzh" + * Copyright (C) 2017-2018 "IoT.bzh" * Author Sebastien Douheret * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,9 +21,9 @@ import ( "fmt" "strconv" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent/lib/xdsconfig" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xsapiv1" "github.com/gin-gonic/gin" - "github.com/iotbzh/xds-agent/lib/xdsconfig" - "github.com/iotbzh/xds-server/lib/xsapiv1" ) const apiBaseURL = "/api/v1" @@ -117,6 +117,30 @@ func (s *APIService) AddXdsServer(cfg xdsconfig.XDSServerConf) (*XdsServer, erro // Declare passthrough routes s.sdksPassthroughInit(svr) + + // Register callback on Connection + svr.ConnectOn(func(server *XdsServer) error { + + // Add server to list + s.xdsServers[server.ID] = svr + + // Register event forwarder + if err := s.sdksEventsForwardInit(server); err != nil { + s.Log.Errorf("XDS Server %v - sdk event forwarding error: %v", server.ID, err) + } + + // Load projects + if err := s.projects.Init(server); err != nil { + s.Log.Errorf("XDS Server %v - project init error: %v", server.ID, err) + } + + // Registered to all events + if err := server.EventRegister(xsapiv1.EVTAll, ""); err != nil { + s.Log.Errorf("XDS Server %v - register all events error: %v", server.ID, err) + } + + return nil + }) } // Established connection @@ -127,24 +151,6 @@ func (s *APIService) AddXdsServer(cfg xdsconfig.XDSServerConf) (*XdsServer, erro delete(s.xdsServers, cfg.ID) } - // Add to map - s.xdsServers[svr.ID] = svr - - // Register event forwarder - s.sdksEventsForwardInit(svr) - - // Load projects - if err == nil && svr.Connected { - err = s.projects.Init(svr) - } - - // Registered to all events - if err == nil && svr.Connected { - if err = svr.EventRegister(xsapiv1.EVTAll, ""); err != nil { - s.Log.Errorf("XDS Server %v - register all events error: %v", svr.ID, err) - } - } - return svr, err }