本文整理汇总了Python中fysom.Fysom.any_msg_sent方法的典型用法代码示例。如果您正苦于以下问题:Python Fysom.any_msg_sent方法的具体用法?Python Fysom.any_msg_sent怎么用?Python Fysom.any_msg_sent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fysom.Fysom
的用法示例。
在下文中一共展示了Fysom.any_msg_sent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: RpcClient
# 需要导入模块: from fysom import Fysom [as 别名]
# 或者: from fysom.Fysom import any_msg_sent [as 别名]
class RpcClient(object):
def __init__(self, debuglevel=0, debugname='RPC Client'):
self.debuglevel = debuglevel
self.debugname = debugname
self._error_string = ''
self.on_error_string_changed = []
# ZeroMQ
context = zmq.Context()
context.linger = 0
self._context = context
# pipe to signalize a shutdown
self._shutdown = context.socket(zmq.PUSH)
self._shutdown_uri = b'inproc://shutdown-%s' % str(uuid.uuid4()).encode()
self._shutdown.bind(self._shutdown_uri)
# pipe for outgoing messages
self._pipe = context.socket(zmq.PUSH)
self._pipe_uri = b'inproc://pipe-%s' % str(uuid.uuid4()).encode()
self._pipe.bind(self._pipe_uri)
self._thread = None # socket worker tread
self._tx_lock = threading.Lock() # lock for outgoing messages
# Socket
self.socket_uri = ''
# more efficient to reuse protobuf messages
self._socket_rx = Container()
self._socket_tx = Container()
# Heartbeat
self._heartbeat_lock = threading.Lock()
self._heartbeat_interval = 2500
self._heartbeat_timer = None
self._heartbeat_active = False
self._heartbeat_liveness = 0
self._heartbeat_reset_liveness = 5
# callbacks
self.on_socket_message_received = []
self.on_state_changed = []
# fsm
self._fsm = Fysom(
{
'initial': 'down',
'events': [
{'name': 'start', 'src': 'down', 'dst': 'trying'},
{'name': 'any_msg_received', 'src': 'trying', 'dst': 'up'},
{'name': 'heartbeat_timeout', 'src': 'trying', 'dst': 'trying'},
{'name': 'heartbeat_tick', 'src': 'trying', 'dst': 'trying'},
{'name': 'any_msg_sent', 'src': 'trying', 'dst': 'trying'},
{'name': 'stop', 'src': 'trying', 'dst': 'down'},
{'name': 'heartbeat_timeout', 'src': 'up', 'dst': 'trying'},
{'name': 'heartbeat_tick', 'src': 'up', 'dst': 'up'},
{'name': 'any_msg_received', 'src': 'up', 'dst': 'up'},
{'name': 'any_msg_sent', 'src': 'up', 'dst': 'up'},
{'name': 'stop', 'src': 'up', 'dst': 'down'},
],
}
)
self._fsm.ondown = self._on_fsm_down
self._fsm.onafterstart = self._on_fsm_start
self._fsm.ontrying = self._on_fsm_trying
self._fsm.onafterany_msg_received = self._on_fsm_any_msg_received
self._fsm.onafterheartbeat_timeout = self._on_fsm_heartbeat_timeout
self._fsm.onafterheartbeat_tick = self._on_fsm_heartbeat_tick
self._fsm.onafterany_msg_sent = self._on_fsm_any_msg_sent
self._fsm.onafterstop = self._on_fsm_stop
self._fsm.onup = self._on_fsm_up
def _on_fsm_down(self, _):
if self.debuglevel > 0:
print('[%s]: state DOWN' % self.debugname)
for cb in self.on_state_changed:
cb('down')
return True
def _on_fsm_start(self, _):
if self.debuglevel > 0:
print('[%s]: event START' % self.debugname)
self.start_socket()
self.reset_heartbeat_liveness()
self.send_ping()
self.start_heartbeat_timer()
return True
def _on_fsm_trying(self, _):
if self.debuglevel > 0:
print('[%s]: state TRYING' % self.debugname)
for cb in self.on_state_changed:
cb('trying')
return True
def _on_fsm_any_msg_received(self, _):
if self.debuglevel > 0:
print('[%s]: event ANY MSG RECEIVED' % self.debugname)
self.reset_heartbeat_liveness()
self.reset_heartbeat_timer()
return True
def _on_fsm_heartbeat_timeout(self, _):
#.........这里部分代码省略.........