Source code for gemstone.core.container
import abc
[docs]class Container(abc.ABC):
"""
A container for exposed methods and/or event handlers
for a better modularization of the application.
Example usage
::
# in users.py
class UsersModule(gemstone.Container):
@gemstone.exposed_method("users.register")
def users_register(self, username, password):
pass
@gemstone.exposed_method("users.login")
def users_login(self)
"""
def __init__(self):
self.microservice = None
def set_microservice(self, microservice):
self.microservice = microservice
[docs] def get_executor(self):
"""
Returns the executor instance used by the microservice.
"""
return self.microservice.get_executor()
[docs] def get_io_loop(self):
"""
Returns the current IOLoop used by the microservice.
:return:
"""
return self.microservice.get_io_loop()
def get_exposed_methods(self):
exposed = []
for item in self._iter_methods():
if getattr(item, "_exposed_public", False) or \
getattr(item, "_exposed_private", False):
exposed.append(item)
return exposed
def get_event_handlers(self):
handlers = []
for item in self._iter_methods():
if getattr(item, "_event_handler", False):
handlers.append(item)
return handlers
def _iter_methods(self):
for item_name in dir(self):
item = getattr(self, item_name)
if callable(item):
yield item