#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (c) 2017 Cisco and/or its affiliates. # # 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. # import asyncio import logging import os import sys PATH=os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) sys.path.insert(0, os.path.abspath(PATH)) import netmodel.network.interfaces from netmodel.network.router import Router from netmodel.model.query import Query, ACTION_SELECT, ACTION_SUBSCRIBE from netmodel.util.daemon import Daemon from netmodel.util.log import initialize_logging log = logging.getLogger(__name__) class RouterDaemon(Daemon): def initialize(self): log.info("Starting RouterServer") initialize_logging() register_interfaces() self._router = Router() self._router.add_interface('websocketserver') self._router.add_interface('bwm') self._router.add_interface('local', router = self._router) def main(self): loop = asyncio.get_event_loop() try: loop.run_forever() except KeyboardInterrupt: pass except Exception as e: import traceback traceback.print_exc() def terminate(self): """ Function called when the RouterDaemon must stops. """ try: log.info("Stopping gracefully RouterServer") self._router.terminate() except AttributeError: # self._router_server may not exists for instance if the # socket is already in use. pass def main(): RouterDaemon('router', no_daemon = True).start() if __name__ == "__main__": main()