oon


Nameoon JSON
Version 0.0.5 PyPI version JSON
download
home_page
SummaryPackage for simplify classes and objects transfer over network
upload_time2024-01-23 08:48:38
maintainer
docs_urlNone
authorIvashka (Ivan Rakov)
requires_python
license
keywords python network sockets objects classes oon
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">OON
<h3 align="center">Objects Over Network protocol</h3>
<p>OON - module for python, which allows you to quickly and conveniently transfer objects of python classes over network</p>
<br>
<p><b>install:</b></p>
<p>install python oon module with pip:</p>
<p><code>pip3 install oon</code></p>
<br>
<p><b>usage:</b></p>
<p>OON is able to automaticly convert objects of your custom classes to dicts and strings and to form network message for transfering it</p>
<p>It can act like a server or a client depends on what you need</p>
<p>For example let's assume your python programs with some data related to cars and you have sepparate file cars.py with classes for different cars:</p>
<pre>

    ################# cars.py ###################
    import enum
    class CarMark(enum.Enum):
        Volvo = 0
        Toyota = 1
        Ford = 2

    class Car:
        mark : CarMark = None
        speed : int = None

    class TrucTrailer:
        car_inside : Car = None
        car_count : int = None

    class Truc(Car):
        trailer : TrucTrailer = None

    class VolvoCar(Car):
        __slots__ = ['wheels']
        mark = CarMark.Volvo
        def __init__(self, speed = 10, wheels = 4):
            self.speed = speed
            self.wheels = wheels
        def show_info(self):
            print(f"VolvoCar\n wheels:{self.wheels} speed:{self.speed}, mark:{self.mark}")

    class FordTruck(Truc):
        mark = CarMark.Ford
        def __init__(self, speed = 10, car : Car = None, count = 0):
            self.trailer = TrucTrailer()
            self.speed = speed
            self.trailer.car_inside = car
            self.trailer.car_count = count
        def show_info(self):
            print(f"FordTruck\n speed:{self.speed}, mark:{self.mark}, cars inside trailer:{self.trailer.car_count}")
            print(f"car inside trailer info:")
            self.trailer.car_inside.show_info()
</pre>
<p>So you also have main.py file where all other work done:</p>
<pre>

    ################# main.py ###################
    import cars    #import file with all classes defenitions

    my_car = cars.VolvoCar(speed=35, wheels=4)
    my_truck = cars.FordTruck(speed=20, car=my_car, count=1)
    print("\n")
    my_truck.show_info()   #show info about car
    print("\n")
</pre>
<p>Now you want to transfer <code>my_truck</code> object to other host. Let's assume this side will be server and other - client</p>
<p>To do this - just import oon and turn it on with server mode, wait for client connection and send your <code>my_truck</code> object:</p>
<p><b>Note: ALL FIELDS IN YOUR CLASSES MUST HAVE DEFAULT VALUES</b></p>
<p><b>also fields of type list, dict, tuple which contain several objects of other classes does not supported YET</b></p>
<pre>

    ################# new main.py - now server side ###################
    import oon     #import objects over network protocol
    import cars

    my_car = cars.VolvoCar(speed=35, wheels=4)
    my_truck = cars.FordTruck(speed=20, car=my_car, count=1)
    print("\n")
    my_truck.show_info()
    print("\n")

    exitcode = oon.turn_on(modules=[cars], is_server=True)   #turn on oon - returns ExCode
    if exitcode != oon.ExCode.Success:
        print(f"failed to start server! {exitcode}")
        exit(1)

    client, exitcode = oon.accept_net_connection()   #wait for client connection - returns object of _NetClient
    print(f"client with ip {client.addr}")
    if exitcode != oon.ExCode.Success:
        print(f"something wrong with connection or timeouted! {exitcode}")
        exit(1)

    netmessage, exitcode = oon.generate_net_message(my_truck)   #generate network message from your object - returns _NetMessage and ExCode
    if exitcode != oon.ExCode.Success:
        print(f"failed to generate network message! {exitcode}")

    exitcode = oon.send_data(netmessage, client)    #send generated message - returns ExCode
    if exitcode != oon.ExCode.Success:
        print(f"failed to transfer data! {exitcode}")

    oon.close_client_connection(client)    # close connection with client
    client = None
    exitcode = oon.turn_off()      #turn server off
    if exitcode == oon.ExCode.Success:
        print("server is off")
    else: print("failed to stop server")
