1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00

Sock impl

This commit is contained in:
topilski 2019-09-05 03:38:27 -04:00
parent 08a6a27eb1
commit 4c0b38ebe6
4 changed files with 21 additions and 19 deletions

View file

@ -4,6 +4,7 @@ from pyfastocloud.fastocloud_client import FastoCloudClient, Fields, Commands
from pyfastocloud.client_handler import IClientHandler
from pyfastocloud.json_rpc import Request, Response
from pyfastocloud.client_constants import ClientStatus
import pyfastocloud.socket.gevent as gsocket
from app.service.stream_handler import IStreamHandler
import app.common.constants as constants
@ -44,7 +45,7 @@ class ServiceClient(IClientHandler):
self.id = sid
self._request_id = 0
self._handler = handler
self._client = FastoCloudClient(host, port, self)
self._client = FastoCloudClient(host, port, self, gsocket)
self._set_runtime_fields()
def connect(self):
@ -192,10 +193,7 @@ class ServiceClient(IClientHandler):
self._handler.on_client_state_changed(status)
# private
def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None,
version=None,
os=None,
vods_in=None):
def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, version=None, os=None, vods_in=None):
self._http_host = http_host
self._vods_host = vods_host
self._cods_host = cods_host

View file

@ -1,11 +1,12 @@
from app.common.subscriber.entry import Subscriber, Device
from pyfastocloud.subscriber_client import SubscriberClient
from pyfastocloud.client import make_utc_timestamp
import pyfastocloud.socket.gevent as gsocket
class SubscriberConnection(SubscriberClient):
def __init__(self, sock, addr, handler):
super(SubscriberConnection, self).__init__(sock, addr, handler)
super(SubscriberConnection, self).__init__(sock, addr, handler, gsocket)
self._info = None
self._current_stream_id = str()
self._device = None

View file

@ -1,3 +1,6 @@
import logging
import socket
from app.service.service_manager import ServiceManager
from app.service.subscriber_client import SubscriberConnection
@ -6,17 +9,12 @@ from app.common.constants import PlayerMessage
from pyfastocloud.subscriber_client import Commands
from pyfastocloud.client import make_utc_timestamp
from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus
from gevent import socket
from gevent import select
import logging
import pyfastocloud.socket.gevent as gsocket
def check_is_auth_client(client) -> bool:
if not client:
return False
return client.is_active()
@ -27,7 +25,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
def __init__(self, host: str, port: int, socketio):
super(SubscribersServiceManager, self).__init__(host, port, socketio)
serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock = gsocket.Socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.bind((host, SubscribersServiceManager.SUBSCRIBER_PORT))
serversock.listen(10)
self._subscribers_server_socket = serversock
@ -47,7 +45,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
if server.is_connected():
rsockets.append(server.socket())
readable, writeable, _ = select.select(rsockets, [], [], 1)
readable, writeable, _ = gsocket.Select(rsockets, [], [], 1)
ts_sec = make_utc_timestamp() / 1000
for read in readable:
# income subscriber connection

View file

@ -1,13 +1,16 @@
#!/usr/bin/env python3
from app import app, servers_manager
import logging
import argparse
from gevent.pywsgi import WSGIServer
import gevent
from gevent.pywsgi import WSGIServer
PROJECT_NAME = 'iptv_admin'
from app import app, servers_manager
PROJECT_NAME = 'fastocloud_iptv_admin'
HOST = '0.0.0.0'
PORT = 8080
LOGS_PATH = PROJECT_NAME + '.log'
def servers_refresh():
@ -18,10 +21,12 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]')
parser.add_argument('--port', help='port (default: {0})'.format(PORT), default=PORT)
parser.add_argument('--host', help='host (default: {0})'.format(HOST), default=HOST)
parser.add_argument('--logs_path', help='logs path (default: {0})'.format(LOGS_PATH), default=LOGS_PATH)
argv = parser.parse_args()
import logging
logging.basicConfig(filename='admin.log', filemode='w', level=logging.DEBUG, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S')
logging.basicConfig(filename=argv.logs_path, filemode='a', level=logging.DEBUG,
format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S')
http_server = WSGIServer((argv.host, argv.port), app)
srv_greenlet = gevent.spawn(http_server.serve_forever)