bug559 some modifications
[osm/common.git] / osm_common / msgbase.py
1 # -*- coding: utf-8 -*-
2
3 # Copyright 2018 Telefonica S.A.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 # implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18 from http import HTTPStatus
19
20 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
21
22
23 class MsgException(Exception):
24 """
25 Base Exception class for all msgXXXX exceptions
26 """
27
28 def __init__(self, message, http_code=HTTPStatus.SERVICE_UNAVAILABLE):
29 """
30 General exception
31 :param message: descriptive text
32 :param http_code: <http.HTTPStatus> type. It contains ".value" (http error code) and ".name" (http error name
33 """
34 self.http_code = http_code
35 Exception.__init__(self, "messaging exception " + message)
36
37
38 class MsgBase(object):
39 """
40 Base class for all msgXXXX classes
41 """
42
43 def __init__(self):
44 pass
45
46 def connect(self, config):
47 pass
48
49 def disconnect(self):
50 pass
51
52 def write(self, topic, key, msg):
53 raise MsgException("Method 'write' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
54
55 def read(self, topic):
56 raise MsgException("Method 'read' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
57
58 async def aiowrite(self, topic, key, msg, loop=None):
59 raise MsgException("Method 'aiowrite' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
60
61 async def aioread(self, topic, loop=None, callback=None, aiocallback=None, **kwargs):
62 raise MsgException("Method 'aioread' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR)