1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00
This commit is contained in:
topilski 2019-09-03 11:26:31 -04:00
parent a840fdcfb4
commit 96c043ae02
2 changed files with 17 additions and 45 deletions

View file

@ -10,6 +10,13 @@ from gevent import socket
from gevent import select from gevent import select
def check_is_auth_client(client) -> bool:
if not client:
return False
return client.is_active()
class ServiceManager(IClientHandler): class ServiceManager(IClientHandler):
SUBSCRIBER_PORT = 6000 SUBSCRIBER_PORT = 6000
BANDWIDTH_PORT = 5000 BANDWIDTH_PORT = 5000
@ -104,12 +111,7 @@ class ServiceManager(IClientHandler):
def on_client_state_changed(self, client, status: ClientStatus): def on_client_state_changed(self, client, status: ClientStatus):
pass pass
# protected # protected
def _check_is_auth_client(self, client) -> bool:
if not client:
return False
return client.is_active()
def _handle_server_ping_command(self, client, resp: Response): def _handle_server_ping_command(self, client, resp: Response):
pass pass
@ -155,7 +157,7 @@ class ServiceManager(IClientHandler):
client.device = found_device client.device = found_device
def _handle_get_server_info(self, client, cid: str, params: dict): def _handle_get_server_info(self, client, cid: str, params: dict):
if not self._check_is_auth_client(client): if not check_is_auth_client(client):
client.check_activate_fail(cid, 'User not active') client.check_activate_fail(cid, 'User not active')
client.disconnect() client.disconnect()
return return
@ -166,15 +168,16 @@ class ServiceManager(IClientHandler):
pass pass
def _handle_get_channels(self, client, cid: str, params: dict): def _handle_get_channels(self, client, cid: str, params: dict):
if not self._check_is_auth_client(client): if not check_is_auth_client(client):
client.check_activate_fail(cid, 'User not active') client.check_activate_fail(cid, 'User not active')
client.disconnect() client.disconnect()
return return
client.get_channels_success(cid) channels = client.info.get_streams()
client.get_channels_success(cid, channels)
def _handle_get_runtime_channel_info(self, client, cid: str, params: dict): def _handle_get_runtime_channel_info(self, client, cid: str, params: dict):
if not self._check_is_auth_client(client): if not check_is_auth_client(client):
client.check_activate_fail(cid, 'User not active') client.check_activate_fail(cid, 'User not active')
client.disconnect() client.disconnect()
return return

View file

@ -3,9 +3,9 @@ from pyfastocloud.subscriber_client import SubscriberClient
from pyfastocloud.client import make_utc_timestamp from pyfastocloud.client import make_utc_timestamp
class SubscriberConnection(object): class SubscriberConnection(SubscriberClient):
def __init__(self, sock, addr, handler): def __init__(self, sock, addr, handler):
self._client = SubscriberClient(sock, addr, handler) super(SubscriberConnection, self).__init__(sock, addr, handler)
self._info = None self._info = None
self._current_stream_id = str() self._current_stream_id = str()
self._device = None self._device = None
@ -45,44 +45,13 @@ class SubscriberConnection(object):
self._last_ping_ts = value self._last_ping_ts = value
def recv_data(self) -> bool: def recv_data(self) -> bool:
data = self._client.read_command() data = self.read_command()
if not data: if not data:
return False return False
self._client.process_commands(data) self.process_commands(data)
return True return True
def socket(self):
return self._client.socket()
def ping(self):
return self._client.ping(self._gen_request_id())
def disconnect(self):
return self._client.disconnect()
def is_active(self):
return self._client.is_active()
def activate_fail(self, cid: str, error: str):
return self._client.activate_fail(cid, error)
def activate_success(self, cid: str):
return self._client.activate_success(cid)
def check_activate_fail(self, command_id: str, error: str):
return self._client.check_activate_fail(command_id, error)
def get_runtime_channel_info_success(self, command_id, sid: str, watchers: int):
return self._client.get_runtime_channel_info_success(command_id, sid, watchers)
def get_channels_success(self, cid: str):
channels = self.info.get_streams()
return self._client.get_channels_success(cid, channels)
def get_server_info_success(self, cid: str, bandwidth_host: str):
return self._client.get_server_info_success(cid, bandwidth_host)
# private # private
def _gen_request_id(self) -> int: def _gen_request_id(self) -> int:
current_value = self._request_id current_value = self._request_id