func NewServer(addr string, port int, router *mux.Router) (*Server, error) { backend, err := graph.BackendFromConfig() if err != nil { return nil, err } g, err := graph.NewGraph(backend) if err != nil { return nil, err } tserver := topology.NewServer(g, addr, port, router) tserver.RegisterStaticEndpoints() tserver.RegisterRpcEndpoints() alertmgr := graph.NewAlert(g, router) alertmgr.RegisterRpcEndpoints() gserver, err := graph.NewServerFromConfig(g, alertmgr, router) if err != nil { return nil, err } gfe, err := mappings.NewGraphFlowEnhancer(g) if err != nil { return nil, err } pipeline := mappings.NewFlowMappingPipeline([]mappings.FlowEnhancer{gfe}) flowtable := flow.NewFlowTable() server := &Server{ Addr: addr, Port: port, Router: router, TopoServer: tserver, GraphServer: gserver, FlowMappingPipeline: pipeline, FlowTable: flowtable, } server.RegisterStaticEndpoints() server.RegisterRpcEndpoints() cfgFlowtable_expire, err := config.GetConfig().Section("analyzer").Key("flowtable_expire").Int() if err != nil || cfgFlowtable_expire < 1 { logging.GetLogger().Error("Config flowTable_expire invalid value ", cfgFlowtable_expire, err.Error()) return nil, err } go flowtable.AsyncExpire(server.flowExpire, time.Duration(cfgFlowtable_expire)*time.Minute) return server, nil }
func NewServer(addr string, port int, router *mux.Router, embedEtcd bool) (*Server, error) { backend, err := graph.BackendFromConfig() if err != nil { return nil, err } g, err := graph.NewGraph(backend) if err != nil { return nil, err } tserver := topology.NewServer("analyzer", g, addr, port, router) tserver.RegisterStaticEndpoints() tserver.RegisterRPCEndpoints() var etcd *storage.EmbeddedEtcd if embedEtcd { if etcd, err = storage.NewEmbeddedEtcdFromConfig(); err != nil { return nil, err } } alertmgr, err := graph.NewAlertFromConfig(g, router) if err != nil { return nil, err } alertmgr.RegisterRPCEndpoints() gserver, err := graph.NewServerFromConfig(g, alertmgr, router) if err != nil { return nil, err } gfe, err := mappings.NewGraphFlowEnhancer(g) if err != nil { return nil, err } pipeline := mappings.NewFlowMappingPipeline(gfe) flowtable := flow.NewFlowTable() server := &Server{ Addr: addr, Port: port, Router: router, TopoServer: tserver, GraphServer: gserver, FlowMappingPipeline: pipeline, FlowTable: flowtable, EmbeddedEtcd: etcd, } server.RegisterRPCEndpoints() cfgFlowtable_expire := config.GetConfig().GetInt("analyzer.flowtable_expire") if cfgFlowtable_expire < 1 { logging.GetLogger().Errorf("Config flowTable_expire invalid value %d : %s", cfgFlowtable_expire, err.Error()) return nil, err } go flowtable.AsyncExpire(server.flowExpire, time.Duration(cfgFlowtable_expire)*time.Minute) return server, nil }