mirror of
https://github.com/haiwen/ccnet-server.git
synced 2025-09-05 14:50:21 +00:00
Initial commit of Ccnet server.
This commit is contained in:
50
python/ccnet/async/mqclientproc.py
Normal file
50
python/ccnet/async/mqclientproc.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import logging
|
||||
from .processor import Processor
|
||||
from ccnet.message import message_from_string, message_to_string
|
||||
|
||||
INIT = 0
|
||||
REQUEST_SENT = 1
|
||||
READY = 2
|
||||
|
||||
SC_MSG = '300'
|
||||
SC_UNSUBSCRIBE = '301'
|
||||
|
||||
class MqClientProc(Processor):
|
||||
def __init__(self, *args, **kwargs):
|
||||
Processor.__init__(self, *args, **kwargs)
|
||||
self.state = INIT
|
||||
self.callback = None
|
||||
|
||||
def start(self, *argv):
|
||||
req = 'mq-server ' + ' '.join(argv)
|
||||
self.send_request(req)
|
||||
self.state = REQUEST_SENT
|
||||
|
||||
def set_callback(self, cb):
|
||||
self.callback = cb
|
||||
|
||||
def handle_response(self, code, code_msg, content):
|
||||
if self.state == REQUEST_SENT:
|
||||
if code[0] != '2':
|
||||
logging.warning('bad response: %s %s\n', code, code_msg)
|
||||
self.done(False)
|
||||
|
||||
self.state = READY
|
||||
|
||||
elif self.state == READY:
|
||||
if code[0] != '2' and code[0] != '3':
|
||||
logging.warning('bad response: %s %s\n', code, code_msg)
|
||||
return
|
||||
|
||||
if code[0] == '3' and code[2] == '0':
|
||||
msg = message_from_string(content[:-1])
|
||||
if self.callback:
|
||||
self.callback(msg)
|
||||
|
||||
def put_message(self, msg):
|
||||
buf = message_to_string(msg)
|
||||
self.send_update(SC_MSG, '', buf + '\000')
|
||||
|
||||
def unsubscribe(self):
|
||||
self.send_update(SC_UNSUBSCRIBE, '')
|
||||
self.done(True)
|
Reference in New Issue
Block a user