mirror of
https://github.com/BOSWatch/BW3-Core.git
synced 2025-12-06 07:12:04 +01:00
add isRunning/isConnected Props to server and client
This commit is contained in:
parent
cc680b578f
commit
9371b71ee0
|
|
@ -112,7 +112,7 @@ class BroadcastServer:
|
||||||
|
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
if not self._serverThread:
|
if not self.isRunning:
|
||||||
logging.debug("start udp broadcast server")
|
logging.debug("start udp broadcast server")
|
||||||
self._serverThread = threading.Thread(target=self._listen)
|
self._serverThread = threading.Thread(target=self._listen)
|
||||||
self._serverThread.name = "BroadServ"
|
self._serverThread.name = "BroadServ"
|
||||||
|
|
@ -136,7 +136,7 @@ class BroadcastServer:
|
||||||
|
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
if self._serverThread:
|
if self.isRunning:
|
||||||
logging.debug("stop udp broadcast server")
|
logging.debug("stop udp broadcast server")
|
||||||
self._serverShutdown = True
|
self._serverShutdown = True
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
|
|
@ -40,12 +40,15 @@ class TCPClient:
|
||||||
@param port: Server Port (8080)
|
@param port: Server Port (8080)
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
|
if not self.isConnected:
|
||||||
self._sock = socket
|
self._sock = socket
|
||||||
self._sock.setdefaulttimeout(self._timeout)
|
self._sock.setdefaulttimeout(self._timeout)
|
||||||
self._sock = socket.create_connection((host, port))
|
self._sock = socket.create_connection((host, port))
|
||||||
|
|
||||||
logging.debug("connected to %s:%s", host, port)
|
logging.debug("connected to %s:%s", host, port)
|
||||||
return True
|
return True
|
||||||
|
else:
|
||||||
|
logging.warning("client always connected")
|
||||||
|
return True
|
||||||
except ConnectionRefusedError:
|
except ConnectionRefusedError:
|
||||||
logging.error("cannot connect to %s:%s - connection refused", host, port)
|
logging.error("cannot connect to %s:%s - connection refused", host, port)
|
||||||
return False
|
return False
|
||||||
|
|
@ -61,9 +64,14 @@ class TCPClient:
|
||||||
|
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
|
if self.isConnected:
|
||||||
self._sock.close()
|
self._sock.close()
|
||||||
|
self._sock = None
|
||||||
logging.debug("disconnected")
|
logging.debug("disconnected")
|
||||||
return True
|
return True
|
||||||
|
else:
|
||||||
|
logging.warning("client not connected")
|
||||||
|
return True
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
logging.error("cannot disconnect - no connection established")
|
logging.error("cannot disconnect - no connection established")
|
||||||
return False
|
return False
|
||||||
|
|
@ -111,3 +119,10 @@ class TCPClient:
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
logging.exception("error while receiving")
|
logging.exception("error while receiving")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isConnected(self):
|
||||||
|
"""!Property of client connected state"""
|
||||||
|
if self._sock:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,10 @@ class TCPServer:
|
||||||
self._clientsConnectedLock = threading.Lock()
|
self._clientsConnectedLock = threading.Lock()
|
||||||
self._clientsConnected = {}
|
self._clientsConnected = {}
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
if self.isRunning:
|
||||||
|
self.stop()
|
||||||
|
|
||||||
def start(self, port=8080):
|
def start(self, port=8080):
|
||||||
"""!Start a threaded TCP socket server
|
"""!Start a threaded TCP socket server
|
||||||
|
|
||||||
|
|
@ -93,6 +97,7 @@ class TCPServer:
|
||||||
|
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
|
if not self.isRunning:
|
||||||
self._server = ThreadedTCPServer(("", port), ThreadedTCPRequestHandler)
|
self._server = ThreadedTCPServer(("", port), ThreadedTCPRequestHandler)
|
||||||
self._server.timeout = self._timeout
|
self._server.timeout = self._timeout
|
||||||
self._server.alarmQueue = self._alarmQueue
|
self._server.alarmQueue = self._alarmQueue
|
||||||
|
|
@ -106,8 +111,9 @@ class TCPServer:
|
||||||
self._server_thread.start()
|
self._server_thread.start()
|
||||||
logging.debug("TCPServer started in Thread: %s", self._server_thread.name)
|
logging.debug("TCPServer started in Thread: %s", self._server_thread.name)
|
||||||
return True
|
return True
|
||||||
except OSError:
|
else:
|
||||||
logging.exception("server always running?")
|
logging.warning("server always started")
|
||||||
|
return True
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
logging.exception("cannot start the server")
|
logging.exception("cannot start the server")
|
||||||
return False
|
return False
|
||||||
|
|
@ -117,6 +123,7 @@ class TCPServer:
|
||||||
|
|
||||||
@return True or False"""
|
@return True or False"""
|
||||||
try:
|
try:
|
||||||
|
if self.isRunning:
|
||||||
self._server.shutdown()
|
self._server.shutdown()
|
||||||
self._server_thread.join()
|
self._server_thread.join()
|
||||||
self._server_thread = None
|
self._server_thread = None
|
||||||
|
|
@ -124,9 +131,9 @@ class TCPServer:
|
||||||
self._server = None
|
self._server = None
|
||||||
logging.debug("TCPServer stopped")
|
logging.debug("TCPServer stopped")
|
||||||
return True
|
return True
|
||||||
except AttributeError:
|
else:
|
||||||
logging.exception("cannot stop - server not started?")
|
logging.warning("server always stopped")
|
||||||
return False
|
return True
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
logging.exception("cannot stop the server")
|
logging.exception("cannot stop the server")
|
||||||
return False
|
return False
|
||||||
|
|
@ -147,3 +154,10 @@ class TCPServer:
|
||||||
# todo return full list or write a print/debug method?
|
# todo return full list or write a print/debug method?
|
||||||
with self._clientsConnectedLock: # because our list is not threadsafe
|
with self._clientsConnectedLock: # because our list is not threadsafe
|
||||||
return self._clientsConnected
|
return self._clientsConnected
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isRunning(self):
|
||||||
|
"""!Property of server running state"""
|
||||||
|
if self._server:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
|
||||||
|
|
@ -48,11 +48,7 @@ try:
|
||||||
from boswatch import configYaml
|
from boswatch import configYaml
|
||||||
from boswatch.network.server import TCPServer
|
from boswatch.network.server import TCPServer
|
||||||
from boswatch.packet.packet import Packet
|
from boswatch.packet.packet import Packet
|
||||||
from boswatch.plugin.pluginManager import PluginManager
|
|
||||||
from boswatch.descriptor.descriptor import Descriptor
|
|
||||||
from boswatch.filter.doubeFilter import DoubleFilter
|
|
||||||
from boswatch.utils import header
|
from boswatch.utils import header
|
||||||
from boswatch.network.broadcast import BroadcastClient
|
|
||||||
from boswatch.network.broadcast import BroadcastServer
|
from boswatch.network.broadcast import BroadcastServer
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
logging.exception("cannot import modules")
|
logging.exception("cannot import modules")
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class Test_ServerClient:
|
||||||
def test_clientDisconnectFailed(self):
|
def test_clientDisconnectFailed(self):
|
||||||
"""!Disconnect while no connection is established"""
|
"""!Disconnect while no connection is established"""
|
||||||
self.testClient = TCPClient()
|
self.testClient = TCPClient()
|
||||||
assert not self.testClient.disconnect()
|
assert self.testClient.disconnect()
|
||||||
|
|
||||||
def test_clientTransmitFailed(self):
|
def test_clientTransmitFailed(self):
|
||||||
"""!Transmit while no connection is established"""
|
"""!Transmit while no connection is established"""
|
||||||
|
|
@ -135,7 +135,7 @@ class Test_ServerClient:
|
||||||
def test_serverStopFailed(self, useServer):
|
def test_serverStopFailed(self, useServer):
|
||||||
"""!Test to stop a stopped server"""
|
"""!Test to stop a stopped server"""
|
||||||
assert self.testServer.stop()
|
assert self.testServer.stop()
|
||||||
assert not self.testServer.stop()
|
assert self.testServer.stop()
|
||||||
|
|
||||||
def test_serverDoubleStart(self):
|
def test_serverDoubleStart(self):
|
||||||
"""!Test to start the server twice"""
|
"""!Test to start the server twice"""
|
||||||
|
|
@ -145,7 +145,7 @@ class Test_ServerClient:
|
||||||
assert self.testServer1.start()
|
assert self.testServer1.start()
|
||||||
assert not self.testServer2.start()
|
assert not self.testServer2.start()
|
||||||
assert self.testServer1.stop()
|
assert self.testServer1.stop()
|
||||||
assert not self.testServer2.stop()
|
assert self.testServer2.stop()
|
||||||
|
|
||||||
def test_serverGetOutput(self, useServer):
|
def test_serverGetOutput(self, useServer):
|
||||||
"""!Send data to server with 2 clients, check '[ack]' and data on server queue"""
|
"""!Send data to server with 2 clients, check '[ack]' and data on server queue"""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue