1 # Written by Ingar Arntzen
2 # see LICENSE.txt for license information
5 This module implements a console interface to a UPnP server.
8 ##############################################
10 ##############################################
12 from upnpserver import UPnPServer
13 from BaseLib.UPnP.services import SwitchPower, URLService
14 from BaseLib.UPnP.services import BookmarkService
15 from BaseLib.UPnP.common.objectconsole import ObjectConsole
16 from BaseLib.UPnP.common.taskrunner import TaskRunner
18 class UPnPServerConsole:
20 """This class wraps ObjectConsole to implement a
21 custom console for UPnP server."""
26 self._task_runner = TaskRunner()
29 self._server = UPnPServer(self._task_runner, "Product 1.0")
31 # Switch Power Service
32 service_id = "SwitchPower"
33 service = SwitchPower(service_id)
34 self._server.add_service(service)
37 service_id_2 = "URLService"
38 service_2 = URLService(service_id_2)
39 self._server.add_service(service_2)
42 service_3 = BookmarkService()
43 self._server.add_service(service_3)
47 root_device = self._server.get_root_device()
48 name_space[root_device.name] = root_device
49 name_space[service_id] = service
50 name_space[service_id_2] = service_2
51 name_space[service_3.get_short_service_id()] = service_3
52 name_space['add_service'] = self._server.add_service
53 name_space['get_service'] = self._server.get_service
54 name_space['get_services'] = self._server.get_service_ids
55 name_space['announce'] = self._server.announce
57 self._console = ObjectConsole(self, name_space,
59 stop="_stop", name="UPnP Server")
62 """Start TaskRunner."""
63 self._task_runner.run_forever()
66 """Stop UPnPServer and TaskRunner"""
68 self._task_runner.stop()
72 """Runs the UPnP Console."""
77 ##############################################
79 ##############################################
81 if __name__ == '__main__':
83 UPnPServerConsole().run()