Dmitri Bogomolov
7a89109fc9
and use logging without risk of circular import. Only subpackage that imports from debug is bitmessageqt - because it also uses debug.resetLogging(). Instead of from debug import logger is now recommended to use: import logging logger = logging.getLogger('default') All subclasses of StoppableThread now have a logger attribute. All threading related stuff except for set_thread_name() was moved from helper_threading to network.threads. Fixed two my mistakes from previous edit of debug in a1a8d3a: - logger.handlers is not dict but iterable - sys.excepthook should be set unconditionally
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import logging
|
|
|
|
from messagetypes import MsgBase
|
|
|
|
logger = logging.getLogger('default')
|
|
|
|
|
|
class Message(MsgBase):
|
|
"""Encapsulate a message"""
|
|
# pylint: disable=attribute-defined-outside-init
|
|
|
|
def decode(self, data):
|
|
"""Decode a message"""
|
|
# UTF-8 and variable type validator
|
|
if isinstance(data["subject"], str):
|
|
self.subject = unicode(data["subject"], 'utf-8', 'replace')
|
|
else:
|
|
self.subject = unicode(str(data["subject"]), 'utf-8', 'replace')
|
|
if isinstance(data["body"], str):
|
|
self.body = unicode(data["body"], 'utf-8', 'replace')
|
|
else:
|
|
self.body = unicode(str(data["body"]), 'utf-8', 'replace')
|
|
|
|
def encode(self, data):
|
|
"""Encode a message"""
|
|
super(Message, self).__init__()
|
|
try:
|
|
self.data["subject"] = data["subject"]
|
|
self.data["body"] = data["body"]
|
|
except KeyError as e:
|
|
logger.error("Missing key %s", e)
|
|
return self.data
|
|
|
|
def process(self):
|
|
"""Process a message"""
|
|
logger.debug("Subject: %i bytes", len(self.subject))
|
|
logger.debug("Body: %i bytes", len(self.body))
|