</pre>
<p>now you can create <code>client.py</code> which will be client (it also needs cars.py file):</p>
<pre>

    ################# client.py ###################
    import oon
    import cars

    exitcode = oon.turn_on(modules=[cars], is_server=False)

    if exitcode != oon.ExCode.Success:
        print(f"failed to start client! {exitcode}")
        exit(1)

    exitcode = oon.connect_to_srv()
    if exitcode != oon.ExCode.Success:
        print(f"failed to connect to srv! {exitcode}")
        exit(1)

    netmessage, exitcode = oon.receive_data(bytes=1024)
    car = netmessage.netobj
    print("\n")
    car.show_info()
    print("\n")

</pre>
<p>now to test - start <code>python main.py</code> and <code>python client.py</code></p>
<p>on server:</p>
<pre>

    FordTruck
     speed:20, mark:CarMark.Ford, cars inside trailer:1
    car inside trailer info:
    VolvoCar
    wheels:4 speed:35, mark:CarMark.Volvo


    client with ip 127.0.0.1
    server is off
</pre>
<p>on client:</p>
<pre>

    FordTruck
     speed:20, mark:CarMark.Ford, cars inside trailer:1
    car inside trailer info:
    VolvoCar
    wheels:4 speed:35, mark:CarMark.Volvo
</pre>
<br>
<br>
<p><b>docs:</b></p>
<p>info about all supported data types, all available functions, returns and objects:</p>
<p>all functions:</p>
<table border="2">
  <thead>
    <tr>
      <th>Function</th>
      <th>Parameters</th>
      <th>Purpose</th>
      <th>Condition to Use</th>
      <th>Return</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><b>turn_on()</b></td>
      <td><b>modules : list</b> - list of modules with your custom classes,<br><b>classes : list</b> - list of your custom unit classes which aren't located in your modules,<br><b>is_server : bool</b> - start as server or as client,<br><b>ip : str</b> - ip,<br><b>port : int</b> - port,<br><b>encoding : str</b> - what encoding to use,<br><b>timeout : int</b> - timeout of future operations,<br><b>queue_size : int</b> - size of connections in queue</td>
      <td>start oon</td>
      <td>if not started</td>
      <td><b>ExCode.Success</b> or <b>ExCode.StartFail</b></td>
    </tr>
    <tr>
      <td><b>turn_off()</b></td>
      <td>no</td>
      <td>turn off oon</td>
      <td>if started and if no clients active if in server mode</td>
      <td><b>ExCode.Success</b> or <b>ExCode.StopFail</b><br>If StopFail on server mode - maybe some clients are still active, close them before stopping</td>
    </tr>
    <tr>
      <td><b>accept_net_connection()</b></td>
      <td><b>client_timeout : int</b> - timeout of future operations with client connection</td>
      <td>wait for client connection until timeout</td>
      <td>if started in server mode</td>
      <td><b>(_NetClient, ExCode.Success)</b> - if all ok<br><b>(None, ExCode.BadConn)</b> - if something wrong with listening socket<br><b>(None, ExCode.Timeout)</b> - if timeouted<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>close_client_connection()</b></td>
      <td><b>client : _NetClient</b> - client</td>
      <td>close connection with client</td>
      <td>if started in server mode</td>
      <td><b>(_NetClient, ExCode.Success)</b> - if all ok<br><b>(None, ExCode.BadConn)</b> - if something wrong with client<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>connect_to_srv()</b></td>
      <td>no</td>
      <td>connect to server</td>
      <td>if started in client mode and not connected</td>
      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadConn</b> - if something wrong with connection, or already connected<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>disconnect_from_srv()</b></td>
      <td>no</td>
      <td>disconnect from server</td>
      <td>if started in client mode and connected</td>
      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadConn</b> - if something wrong with connection, or already disconnected<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>generate_net_message()</b></td>
      <td>netobj : Any - object you want to transfer,<br>fields_to_ignore : list - what fileds of object you don't want to transfer,<br>uuid : str - generated if nothing specified</td>
      <td>generate network message</td>
      <td>if started</td>
      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if your objects does not meet the requirements<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>load_net_message_from_str()</b></td>
      <td>messtr : str - json string,<br>fields_to_ignore : list - field not to load from string</td>
      <td>load network message from it's json string variant. Uses automatically inside <b>receive_data()</b> method</td>
      <td>if started</td>
      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if something wrong with json string or with your classes in your module<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>receive_data()</b></td>
      <td>bytes : int - size of message to expect,<br>client : _NetClient - client. Only if started in server mode!</td>
      <td>receive data from client or server</td>
      <td>if started. If in client mode, needs to be connected to server</td>
      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if failed to <b>load_net_message_from_str()</b><br><b>(None, ExCode.BadConn)</b> - if something wrong with connection<br><b>(None, ExCode.Timeout)</b> - if timeouted<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>send_data()</b></td>
      <td>netmessage : _NetMessage - generated network message,<br>client : _NetClient - client. Only if started in server mode!</td>
      <td>send data to client or server</td>
      <td>if started. If in client mode, needs to be connected to server</td>
      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadData</b> - if you give strange data<br><b>ExCode.BadConn</b> - if something wrong with client<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>
    </tr>
    <tr>
      <td><b>is_running()</b></td>
      <td>no</td>
      <td>get info about oon status</td>
      <td>no</td>
      <td><b>True</b> - running<br><b>False</b> - not running</td>
    </tr>
    <tr>
      <td><b>is_connected()</b></td>
      <td>no</td>
      <td>get info about connect status (Does not tell info about other side connection state!)</td>
      <td>if started in client mode</td>
      <td><b>True</b> - connected<br><b>False</b> - not connected</td>
    </tr>
  </tbody>
