Use external objects queue if environment var BITMESSAGE_HYBRID is set
This commit is contained in:
parent
ffa12acad5
commit
ea8b7cfe46
|
@ -218,6 +218,13 @@ class Main(object):
|
|||
|
||||
self.setSignalHandler()
|
||||
|
||||
if os.getenv('BITMESSAGE_HYBRID'): # use objqueue of an external app
|
||||
import queues
|
||||
from tests import queue
|
||||
|
||||
state.enableNetwork = False
|
||||
queues.objectProcessorQueue = queue.ObjQueue()
|
||||
|
||||
set_thread_name("PyBitmessage")
|
||||
|
||||
state.dandelion = config.safeGetInt('network', 'dandelion')
|
||||
|
|
46
src/tests/queue.py
Normal file
46
src/tests/queue.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
import logging
|
||||
|
||||
import zmq
|
||||
|
||||
|
||||
logger = logging.getLogger('default')
|
||||
|
||||
|
||||
class ObjQueue(object):
|
||||
OBJECT_TYPES = {
|
||||
0: 'getpubkey',
|
||||
1: 'pubkey',
|
||||
2: 'msg',
|
||||
3: 'broadcast',
|
||||
0x746f72: 'onionpeer',
|
||||
0x493250: 'i2p',
|
||||
0x61646472: 'addr'
|
||||
}
|
||||
|
||||
def __init__(self, tag=b'obj'):
|
||||
context = zmq.Context()
|
||||
self.socket = context.socket(zmq.SUB)
|
||||
self.socket.connect('tcp://localhost:5556')
|
||||
self.socket.setsockopt(zmq.SUBSCRIBE, tag)
|
||||
logging.info(
|
||||
'IDENTITY: %s, LINGER: %s, HWM: %s',
|
||||
self.socket.get(zmq.IDENTITY),
|
||||
self.socket.linger,
|
||||
self.socket.hwm)
|
||||
|
||||
def get(self):
|
||||
while True:
|
||||
data = self.socket.recv()
|
||||
tag, data = data.split(b'\x00', 1)
|
||||
if tag == b'obj':
|
||||
obj_type, content = data.split(b'\x00', 1)
|
||||
obj_type = int(obj_type)
|
||||
if obj_type not in self.OBJECT_TYPES:
|
||||
logging.warning(
|
||||
'Received an object of unknown type %i!', obj_type)
|
||||
continue
|
||||
data = (obj_type, content)
|
||||
break
|
||||
else:
|
||||
logging.warning('Received msg with tag %s:\n%s', tag, data)
|
||||
return data
|
Reference in New Issue
Block a user