76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
# !/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
import time
|
|
from threading import Thread
|
|
|
|
from .socket_client import AgentSocket
|
|
from . import presenter_message as pm
|
|
from . import presenter_datatype as datatype
|
|
|
|
|
|
class PresenterAgent():
|
|
def __init__(self, server_ip, port):
|
|
self.socket = AgentSocket(server_ip, port)
|
|
self._closed = False
|
|
|
|
def connect_server(self):
|
|
return self.socket.connect()
|
|
|
|
def start_heard_beat_thread(self):
|
|
self.heart_beat_thread = Thread(target=self._keep_alive)
|
|
self.heart_beat_thread.start()
|
|
|
|
def _keep_alive(self):
|
|
msg = pm.heartbeat_message()
|
|
|
|
while True:
|
|
if self._closed:
|
|
print("ERROR:Heard beat thread exit")
|
|
break
|
|
|
|
self.socket.send_msg(msg)
|
|
time.sleep(2)
|
|
|
|
def exit(self):
|
|
self.socket.close()
|
|
self._closed = True
|
|
|
|
|
|
def StartPresenterAgent(msg_queue, server_ip, port, open_status, data_respone_counter):
|
|
agent = PresenterAgent(server_ip, port)
|
|
ret = agent.connect_server()
|
|
if ret:
|
|
print("ERROR:Connect server failed, ret =", ret)
|
|
return
|
|
|
|
open_status.value = datatype.STATUS_CONNECTED
|
|
|
|
while True:
|
|
data = msg_queue.get()
|
|
|
|
if open_status.value == datatype.STATUS_EXITING:
|
|
open_status.value = datatype.STATUS_EXITTED
|
|
agent.exit()
|
|
break
|
|
|
|
if data:
|
|
agent.socket.send_msg(data)
|
|
|
|
msg_name, msg_body = agent.socket.recv_msg()
|
|
if (msg_name == None) or (msg_body == None):
|
|
print("ERROR:Recv invalid message, message name ", msg_name)
|
|
continue
|
|
|
|
if ((open_status.value == datatype.STATUS_CONNECTED)
|
|
and pm.is_open_channel_response(msg_name)):
|
|
print("Received open channel respone")
|
|
open_status.value = datatype.STATUS_OPENED
|
|
agent.start_heard_beat_thread()
|
|
print("presenter agent change connect_status to ", open_status.value)
|
|
|
|
if ((open_status.value == datatype.STATUS_OPENED) and
|
|
pm.is_image_frame_response(msg_name)):
|
|
data_respone_counter.value += 1
|
|
print("send ok ", data_respone_counter.value)
|
|
|