</table>
<br>
<p>all objects:</p>
<br>
<p><b>_NetMessage (message for transfering between hosts):</b></p>
<table border="2">
  <thead>
    <tr>
      <th>Field</th>
      <th>Purpose</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><b>create_code : ExCode</b></td>
      <td>signals if object created as expected. This field returns as exitcode of related functions when generating or loading message</td>
    </tr>
    <tr>
      <td><b>json_string : str</b></td>
      <td>message in json string form, this is data that is actually being transferred</td>
    </tr>
    <tr>
      <td><b>netobj : Any</b></td>
      <td>actual object from your custom module</td>
    </tr>
    <tr>
      <td><b>uuid : str</b></td>
      <td>uuid of message</td>
    </tr>
  </tbody>
</table>
<br>
<p><b>_NetClient (container for all data related to client connection):</b></p>
<table border="2">
  <thead>
    <tr>
      <th>Field</th>
      <th>Purpose</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><b>alive : Bool</b></td>
      <td>if connection wasn't closed manually.This field does not reflect the connection status at the other end</td>
    </tr>
    <tr>
      <td><b>socket : socket.socket</b></td>
      <td>clisent connection socket</td>
    </tr>
    <tr>
      <td><b>addr : str</b></td>
      <td>ip</td>
    </tr>
    <tr>
      <td><b>port : int</b></td>
      <td>port</td>
    </tr>
    <tr>
      <td><b>uuid : str</b></td>
      <td>uuid</td>
    </tr>
  </tbody>
