X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_common%2Fmsgbase.py;h=7c27f644395a12a849bc293d10a8121987ce0101;hb=10602af49b01f0370761e913eacf485e77e4fde0;hp=8978085dcc3cb2589dd0251b9edb1cdfe5871d2c;hpb=87858cab98b3b169fc891fd2e0a0ba10f8b46127;p=osm%2Fcommon.git diff --git a/osm_common/msgbase.py b/osm_common/msgbase.py index 8978085..7c27f64 100644 --- a/osm_common/msgbase.py +++ b/osm_common/msgbase.py @@ -15,8 +15,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -# import asyncio +import logging from http import HTTPStatus +from osm_common.common_utils import FakeLock +from threading import Lock __author__ = "Alfonso Tierno " @@ -41,8 +43,24 @@ class MsgBase(object): Base class for all msgXXXX classes """ - def __init__(self): - pass + def __init__(self, logger_name='msg', lock=False): + """ + Constructor of FsBase + :param logger_name: logging name + :param lock: Used to protect simultaneous access to the same instance class by several threads: + False, None: Do not protect, this object will only be accessed by one thread + True: This object needs to be protected by several threads accessing. + Lock object. Use thi Lock for the threads access protection + """ + self.logger = logging.getLogger(logger_name) + if not lock: + self.lock = FakeLock() + elif lock is True: + self.lock = Lock() + elif isinstance(lock, Lock): + self.lock = lock + else: + raise ValueError("lock parameter must be a Lock class or boolean") def connect(self, config): pass @@ -51,13 +69,13 @@ class MsgBase(object): pass def write(self, topic, key, msg): - raise MsgException("Method 'write' not implemented") + raise MsgException("Method 'write' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR) def read(self, topic): - raise MsgException("Method 'read' not implemented") + raise MsgException("Method 'read' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR) - async def aiowrite(self, topic, key, msg, loop): - raise MsgException("Method 'aiowrite' not implemented") + async def aiowrite(self, topic, key, msg, loop=None): + raise MsgException("Method 'aiowrite' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR) - async def aioread(self, topic, loop): - raise MsgException("Method 'aioread' not implemented") + async def aioread(self, topic, loop=None, callback=None, aiocallback=None, group_id=None, **kwargs): + raise MsgException("Method 'aioread' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR)