Commit graph

86 commits

Author SHA1 Message Date
Christoph Heiss
7f067f40e9 Initial integration of behem0th. 2017-03-01 21:56:29 +01:00
Christoph Heiss
5188457be5 Add behem0th as submodule 2017-03-01 21:53:34 +01:00
Philip Trauner
05384b2abb Sped up, removed time, more colors! 2016-12-18 23:21:05 +01:00
Philip Trauner
0934f6fe69 Routes aren't an indexed_dict anymore, piping error handling, piping on by default
Routes are just regular dicts now, which means that their ids are strings and they are bound to the key "routes".
This allows the next feature to work:

Error reporting on disconnected peers.
Define a peer_unavaliable method in your handler and you will be notified when your pipe call has failed due to an unavaliable peer.
Handled in the "meta" route.

Piping has become such an integral feature to Highway that it doesn't make sense to disable it anymore.
This is why the argument is missing in the constructor from now on.
2016-12-18 23:15:31 +01:00
Philip Trauner
7748c30f6a Added line number 2016-12-07 23:36:52 +01:00
Philip Trauner
4eae2567ad Added logic to close routes
Not called on close() yet because of server/client inconsistencies
2016-12-07 23:35:56 +01:00
Philip Trauner
b7721d89a4 Added play_sound 2016-12-07 23:33:26 +01:00
Philip Trauner
60b9b26d28 Improved error handling on non-existant routes 2016-12-07 19:13:32 +01:00
Philip Trauner
37817afa51 Added initial piping support, refactoring
A Highway pipe is a lightweight client -> client connection piped through the server.
The advantages of this approach are obvious:
* No need to implement the concept yourself
* It's incredibly useful

It's opt-in at the moment because it definitely isn't anywhere close to stable and requires a lot of boiler-plate code.
Documentation will be avaliable later on.
2016-12-01 22:46:22 +01:00
Philip Trauner
9ae687e35d Merged into Highway.py 2016-11-16 18:46:41 +01:00
Philip Trauner
0c88b7c161 Merged Routing.py, constants for everything, encoding fixes for js port
Routing.py is no more! The split made sense when ESock was used for all networking,
now it's really just a hassle to import from two different files.

CONSTANTS_FOR_EVERYTHING = 1

In case of mangled utf8 chars that throw encoding errors there is now a "last resort".
If that fails too, the data conversion behaves just like before.
2016-11-16 18:42:07 +01:00
Philip Trauner
c2c36efd0a Preperation for merge with Highway 2016-10-16 23:12:38 +02:00
Philip Trauner
9fc033dc18 Refactoring: less unneeded oo, unreachable code gone, relocated logic 2016-10-16 23:11:27 +02:00
Philip Trauner
d703f018b8 Changed encoding and meta route index
Encoding is now BH (data type, route) which should be more than enough for now.
Because H is not signed the meta route is now always on position 0.
2016-10-15 17:54:01 +02:00
Philip Trauner
b9dbcdc399 Removed compression
After running some very scientific tests I came to the conclusion that compression does not benefit Highway in any way.
On top of that it is a nightmare to implement Highway clients in other languages (I'm looking at you JavaScript).
So to conclude: Fuck compression (and JavaScript)
2016-10-15 16:29:28 +02:00
Philip Trauner
d2571f6d50 Added constant for struct encoding 2016-10-12 16:27:11 +02:00
Philip Trauner
55f9dd4425 Peers can start discovery at ~ the same time
Still needs some improvement, hard to test because socket has to be bound.
2016-10-09 00:52:34 +02:00
Philip Trauner
1ee7b787ed Initial network discovery prototype 2016-10-08 21:53:02 +02:00
Philip Trauner
829000e387 OS detection, hostname get/set, get ip address on all platforms
Preperation for fl0w network discovery.
2016-10-08 20:09:15 +02:00
Philip Trauner
e03102679d Removed legacy code, unified Client and Server Route 2016-10-03 20:50:41 +02:00
Philip Trauner
1105b0fc8c Fixed int and float compression errors 2016-10-03 20:50:00 +02:00
Philip Trauner
9596fa2815 Improved error handling and error reporting 2016-09-25 20:46:06 +02:00
Philip Trauner
37976049a6 Made it work (finally)
Replaced receive_routes with a shared route called meta. Highway manages itself with it's own networking capabilities. (Meta as fuck)
Added NoneType to sendable types (gzip doesn't like None).
Removed old, non-reachable code.
Gave up on multiple inheritence. To inherit from Shared override_methods has to be called. It will monkey-patch all required methods. (less hacky than before)
Ripped out tons of server/client specific code and made it shared.
2016-09-25 18:00:13 +02:00
Philip Trauner
42c08217dc Removed some Sync specific hacks, additional error handling
Patching is completely gone in this version and will be kept out as long as possible.
meta is not handled as a normal route anymore and will be ignored on exchange map creation.
Routes don't require a start method anymore.
2016-09-25 17:57:47 +02:00
Philip Trauner
f6c9e505e0 Added default compression level 2016-09-23 14:19:04 +02:00
Philip Trauner
3b7733aee8 Bump version to fix an instancing issue 2016-09-18 20:21:32 +02:00
Philip Trauner
ab6444f118 Overhaul to work with Highway
create_routes now doesn't launch them automatically because routes are put together before the socket actually becomes avaliable.
create_exchange_map previously used the wrong index for the route list.
There is now a universal Route class from which ServerRoute and ClientRoute inherit.
2016-09-18 19:49:53 +02:00
Philip Trauner
a583d87f6a ESock replacement
Highway is a wrapper around ws4py that is needed for routing and exchanging routes automatically.
Currently only the server exchanges routes with the client. This behaviour has to be replicated the other way around too.
Not all that stable.
2016-09-18 19:46:09 +02:00
Philip Trauner
56ad9ba376 DataTypes now reside in Highway 2016-09-18 19:45:17 +02:00
Philip Trauner
73f31496cc Updated to newer version of ws4y that allows for handler initialisation 2016-09-15 11:22:17 +02:00
Philip Trauner
b9454f2865 Broke during migration to WebSockets
Will be replaced by behem0th
2016-09-11 20:35:27 +02:00
Philip Trauner
8638b98179 Removed max route length and added route ids
Routes are now handled as numbers by the networking layer. This changes requires the first message to be a dict of all routes with their associated ids. This way only 2 bytes are used per message, not 16 like before.
2016-09-11 20:32:13 +02:00
Philip Trauner
e8b855d37a Removed error handling function used by old networking 2016-09-11 20:31:48 +02:00
Philip Trauner
422d262ddf Removed building-blocks of old networking 2016-09-11 20:30:43 +02:00
Philip Trauner
2622fe8837 Added portable version of ws4py 2016-09-11 20:28:57 +02:00
Philip Trauner
13b4e0235c Added lookup caching and converted indentation to tabs 2016-09-11 15:20:06 +02:00
Christoph Heiss
a6de0790dd Add compression to ESock.
This is mostly transparent to the user.
A compression-level can be specfic (0-9), where 0 equals no,
1 weakest and 9 best compression.
Currently, the compression level defaults to 0.
2016-04-15 10:09:25 +02:00
PhilipTrauner
3db86baed8 Redid ReloadHandler to reduce duplicated events (works hopefully) 2016-04-10 00:54:32 +02:00
PhilipTrauner
7fb4db19cc Removed debug print 2016-04-09 00:15:38 +02:00
PhilipTrauner
7f881f3bf7 Hopefully fixed event duplication as well as offline editing 2016-04-09 00:14:22 +02:00
Philip Trauner
10e7638511 Added debug prints for possible segementation issue 2016-04-08 14:40:21 +02:00
Philip Trauner
733aa47433 Additional debug information 2016-04-08 09:09:00 +02:00
Philip Trauner
1cc4495978 Actually implemented is_wallaby 2016-04-04 13:13:28 +02:00
PhilipTrauner
d2fd0b4479 Removed faulty client-side add logic (currently echos are back, server can handle them) 2016-04-03 23:24:58 +02:00
PhilipTrauner
af8cffd5aa Added data truncation and length constant (currently independent of actual length) 2016-04-03 23:24:37 +02:00
PhilipTrauner
47989941d8 Removed invalid logic and added additional error handling 2016-04-03 22:19:42 +02:00
PhilipTrauner
90fa593be7 Added is_wallaby 2016-04-03 22:16:46 +02:00
PhilipTrauner
9406d5ef7d Added __init__ file for partial Python 2.7 support 2016-04-03 22:16:01 +02:00
Philip Trauner
65c744ad82 Reverted ActionQueue 2016-04-01 16:07:56 +02:00
PhilipTrauner
5a24c17bc1 Possible race condition fix 2016-03-31 22:40:39 +02:00