</table>
<br>
<p>usefull info:<p>
<p><b>ExCode.BadConn</b> in most cases means that connection was closed by other side, or you are transmitting wrong data to the function</p>
<p>Every function argument has default value. You can change it.</p>
<br>
<p>Note: this module was originally developed as part of a NAM project - https://github.com/Ivashkka/nam <p>

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "oon",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "python,network,sockets,objects,classes,oon",
    "author": "Ivashka (Ivan Rakov)",
    "author_email": "<ivashka.2.r@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/ca/7e/b25a3d2f31f50b777f63a24337ddc6bc8cb2ea7ff8672a214fc872b2f925/oon-0.0.5.tar.gz",
    "platform": "any",
    "description": "<h1 align=\"center\">OON\r\n<h3 align=\"center\">Objects Over Network protocol</h3>\r\n<p>OON - module for python, which allows you to quickly and conveniently transfer objects of python classes over network</p>\r\n<br>\r\n<p><b>install:</b></p>\r\n<p>install python oon module with pip:</p>\r\n<p><code>pip3 install oon</code></p>\r\n<br>\r\n<p><b>usage:</b></p>\r\n<p>OON is able to automaticly convert objects of your custom classes to dicts and strings and to form network message for transfering it</p>\r\n<p>It can act like a server or a client depends on what you need</p>\r\n<p>For example let's assume your python programs with some data related to cars and you have sepparate file cars.py with classes for different cars:</p>\r\n<pre>\r\n\r\n    ################# cars.py ###################\r\n    import enum\r\n    class CarMark(enum.Enum):\r\n        Volvo = 0\r\n        Toyota = 1\r\n        Ford = 2\r\n\r\n    class Car:\r\n        mark : CarMark = None\r\n        speed : int = None\r\n\r\n    class TrucTrailer:\r\n        car_inside : Car = None\r\n        car_count : int = None\r\n\r\n    class Truc(Car):\r\n        trailer : TrucTrailer = None\r\n\r\n    class VolvoCar(Car):\r\n        __slots__ = ['wheels']\r\n        mark = CarMark.Volvo\r\n        def __init__(self, speed = 10, wheels = 4):\r\n            self.speed = speed\r\n            self.wheels = wheels\r\n        def show_info(self):\r\n            print(f\"VolvoCar\\n wheels:{self.wheels} speed:{self.speed}, mark:{self.mark}\")\r\n\r\n    class FordTruck(Truc):\r\n        mark = CarMark.Ford\r\n        def __init__(self, speed = 10, car : Car = None, count = 0):\r\n            self.trailer = TrucTrailer()\r\n            self.speed = speed\r\n            self.trailer.car_inside = car\r\n            self.trailer.car_count = count\r\n        def show_info(self):\r\n            print(f\"FordTruck\\n speed:{self.speed}, mark:{self.mark}, cars inside trailer:{self.trailer.car_count}\")\r\n            print(f\"car inside trailer info:\")\r\n            self.trailer.car_inside.show_info()\r\n</pre>\r\n<p>So you also have main.py file where all other work done:</p>\r\n<pre>\r\n\r\n    ################# main.py ###################\r\n    import cars    #import file with all classes defenitions\r\n\r\n    my_car = cars.VolvoCar(speed=35, wheels=4)\r\n    my_truck = cars.FordTruck(speed=20, car=my_car, count=1)\r\n    print(\"\\n\")\r\n    my_truck.show_info()   #show info about car\r\n    print(\"\\n\")\r\n</pre>\r\n<p>Now you want to transfer <code>my_truck</code> object to other host. Let's assume this side will be server and other - client</p>\r\n<p>To do this - just import oon and turn it on with server mode, wait for client connection and send your <code>my_truck</code> object:</p>\r\n<p><b>Note: ALL FIELDS IN YOUR CLASSES MUST HAVE DEFAULT VALUES</b></p>\r\n<p><b>also fields of type list, dict, tuple which contain several objects of other classes does not supported YET</b></p>\r\n<pre>\r\n\r\n    ################# new main.py - now server side ###################\r\n    import oon     #import objects over network protocol\r\n    import cars\r\n\r\n    my_car = cars.VolvoCar(speed=35, wheels=4)\r\n    my_truck = cars.FordTruck(speed=20, car=my_car, count=1)\r\n    print(\"\\n\")\r\n    my_truck.show_info()\r\n    print(\"\\n\")\r\n\r\n    exitcode = oon.turn_on(modules=[cars], is_server=True)   #turn on oon - returns ExCode\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"failed to start server! {exitcode}\")\r\n        exit(1)\r\n\r\n    client, exitcode = oon.accept_net_connection()   #wait for client connection - returns object of _NetClient\r\n    print(f\"client with ip {client.addr}\")\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"something wrong with connection or timeouted! {exitcode}\")\r\n        exit(1)\r\n\r\n    netmessage, exitcode = oon.generate_net_message(my_truck)   #generate network message from your object - returns _NetMessage and ExCode\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"failed to generate network message! {exitcode}\")\r\n\r\n    exitcode = oon.send_data(netmessage, client)    #send generated message - returns ExCode\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"failed to transfer data! {exitcode}\")\r\n\r\n    oon.close_client_connection(client)    # close connection with client\r\n    client = None\r\n    exitcode = oon.turn_off()      #turn server off\r\n    if exitcode == oon.ExCode.Success:\r\n        print(\"server is off\")\r\n    else: print(\"failed to stop server\")\r\n</pre>\r\n<p>now you can create <code>client.py</code> which will be client (it also needs cars.py file):</p>\r\n<pre>\r\n\r\n    ################# client.py ###################\r\n    import oon\r\n    import cars\r\n\r\n    exitcode = oon.turn_on(modules=[cars], is_server=False)\r\n\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"failed to start client! {exitcode}\")\r\n        exit(1)\r\n\r\n    exitcode = oon.connect_to_srv()\r\n    if exitcode != oon.ExCode.Success:\r\n        print(f\"failed to connect to srv! {exitcode}\")\r\n        exit(1)\r\n\r\n    netmessage, exitcode = oon.receive_data(bytes=1024)\r\n    car = netmessage.netobj\r\n    print(\"\\n\")\r\n    car.show_info()\r\n    print(\"\\n\")\r\n\r\n</pre>\r\n<p>now to test - start <code>python main.py</code> and <code>python client.py</code></p>\r\n<p>on server:</p>\r\n<pre>\r\n\r\n    FordTruck\r\n     speed:20, mark:CarMark.Ford, cars inside trailer:1\r\n    car inside trailer info:\r\n    VolvoCar\r\n    wheels:4 speed:35, mark:CarMark.Volvo\r\n\r\n\r\n    client with ip 127.0.0.1\r\n    server is off\r\n</pre>\r\n<p>on client:</p>\r\n<pre>\r\n\r\n    FordTruck\r\n     speed:20, mark:CarMark.Ford, cars inside trailer:1\r\n    car inside trailer info:\r\n    VolvoCar\r\n    wheels:4 speed:35, mark:CarMark.Volvo\r\n</pre>\r\n<br>\r\n<br>\r\n<p><b>docs:</b></p>\r\n<p>info about all supported data types, all available functions, returns and objects:</p>\r\n<p>all functions:</p>\r\n<table border=\"2\">\r\n  <thead>\r\n    <tr>\r\n      <th>Function</th>\r\n      <th>Parameters</th>\r\n      <th>Purpose</th>\r\n      <th>Condition to Use</th>\r\n      <th>Return</th>\r\n    </tr>\r\n  </thead>\r\n  <tbody>\r\n    <tr>\r\n      <td><b>turn_on()</b></td>\r\n      <td><b>modules : list</b> - list of modules with your custom classes,<br><b>classes : list</b> - list of your custom unit classes which aren't located in your modules,<br><b>is_server : bool</b> - start as server or as client,<br><b>ip : str</b> - ip,<br><b>port : int</b> - port,<br><b>encoding : str</b> - what encoding to use,<br><b>timeout : int</b> - timeout of future operations,<br><b>queue_size : int</b> - size of connections in queue</td>\r\n      <td>start oon</td>\r\n      <td>if not started</td>\r\n      <td><b>ExCode.Success</b> or <b>ExCode.StartFail</b></td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>turn_off()</b></td>\r\n      <td>no</td>\r\n      <td>turn off oon</td>\r\n      <td>if started and if no clients active if in server mode</td>\r\n      <td><b>ExCode.Success</b> or <b>ExCode.StopFail</b><br>If StopFail on server mode - maybe some clients are still active, close them before stopping</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>accept_net_connection()</b></td>\r\n      <td><b>client_timeout : int</b> - timeout of future operations with client connection</td>\r\n      <td>wait for client connection until timeout</td>\r\n      <td>if started in server mode</td>\r\n      <td><b>(_NetClient, ExCode.Success)</b> - if all ok<br><b>(None, ExCode.BadConn)</b> - if something wrong with listening socket<br><b>(None, ExCode.Timeout)</b> - if timeouted<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>close_client_connection()</b></td>\r\n      <td><b>client : _NetClient</b> - client</td>\r\n      <td>close connection with client</td>\r\n      <td>if started in server mode</td>\r\n      <td><b>(_NetClient, ExCode.Success)</b> - if all ok<br><b>(None, ExCode.BadConn)</b> - if something wrong with client<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>connect_to_srv()</b></td>\r\n      <td>no</td>\r\n      <td>connect to server</td>\r\n      <td>if started in client mode and not connected</td>\r\n      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadConn</b> - if something wrong with connection, or already connected<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>disconnect_from_srv()</b></td>\r\n      <td>no</td>\r\n      <td>disconnect from server</td>\r\n      <td>if started in client mode and connected</td>\r\n      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadConn</b> - if something wrong with connection, or already disconnected<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>generate_net_message()</b></td>\r\n      <td>netobj : Any - object you want to transfer,<br>fields_to_ignore : list - what fileds of object you don't want to transfer,<br>uuid : str - generated if nothing specified</td>\r\n      <td>generate network message</td>\r\n      <td>if started</td>\r\n      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if your objects does not meet the requirements<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>load_net_message_from_str()</b></td>\r\n      <td>messtr : str - json string,<br>fields_to_ignore : list - field not to load from string</td>\r\n      <td>load network message from it's json string variant. Uses automatically inside <b>receive_data()</b> method</td>\r\n      <td>if started</td>\r\n      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if something wrong with json string or with your classes in your module<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>receive_data()</b></td>\r\n      <td>bytes : int - size of message to expect,<br>client : _NetClient - client. Only if started in server mode!</td>\r\n      <td>receive data from client or server</td>\r\n      <td>if started. If in client mode, needs to be connected to server</td>\r\n      <td><b>(_NetMessage, ExCode.Success)</b> - if all ok<br><b>(_NetMessage, ExCode.BadData)</b> - if failed to <b>load_net_message_from_str()</b><br><b>(None, ExCode.BadConn)</b> - if something wrong with connection<br><b>(None, ExCode.Timeout)</b> - if timeouted<br><b>(None, ExCode.StartFail)</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>send_data()</b></td>\r\n      <td>netmessage : _NetMessage - generated network message,<br>client : _NetClient - client. Only if started in server mode!</td>\r\n      <td>send data to client or server</td>\r\n      <td>if started. If in client mode, needs to be connected to server</td>\r\n      <td><b>ExCode.Success</b> - if all ok<br><b>ExCode.BadData</b> - if you give strange data<br><b>ExCode.BadConn</b> - if something wrong with client<br><b>ExCode.Timeout</b> - if timeouted<br><b>ExCode.StartFail</b> - if you forgot to start oon</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>is_running()</b></td>\r\n      <td>no</td>\r\n      <td>get info about oon status</td>\r\n      <td>no</td>\r\n      <td><b>True</b> - running<br><b>False</b> - not running</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>is_connected()</b></td>\r\n      <td>no</td>\r\n      <td>get info about connect status (Does not tell info about other side connection state!)</td>\r\n      <td>if started in client mode</td>\r\n      <td><b>True</b> - connected<br><b>False</b> - not connected</td>\r\n    </tr>\r\n  </tbody>\r\n</table>\r\n<br>\r\n<p>all objects:</p>\r\n<br>\r\n<p><b>_NetMessage (message for transfering between hosts):</b></p>\r\n<table border=\"2\">\r\n  <thead>\r\n    <tr>\r\n      <th>Field</th>\r\n      <th>Purpose</th>\r\n    </tr>\r\n  </thead>\r\n  <tbody>\r\n    <tr>\r\n      <td><b>create_code : ExCode</b></td>\r\n      <td>signals if object created as expected. This field returns as exitcode of related functions when generating or loading message</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>json_string : str</b></td>\r\n      <td>message in json string form, this is data that is actually being transferred</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>netobj : Any</b></td>\r\n      <td>actual object from your custom module</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>uuid : str</b></td>\r\n      <td>uuid of message</td>\r\n    </tr>\r\n  </tbody>\r\n</table>\r\n<br>\r\n<p><b>_NetClient (container for all data related to client connection):</b></p>\r\n<table border=\"2\">\r\n  <thead>\r\n    <tr>\r\n      <th>Field</th>\r\n      <th>Purpose</th>\r\n    </tr>\r\n  </thead>\r\n  <tbody>\r\n    <tr>\r\n      <td><b>alive : Bool</b></td>\r\n      <td>if connection wasn't closed manually.This field does not reflect the connection status at the other end</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>socket : socket.socket</b></td>\r\n      <td>clisent connection socket</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>addr : str</b></td>\r\n      <td>ip</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>port : int</b></td>\r\n      <td>port</td>\r\n    </tr>\r\n    <tr>\r\n      <td><b>uuid : str</b></td>\r\n      <td>uuid</td>\r\n    </tr>\r\n  </tbody>\r\n</table>\r\n<br>\r\n<p>usefull info:<p>\r\n<p><b>ExCode.BadConn</b> in most cases means that connection was closed by other side, or you are transmitting wrong data to the function</p>\r\n<p>Every function argument has default value. You can change it.</p>\r\n<br>\r\n<p>Note: this module was originally developed as part of a NAM project - https://github.com/Ivashkka/nam <p>\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Package for simplify classes and objects transfer over network",
    "version": "0.0.5",
    "project_urls": null,
    "split_keywords": [
        "python",
        "network",
        "sockets",
        "objects",
        "classes",
        "oon"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f9d4df9bbda9765f42add52461f3c24450a88dea54e1a144856f0dcbb3795c34",
                "md5": "8a72af92d943cc20abb1a6fd4e4458aa",
                "sha256": "cd733fd664fdba76958228ea719093f4a09e0fe4f46e4c53d7da0cd59aec1790"
            },
            "downloads": -1,
            "filename": "oon-0.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8a72af92d943cc20abb1a6fd4e4458aa",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 20301,
            "upload_time": "2024-01-23T08:48:36",
            "upload_time_iso_8601": "2024-01-23T08:48:36.888035Z",
            "url": "https://files.pythonhosted.org/packages/f9/d4/df9bbda9765f42add52461f3c24450a88dea54e1a144856f0dcbb3795c34/oon-0.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca7eb25a3d2f31f50b777f63a24337ddc6bc8cb2ea7ff8672a214fc872b2f925",
                "md5": "bdf9d173f23affca7b8123aa0b5adaa4",
                "sha256": "166657e7d9102c73021f35386ac2c76ccb1af3dd2ed99d6ad7767ec66678eb0b"
            },
            "downloads": -1,
            "filename": "oon-0.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "bdf9d173f23affca7b8123aa0b5adaa4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 23064,
            "upload_time": "2024-01-23T08:48:38",
            "upload_time_iso_8601": "2024-01-23T08:48:38.437501Z",
            "url": "https://files.pythonhosted.org/packages/ca/7e/b25a3d2f31f50b777f63a24337ddc6bc8cb2ea7ff8672a214fc872b2f925/oon-0.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-23 08:48:38",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "oon"
}
        
Elapsed time: 0.17260s