Commit Graph

995 Commits

Author SHA1 Message Date
Robinson
06be3bee28
Connection timeouts are now in seconds, instead of milliseconds 2022-03-08 08:41:06 +01:00
Robinson
2a14d09a2c
Updated to support the split of Utilities + OS project. 2022-03-05 22:50:17 +01:00
Robinson
975cd4fb01
updated version 2022-03-04 23:49:49 +01:00
Robinson
d8aab11fdb
Updated dependencies + version 2022-03-03 01:25:32 +01:00
Robinson
98f8ad794e
update dependencies 2022-03-03 01:23:07 +01:00
Robinson
7aaf06c7a5
Exception now properly thrown when a message cannot be sent. 2022-03-02 23:54:32 +01:00
Robinson
f68418c27c
Updated dependencies. 2021-10-01 11:34:45 +02:00
Robinson
1ea24f026a increment version 2021-08-23 01:08:30 -06:00
Robinson
c8f4ba2b01 Now using the storage project 2021-08-23 00:52:16 -06:00
Robinson
40fb0d8caf use ByteArray extension for hex instead 2021-08-23 00:48:39 -06:00
Robinson
a75ece2a39 Now use the storage project 2021-08-23 00:42:02 -06:00
Robinson
87338c6f24 Fixed typos 2021-08-23 00:39:13 -06:00
Robinson
d8107860e5 Fixed GCM, now use threadlocal for hashing 2021-08-23 00:38:55 -06:00
Robinson
e8a1a20a16 code cleanup 2021-08-20 08:50:51 -06:00
Robinson
07daeafa05 updated version, updated build dependencies 2021-08-19 00:15:32 -06:00
Robinson
7f16ebcac0 WIP storage sub-system 2021-08-19 00:13:47 -06:00
Robinson
6945a5cdbb Fixed issue when starting up after a forcefully terminated (previous) run. If the aeron CnC file is corrupted, delete and try again. 2021-08-18 13:37:23 -06:00
Robinson
5847ad14e3 Updated version 2021-07-26 20:42:55 +02:00
Robinson
6a7fe7b1dc Added support for filtering aeron driver exceptions, onError listeners are now notified if there is an aeron driver error. 2021-07-26 20:40:43 +02:00
Robinson
a4a3057f39 Added comments. Fixed onErrorGlobal (it is now a separate name, since the function signatures had issues), made it a unit function instead of method, so it can be passed around 2021-07-26 20:18:04 +02:00
Robinson
7908ef2593 Fixed comments, tweaked shutdown delay 2021-07-26 20:17:03 +02:00
Robinson
388e4bda60 connections are now created via a unit function instead of overriding the method. 2021-07-09 15:16:12 +02:00
Robinson
c725806727 Cleaned up heap vs stack access, fixed ping support, fixed coroutine errors during serialization 2021-07-08 14:33:24 +02:00
Robinson
632603c8c7 WIP RMI and message performance/ping testing 2021-07-07 21:32:36 +02:00
Robinson
33f3ca8ebc Supports the newest version of Aeron. Updated error log usage and notifications. Refactored RMI API (now RMI is accessible via '.rmi' calls). Updated unit tests. Added 'delete' to rmi methods (opposite of 'create'). 2021-07-07 00:04:47 +02:00
Robinson
b8caa3b7c9 WIP JPMS 2021-07-02 11:41:05 +02:00
Robinson
ad9729b0ff Added comments 2021-07-01 20:15:07 +02:00
Robinson
9d507f1937 Added more comments 2021-07-01 20:13:54 +02:00
Robinson
649148dc08 better error message 2021-07-01 09:30:09 +02:00
Robinson
e62f8eba2e Changed line endings to LF from CRLF 2021-06-28 15:27:35 +02:00
Robinson
b5f7c109b2 Fixed deprecated channel offer method 2021-06-27 20:51:58 +02:00
Robinson
ab2af26b48 Fixed JPMS object casting 2021-05-02 21:56:10 +02:00
Robinson
7c5a935105 Added server global RMI delete() 2021-05-01 00:19:21 +02:00
Robinson
5196fa2d66 updated version 2021-04-30 22:42:37 +02:00
Robinson
ef4b76d303 Changed scope for onMessage/disconnect/connect/etc callbacks from 'connection' -> 'this'. 2021-04-30 22:39:36 +02:00
Robinson
048b780e2f Added tests for restarting a client via client.close(). connection.close() with a onDisconnect listener also works. The instance that started the aeron instance, is the one that cleans it up 2021-04-30 21:18:57 +02:00
Robinson
ae53cc333e Moved class registration info to trace 2021-04-30 19:52:57 +02:00
Robinson
bfccc6f7a5 WIP removeObject 2021-04-30 18:22:25 +02:00
Robinson
beb99d42da Removed 'config.enableIpcForLoopback'. it's behavior was rolled into 'enableIpc' 2021-04-30 18:22:08 +02:00
Robinson
3a4f4ff4b3 removed unnecessary code 2021-04-30 18:21:26 +02:00
Robinson
4507cf9f87 Removed RemoteObject.close() 2021-04-30 18:21:01 +02:00
Robinson
0b95a4503d more info in comments 2021-04-30 18:19:46 +02:00
Robinson
dfaf583f4f Added extension function for "eventLoop" dispatch to coroutines 2021-04-30 18:15:54 +02:00
Robinson
cffca943f5 No longer using coroutines for adding publication/subscription and closing certain calsses. Better aeron error handling/reporting. Better aeron startup/shutdown. The pending connections cache no longer is ThreadSafe, and no longer is protected via RW lock. 2021-04-30 18:14:33 +02:00
Robinson
3f016672e6 WIP ping mangement 2021-04-30 14:58:49 +02:00
Robinson
a3c0d9881a Fixed unnecessary errors when calling "connection.close()" from inside an RMI method. 2021-04-30 14:26:04 +02:00
Robinson
e7d13520df Updated kryo comments 2021-04-29 19:45:56 +02:00
Robinson
ad06f768f8 Fixed state with driver already running during shutdown 2021-04-29 13:34:45 +02:00
Robinson
402c5a0ccd Fixed missing Inet4.toAddress conversion 2021-04-29 11:19:31 +02:00
Robinson
a3b5cbcc89 WIP ping functionality 2021-04-29 10:25:25 +02:00
Robinson
7a6926df93 Changed handshake write to be THREAD strategy instead of COROUTINE strategy 2021-04-29 10:04:53 +02:00
Robinson
47b63173ac Added cloneToNormal, which converts the coroutine strategy -> thread strategy 2021-04-29 10:04:02 +02:00
Robinson
1e077c2d98 Added ability to add to an endpoint configuration 2021-04-29 10:02:22 +02:00
Robinson
2828758fee Updated how to access storage (via a property now) 2021-04-29 10:01:07 +02:00
Robinson
f5ab178948 Suppressed errors when starting/stopping an endpoint VERY quickly (as usually done in unit tests). These warnings, while noramlly VERY important, can be safely ignored. 2021-04-29 09:59:42 +02:00
Robinson
841b9959ac Fixed issues when reconnecting. 'onDisconnect' is now guaranteed to be called before 'onConnect' 2021-04-29 02:10:34 +02:00
Robinson
6d70313687 aeron driver is now properly start during reconnect event 2021-04-29 01:48:29 +02:00
Robinson
52d5f4b189 proper inet address resolution 2021-04-29 01:48:04 +02:00
Robinson
8068b1a5df Added version info 2021-04-29 01:47:53 +02:00
Robinson
37fbfe6ac1 cleaned up stacktrace, code polish 2021-04-29 01:47:25 +02:00
Robinson
9c7fa4de8d MediaDriver + aeron states are now reset on close 2021-04-29 01:46:18 +02:00
Robinson
36318690a2 Cleaned up RMI response manager object construction 2021-04-28 11:19:55 +02:00
Robinson
e747b52373 WIP ping infrastructure 2021-04-28 11:19:13 +02:00
Robinson
32cd2822ee Changed session ID -> ID for RandomIdAllocator.kt 2021-04-28 11:18:34 +02:00
Robinson
31f559accc updated version 2021-04-27 14:20:51 +02:00
Robinson
ad1c2450b9 Fixed deprecated methods 2021-04-27 14:19:56 +02:00
Robinson
8d47b8b0b8 Fixed missing parameter 2021-04-27 14:17:19 +02:00
Robinson
c706969005 Fixed package name 2021-04-27 14:00:31 +02:00
Robinson
f53e705432 Fixed "fast" reconnect issues, where sometimes the media driver would be disconnected from the aeron driver 2021-04-27 13:57:47 +02:00
Robinson
9e0bc0da3e Fixed stackframe index 2021-04-27 13:31:54 +02:00
Robinson
ed76209925 Changed RMI object callback to only be "this", instead of passing the (internal) rmiID around. The RMI-ID is used for internal rmi messages, so that a request+response can be paired. 2021-04-27 13:31:18 +02:00
Robinson
09087b470a Stack frame cleanup removes ALL coroutines 2021-04-27 10:55:29 +02:00
Robinson
bb245e2f8e Code cleanup 2021-04-27 10:28:36 +02:00
Robinson
29b0ee8199 Fixed connection filter on connect 2021-04-27 10:28:18 +02:00
Robinson
ef598b0b72 WIP connection setup 2021-04-27 10:27:03 +02:00
Robinson
1765b4e367 Fixed server-client pair connection address info 2021-04-27 10:26:37 +02:00
Robinson
7d39f70450 Removed filter notify for IPC connections 2021-04-27 10:26:04 +02:00
Robinson
ea857da883 Better stack frame cleanup 2021-04-27 10:25:19 +02:00
Robinson
f3637219c3 Code polish/cleanup 2021-04-25 22:01:50 +02:00
Robinson
bcbdaf167f code/library cleanup 2021-04-24 00:09:11 +02:00
Robinson
dccc46d16b Updated to kotlin 2021-04-24 00:07:49 +02:00
Robinson
a229b85ee7 Rename .java to .kt 2021-04-24 00:07:48 +02:00
Robinson
5a7b6a159a Proper null checking 2021-04-24 00:07:26 +02:00
Robinson
3a9d63858f Converted to kotlin 2021-04-24 00:06:43 +02:00
Robinson
6f3615d211 Rename .java to .kt 2021-04-24 00:06:42 +02:00
Robinson
f60ec9d10f updated libraries, added updates 2021-04-09 20:24:45 +02:00
Robinson
bb77a17158 Removed unchecked cast suppression 2021-04-02 15:15:01 +02:00
Robinson
ec5dd55fee Moved unused code 2021-01-15 14:11:33 +01:00
Robinson
7ecb920ed0 Added type definitions and github links 2021-01-15 02:29:04 +01:00
Robinson
bda3082d41 Set field access scope to private 2021-01-15 02:21:21 +01:00
Robinson
47e202901a remove duplicated key strings, now uses common fields 2021-01-15 02:19:09 +01:00
nathan
96b4a78104 Updated to use the object pool. Release 5.0! 2020-10-06 02:08:12 +02:00
nathan
df1eab1509 Removed stack trace from internal logging on client handshake errors (they mean nothing, other than it's an exception and the message) 2020-09-29 21:43:39 +02:00
nathan
62dff03df9 Fixed issue with multi-client handshakes. Made error messages cleaner 2020-09-29 16:05:17 +02:00
nathan
f4401d425c Formatting 2020-09-29 15:26:40 +02:00
nathan
61260b02ce Updated comments 2020-09-29 14:38:06 +02:00
nathan
e5c35ea24e Async allocation and branch cleanup 2020-09-29 14:36:18 +02:00
nathan
cc9742fe14 Handshake validate is only done based on the one-time key (instead off session id) as the session ID was shared in some situations (the aeron session ID is not guarateed to be unique, unless it is manually set) 2020-09-28 16:30:38 +02:00
nathan
4dc58f2485 exposed secureRandom 2020-09-28 16:12:50 +02:00
nathan
1040cf14f5 Crypto code polish. wrapped crypto stuff in try/catch 2020-09-25 19:54:49 +02:00
nathan
2b2e185c4a Added settings store for server (in addition to the existing client one) 2020-09-25 19:54:27 +02:00
nathan
4fb5ec8517 Code polish. Added extra failure if registration data or public key data is null 2020-09-25 19:52:46 +02:00
nathan
21a84bb9d2 Fixed issue with getting private key (was getting public key instead) 2020-09-25 19:33:15 +02:00
nathan
dfec897f83 connectionTimeoutMS == 0, now (correctly) means wait forever 2020-09-25 18:32:18 +02:00
nathan
80c4ed6fcc Endpoint custom settingsStore can now be created (instead of just specifying a type) 2020-09-25 14:51:16 +02:00
nathan
816191a5b3 Marked methods final that should not be allowed to be overridden 2020-09-25 14:49:17 +02:00
nathan
1688a11000 Property Store only saves values if they have changed 2020-09-24 10:30:52 +02:00
nathan
09eb16f7b5 Added better connection check intervals and connection expiration timeouts 2020-09-23 22:32:29 +02:00
nathan
c869306ebe Added more log information when stopping the AeronMediaDriver. Code polish 2020-09-23 17:09:34 +02:00
nathan
93e406289c Fixed issues with connection handshake with the same computer, on multiple clients. 2020-09-23 17:08:25 +02:00
nathan
8605040819 Safer closing of the aeron client during close process 2020-09-23 16:59:58 +02:00
nathan
0b12f36507 improved close() messages/meanings in log 2020-09-23 15:52:45 +02:00
nathan
a4ccbd4b6a Cleaned up comments. Cleaned up forEachConnection() (it's only on server now) 2020-09-22 21:06:31 +02:00
nathan
0a3a08fb8f code polish 2020-09-22 21:05:50 +02:00
nathan
d7eef22091 Added sub/pub retries for both UDP and IPC 2020-09-22 21:01:06 +02:00
nathan
a82c5724f5 Added IPC addPub/Sub retries when aeron is restarted to quickly 2020-09-22 19:42:46 +02:00
nathan
af7e35fcf9 Changed client.send() to return true/false if the message was sent, added client.sendWithException() to throw an exception if the message was unable to be sent 2020-09-22 19:42:04 +02:00
nathan
c6e12e7872 Fixed IPC auto-fallback connection issues 2020-09-22 19:41:19 +02:00
nathan
56fc7e54f1 Fixed IPv6 connection issue 2020-09-22 19:40:56 +02:00
nathan
e035d86ee0 Added forEachConnection() method to run a function callback against each connection 2020-09-22 19:39:24 +02:00
nathan
ed60b68e77 Updated aeron (and other libraries) to fix IPv6 bug (removed class override) 2020-09-22 17:24:35 +02:00
nathan
64a36cb4f8 code polish to more straightforward logic 2020-09-22 17:05:49 +02:00
nathan
7d67cc86b7 Renaming RmiResponseManager for a more general use case (ResponseManager) 2020-09-22 17:05:25 +02:00
nathan
8f39813ccf Renamed RmiWaiter -> ResponseWaiter 2020-09-21 01:42:31 +02:00
nathan
04ca513cc3 suppressed experimental warnings 2020-09-19 22:07:38 +02:00
nathan
7ae3762603 Code polish 2020-09-19 22:07:09 +02:00
nathan
5017437a7a Updated networkutils, code polish 2020-09-19 22:06:54 +02:00
nathan
2429810fd7 Correct usage of no host name 2020-09-19 22:06:30 +02:00
nathan
dc30c18e97 Changed how internal storage operates (major performance improvement), added more types of storage. Set the default to PropertyStore (so settings are saved in a property file) 2020-09-19 19:41:39 +02:00
nathan
50783a7ae9 reworked how stopDriver operates 2020-09-19 19:38:55 +02:00
nathan
1703bc5449 Crypto now works with the raw public/private key byte arrays (instead of encoded bytearrays) 2020-09-19 01:32:32 +02:00
nathan
32d3023814 Serialization can now be extended 2020-09-18 01:12:53 +02:00
nathan
6548ad86e7 Added read(buffer: DirectBuffer), now returns writerBuffer on write 2020-09-18 01:12:25 +02:00
nathan
a8a6a517f7 Added setBuffer(DirectBuffer) method 2020-09-18 01:10:57 +02:00
nathan
bb2a7d8c41 Fixed error typo 2020-09-18 01:09:56 +02:00
nathan
bf457b6d69 Better error when client subscrition cannot connect. Added comments about publications 2020-09-18 01:09:18 +02:00
nathan
b9c0e6b29f Handshake should be using the endpoint store, not the config store 2020-09-16 15:52:25 +02:00
nathan
f9623a616c No longer require KryoExtra to register (normal Kryo is enough) 2020-09-16 14:28:49 +02:00
nathan
b08b7a13cd Simplified SettingsStore, it now uses it's own serializer 2020-09-15 21:17:47 +02:00
nathan
e08d5a3d2b No longer have a dependency on Storage serialization manager 2020-09-15 21:17:18 +02:00
nathan
8af039265b Fixed comment typo 2020-09-15 18:55:28 +02:00
nathan
f4e451d917 Cleaned up how we interact with the storage system. Simplified storage configuration/init 2020-09-15 17:08:21 +02:00
nathan
b18fccc867 If registration was previously ignored, then ignore it on subsequent initialization 2020-09-15 16:53:34 +02:00
nathan
3c4cfe805f Added support for starting/stopping the aeron media driver OUTSIDE of the network library. Better startup and cleanup of aeron connections to the media driver. Added an error handler that doesn't exit the JVM on error 2020-09-15 12:01:05 +02:00
nathan
fb3d2f3f98 Cleaned up logs 2020-09-14 22:12:54 +02:00
nathan
0c7202d00c Changed connection timeout from millis -> nanos 2020-09-14 20:41:01 +02:00
nathan
7f823bc2e7 Code polish 2020-09-14 20:35:17 +02:00
nathan
610f22fdec Connection management uses concurrent iteration, so now polling uses that correctly 2020-09-11 11:06:53 +02:00
nathan
93a892f439 Connections now can only trigger as expired from when they are created, not when they are last valid. Changed from images.isConnected -> images.count 2020-09-11 03:28:26 +02:00
nathan
e5bcd3cb1a Fixed out-of-order initialization of aeron dir 2020-09-11 02:02:46 +02:00
nathan
960d1e4660 Added back isRunning() 2020-09-11 01:27:46 +02:00
nathan
9ef9a066a0 Fixed issues with forcing unique media driver locations. Fixed issues where connections weren't getting removed. Added reversal of auto-IPC (in case the server doesn't have IPC) 2020-09-11 01:14:22 +02:00
nathan
60e8c5dc2e Fixed incorrect address used in log message 2020-09-10 14:39:08 +02:00
nathan
7db6a45437 Fixed thread visibility issues in the client handshake when reconnecting 2020-09-10 14:38:54 +02:00
nathan
c13fb205cf Fixed index out of bounds for pending RMI 2020-09-10 14:35:23 +02:00
nathan
49badc0836 KryoPool now will automatically grow if too many are read before they are returned 2020-09-10 02:19:11 +02:00
nathan
030387c378 Fixed issues when RMI timeout happens 2020-09-10 02:05:14 +02:00
nathan
c9f74c162d Code polish 2020-09-10 01:51:58 +02:00
nathan
c119556ae2 Cleaned up connection server info logs 2020-09-10 01:51:47 +02:00
nathan
9f7c921afd Added extra checks to see if a network family is available before using it to connect to a server 2020-09-10 00:35:01 +02:00
nathan
696c8f65cf Added extra checks to see if a network family is available before using it 2020-09-10 00:28:08 +02:00
nathan
b953f9bf85 Fixed issue with logging when IPv6 is wildcard 2020-09-10 00:21:55 +02:00
nathan
ac874198c2 WIP kryo-pool 2020-09-09 19:45:57 +02:00
nathan
594019020b Fixed issue,and clarified RMI.timeout = 0 (this will wait forever) 2020-09-09 15:23:20 +02:00
nathan
ca88b9941f Fixed compile warnings 2020-09-09 15:13:08 +02:00
nathan
ce5eb8cb77 Fixed issues with connection handshake. ALL kryo usage for a handshake is now ONLY on the primary coroutine 2020-09-09 12:24:04 +02:00
nathan
06a35ed027 Fixed memory leak wrt RMI waiters 2020-09-09 12:19:27 +02:00
nathan
db992d98a9 Removed thread specific code from coroutine 2020-09-09 11:03:47 +02:00
nathan
3e4e4abb49 Fixed issue when publication has intermittent subscribers (this can happen, and is OK). During send we just have to idle until one is connected again. This is different than a CLOSE event (which is not to be confused with NOT_CONNECTED) 2020-09-09 02:01:06 +02:00
nathan
b7da14834e Added support for IPv6. 2020-09-09 01:33:09 +02:00
nathan
679e002785 Connections can linger a bit before becoming expired (underlying aeron streams can quickly come and go) 2020-09-04 13:19:33 +02:00
nathan
ae168de114 Cleaned up logging 2020-09-04 13:18:59 +02:00
nathan
6dddc77fdc Internal stack traces should keep dorkbox network info 2020-09-04 10:19:53 +02:00
nathan
4e0ff43f5e Code polish 2020-09-04 10:19:29 +02:00
nathan
f4b8ef9c5d cleaned up logging 2020-09-03 22:41:50 +02:00
nathan
52cecf4f26 Added connection timeout to check when a connection is actually expired 2020-09-03 22:41:39 +02:00
nathan
d3c0b4265d Code polish 2020-09-03 22:27:36 +02:00
nathan
1273c8f386 Potential fix for race conditions when closing the endpoint wrt RMI support 2020-09-03 22:23:17 +02:00
nathan
ca32ef36e1 Commented out kryo compression and encryption buffers + logic 2020-09-03 22:21:27 +02:00
nathan
f2bd71d8c4 Enabled kryo initialization counts 2020-09-03 22:20:41 +02:00
nathan
9b1603daa4 cleaned logging 2020-09-03 22:20:19 +02:00
nathan
bae095c0fa Optimized Int.forEach 2020-09-03 22:19:59 +02:00
nathan
e99448e066 Only configure the media driver context to delete the dirs if this is the process that started it 2020-09-03 15:31:52 +02:00
nathan
6e665be6b6 removed debug code 2020-09-03 14:45:24 +02:00
nathan
c9f725ea2d Fixed race condition when initialize kryo instances during startup 2020-09-03 14:37:09 +02:00
nathan
23ef5e499b Fixed polling 2020-09-03 14:36:24 +02:00
nathan
aa3540a8bb Fixed GCM reuse error 2020-09-03 11:37:27 +02:00
nathan
28570d92e9 Fixed invalid object test case 2020-09-03 11:15:37 +02:00
nathan
6a590764ff Fixed issues when registering RMI via registerRmi in different orders (rmi-client/rmi-server out-of-order in different ways). 2020-09-03 02:40:32 +02:00
nathan
af36f9a4ff Code polish 2020-09-03 02:39:38 +02:00
nathan
1e0fa51c60 Removed servers from ALWAYS starting the media driver 2020-09-03 01:46:32 +02:00
nathan
2a6c279692 Fixed handshake race condition which resulted in empty messages. Cleaned up code, added more debug info 2020-09-03 01:31:08 +02:00
nathan
b1e92be50b Fixed issues with reverse RMI and having the client register impl classes (instead of the server) 2020-09-03 01:30:30 +02:00
nathan
b5342cd2f8 Changed default term buffers to be even smaller 2020-09-02 16:18:03 +02:00
nathan
07b8b1002a Serialization registration (class, serializer, id, etc) is now only necessary on the server. The client receives the serialization information during the handshake. 2020-09-02 15:03:57 +02:00
nathan
e27fdbb369 Set kryo log level to ERROR 2020-09-02 03:17:01 +02:00
nathan
1acab50ff4 Added option to enable/disable changing LOOPBACK -> IPC connections 2020-09-02 02:51:10 +02:00
nathan
8083d63da0 Term Buffer sizes are now smaller than the default, but only if it wasn't changed externally 2020-09-02 02:50:46 +02:00
nathan
e20f9b91de Added IPC support, filled out more methods. Better support for connect in a nested disconnect callback. Fixed issue with closing connections-with-handshake-errors on the server pending. 2020-09-02 02:39:05 +02:00
nathan
e09fd43e37 Added guarantee of aeron publication log deletion (warning if it cannot delete the file) 2020-09-01 20:36:24 +02:00
nathan
3ade7f229e Fixed threading issue with read/write global kryo 2020-09-01 14:39:18 +02:00
nathan
9a4c79e445 Fixed threading issue with read/write global kryo 2020-09-01 14:38:49 +02:00
nathan
0cf510fd7c Fixed comments 2020-09-01 14:38:06 +02:00
nathan
36c805cc2f Renamed class 2020-09-01 09:13:12 +02:00
nathan
9ec8f4efe3 Better support for sending RMI objects 2020-09-01 09:12:30 +02:00
nathan
051f419300 Flipped packed IDs order for creating connection RMI objects. Added better toString() info 2020-08-30 23:13:38 +02:00
nathan
f1fec705b9 Tweaked how the settingsStore types are registered with kryo 2020-08-30 23:12:07 +02:00
nathan
202b201a81 Fixed spacing 2020-08-30 22:27:08 +02:00
nathan
8ae9b9ddbb Code cleanup 2020-08-28 10:21:54 +02:00
nathan
080a60f85d Fixed RMI comments, code cleanup 2020-08-28 10:20:53 +02:00
nathan
fe5aa1d8a6 RMI cache now emits errors using the notifyError callback 2020-08-28 10:20:15 +02:00
nathan
ffa286c913 Class registration for RMI can now happen "out of order" and can accept with duplicates (which are automatically ignored) 2020-08-28 10:19:20 +02:00
nathan
47919b9214 Serialization class is now open, so it can be replaced/extended as necessary 2020-08-27 19:05:45 +02:00
nathan
39a77c4e65 Fixed issues with client/server onDisconnect messages. Client/server.close() will now wait for all onDisconnect() callbacks to finish before returning from the close() method 2020-08-27 14:00:35 +02:00
nathan
88c5644046 Better fix for client notifyDisconnect 2020-08-27 02:57:43 +02:00
nathan
01d818fa6e Fixed issues with connection listenermanagers assignment from a client connection. Added more notes 2020-08-27 02:33:09 +02:00
nathan
7c32c066b4 Better logs for handshake 2020-08-27 01:54:59 +02:00
nathan
661c978b07 Fixed issues with getting RMI interface IDS and late id registration 2020-08-27 00:47:37 +02:00
nathan
006e597867 Cleaned up logging, code polish 2020-08-27 00:46:17 +02:00
nathan
e7a7ec9737 Code polish 2020-08-27 00:45:09 +02:00
nathan
fc28153ed4 Fixed issues cleaning stack traces for proxy invocations 2020-08-27 00:44:43 +02:00
nathan
1750e0a2b0 Fixed issue with meaningless stack trace for suspending methods 2020-08-27 00:44:21 +02:00
nathan
39503ac6d9 Cleaned up fragment-limit for poll, added comments 2020-08-26 16:27:59 +02:00
nathan
efa032740a Code polish with the fragment handler 2020-08-26 16:24:40 +02:00
nathan
986585f073 Added a way to get messages in progress for a connection 2020-08-26 16:24:17 +02:00
nathan
31a32d303a Removed dead code 2020-08-26 15:48:43 +02:00
nathan
b3818b0b30 Updated comments 2020-08-26 15:39:41 +02:00
nathan
b6f337d0e6 Added RMI serialization syncrhonization between the server/client during the handshake. Fixed serialization for sending RMI objects in both directions. Removed NetworkSerializationManager, and instead pass the Serialization implementation. 2020-08-26 15:39:29 +02:00
nathan
570aeee52c WIP Rmi object serialization 2020-08-25 20:52:37 +02:00
nathan
977929d2a9 Cleaned up log 2020-08-25 20:52:01 +02:00
nathan
aaba26ab17 Cleaned up error log when ReflectASM cannot be used 2020-08-25 19:47:41 +02:00
nathan
a464d4b231 Fixed issue clearing RMI proxy objects on connection close 2020-08-25 19:47:13 +02:00
nathan
42664bfdfe Fixed issues with restarting a client, notifyConnect/Disconnect now ALWAYS happen on a new coroutine 2020-08-25 17:46:36 +02:00
nathan
b24e4ae710 Code cleanup 2020-08-25 02:58:16 +02:00
nathan
6ad850209c Fixed log typo 2020-08-25 02:55:55 +02:00
nathan
19e631a7ed Centralized sending messages, fixed connection initialization and connection expiration checks 2020-08-25 02:43:20 +02:00
nathan
81302648b3 Cleaner logging of class registrations 2020-08-25 02:29:18 +02:00
nathan
3326fba214 Removed double-poll for events on the connection 2020-08-25 02:27:45 +02:00
nathan
ab69c21774 Cleaned up logging for registration data 2020-08-25 01:57:26 +02:00
nathan
2faba6dcb4 Removed debug code 2020-08-23 19:23:26 +02:00
nathan
59773b4cce Work on cleaning up how exceptions are thrown/logged 2020-08-23 01:12:17 +02:00
nathan
389af93f0a More work done on cleaning up stack traces 2020-08-22 22:58:50 +02:00
nathan
4a033651cc Cleaned up RMI coroutine suspension 2020-08-22 19:29:46 +02:00
nathan
0a9ae32595 Simplified RMI Response manager method invocations and access. code polish 2020-08-21 00:31:01 +02:00
nathan
c117c90ee5 RMI proxy objects no longer save "globally", but instead now are saved per connection 2020-08-20 23:28:12 +02:00
nathan
779861b072 Fixed math for rmiID storage. made ASYNC rmi call ID a constant 2020-08-20 22:09:39 +02:00
nathan
698701dfdc rmiID is ALWAYS on the right for packed IDs. Fixed rmiID unsigned operations. WIP suspend proxy invocations 2020-08-20 13:08:36 +02:00
nathan
ee5e9eb24e Updated copyright notices in files 2020-08-19 15:35:45 +02:00
nathan
4299078919 Updated copyright notices in files 2020-08-19 15:25:59 +02:00
nathan
bcc46577aa Added more stack cleanup methods 2020-08-19 15:06:10 +02:00
nathan
f2704218f2 WIP suspending coroutine calls 2020-08-19 14:50:51 +02:00
nathan
0c9949225f Fixed issues with RMI, fixed how rmi-async is handled 2020-08-19 01:34:31 +02:00
nathan
c4bac5116f Updated comments 2020-08-19 01:06:11 +02:00
nathan
71e4f1ee3f Removed unnecessary deprecation 2020-08-18 23:54:17 +02:00
nathan
1232ea0d8b WIP serialization cleanup 2020-08-18 22:38:00 +02:00
nathan
345de4d734 take/return kryo no longer need to suspend 2020-08-18 22:37:08 +02:00
nathan
da5264c542 Fixed RMI short/int packing for negative numbers 2020-08-18 01:49:19 +02:00
nathan
d2caea6645 code cleanup, extracted more complex logic into it's own function 2020-08-17 16:52:46 +02:00
nathan
98c77488b5 Added continuation serializer for when serializing methods that are suspend 2020-08-17 16:51:13 +02:00
nathan
6f8a9c9d05 Cleaned up cached methods, added toString 2020-08-17 16:50:25 +02:00
nathan
da44f7c339 converetd to kotlin 2020-08-17 16:49:00 +02:00
nathan
57d0b2a14e Fixed generics 2020-08-17 16:48:48 +02:00
nathan
a214c2b53a converted to 2020-08-17 16:48:39 +02:00
nathan
77c3209090 Rename .java to .kt 2020-08-17 16:48:29 +02:00
nathan
f84bcdbec5 Added close for rmi support, removed actor 2020-08-17 16:48:16 +02:00
nathan
cd42f6b85d Fixed size error when cleaning the stack trace 2020-08-17 16:47:50 +02:00
nathan
22f80497ef Changed package name 2020-08-15 13:26:58 +02:00
nathan
4d0a1c9259 Converted to kotlin 2020-08-15 13:22:43 +02:00
nathan
8d9bef0ccc separated handshake from connection management. cleaned up API 2020-08-15 13:21:20 +02:00
nathan
9eb3c122d7 Worked on RMI, moved aeron IO, tweaks to connection management 2020-08-15 13:20:31 +02:00
nathan
d9ab3f7247 Moved Kryoextra, moved Aeron IO, fixed generics with serialization 2020-08-15 13:14:55 +02:00
nathan
1b796971d3 Changed ClientRejectedException hierarchy 2020-08-15 13:13:40 +02:00
nathan
f891e76478 Ensure minimum port range 2020-08-14 22:42:25 +02:00
nathan
8857d1d016 Changed netty -> agrona for compression 2020-08-13 17:03:06 +02:00
nathan
bb6cacbaee WIP - disabled ping 2020-08-13 17:02:41 +02:00
nathan
ac0aba1113 Fixed comments 2020-08-13 17:02:24 +02:00
nathan
6bd93ac8ea Fixed bug with registration detection for RMI types, fixed bug sending wrong class name for registration validation. 2020-08-13 16:54:43 +02:00
nathan
a58af6ba00 Cleaned up log message. Now supports constructor parameters for creating RMI objects 2020-08-13 14:39:19 +02:00
nathan
3513e58d30 Added DirectBuffer to constructor for AeronOutput 2020-08-13 12:03:38 +02:00
nathan
315eb9d80b Fixed typo in log 2020-08-13 01:03:40 +02:00
nathan
290688b51c Changed log for generating ecc keys 2020-08-13 01:03:23 +02:00
nathan
8b6751f3f3 Removed debug code 2020-08-13 01:02:42 +02:00
nathan
7fbc86d132 Removed RMI debug comments 2020-08-13 00:50:53 +02:00
nathan
e621bfb4e3 Better exception handling wrt RMI method invocation 2020-08-13 00:47:35 +02:00
nathan
10e581a21c Reworked how connections are implemented (they are no longer an interface), refactored internal structure of how connections are managed and established. Added proper crypto for handshake data 2020-08-12 23:35:31 +02:00
nathan
007220b82e Removed filter that won't be used 2020-08-12 23:31:56 +02:00
nathan
a52c2d9adb Added trampoline for coroutine suspend argument access 2020-08-12 23:31:36 +02:00
nathan
94e835218a Added RMI save/get/create methods to client/server 2020-08-12 23:30:43 +02:00
nathan
ea8e12a000 Fixed issues with the connection handshake, so now connections are prepped before 'onConnect' is called. 2020-08-12 23:30:16 +02:00
nathan
ccb1267bab Cleaned up RMI save/get/create methods. Fixed issues waiting for RMI method invocation responses 2020-08-12 23:28:37 +02:00
nathan
47891cc448 Fixed access restrictions 2020-08-12 11:21:01 +02:00
nathan
57401b4e5e Added more comments 2020-08-12 11:20:26 +02:00
nathan
085dc30daf Removed netty Input/Output 2020-08-11 23:33:44 +02:00
nathan
2d2dd4a912 Removed unnecessary function 2020-08-11 23:33:23 +02:00
nathan
94f623716b Fixed exception heirarchy 2020-08-11 23:30:56 +02:00
nathan
5d696d37e2 Added more parameters for client/server exception 2020-08-11 23:03:43 +02:00
nathan
c0a44ebbb4 Added ipfilter rule 2020-08-11 16:26:30 +02:00
nathan
ac5ae44cd4 code polish 2020-08-11 16:16:08 +02:00
nathan
20d4a25232 Serialization now initializes using the Serialization defaults class 2020-08-11 16:15:49 +02:00
nathan
1608c0d6a2 WIP - finished global/connection specific RMI, IPC aeron connectivity 2020-07-06 16:36:56 +02:00
nathan
fc7baa6c8d WIP changing the network lib from netty -> AERON 2020-07-03 01:49:00 +02:00
nathan
4c8c50e8a3 Cleanup. pre-kotlin conversion 2020-06-05 19:50:16 +02:00
nathan
794965348a before kotlin conversion 2020-06-04 23:24:24 +02:00
nathan
cf473316e6 Able to get the EndPoint type now, if you want 2020-05-08 17:00:15 +02:00
nathan
1cf4457f77 Updated version 2020-05-08 16:29:59 +02:00
nathan
15be442cb2 Fixed session bootstrap for updated version of netty 2020-05-08 01:16:46 +02:00
nathan
0ef1d79298 Fixed comments 2020-05-07 14:58:13 +02:00
nathan
760ebf974f Cleaned up RMI registration validation 2020-05-07 14:56:41 +02:00
nathan
450f1aa5fb Fixed issue with RMI registration validation fragmentation count 2020-05-07 14:52:45 +02:00
nathan
1a63affdcc Prevent AES IV leak 2019-06-15 00:42:38 +02:00
nathan
786b00932e Updated version from 3.0 to 4.0 2019-06-14 22:02:57 +02:00
nathan
8010005323 Added ability to firewall (TCP/UDP) connections and to specify connection types (NOTHING, COMPRESS, COMPRESS_AND_ENCRYPT) 2019-06-14 20:36:26 +02:00
nathan
78d42e985a Optimized types and methods for the Registration wrapper 2019-06-14 20:35:36 +02:00
nathan
89d70f9255 Added support for optional encryption. Cleaned up connection registration process. 2019-06-14 13:05:28 +02:00
nathan
6ca4da2e23 For UDP, prep channel for messages pre-connection happens first 2019-06-14 12:40:38 +02:00
nathan
353164fac5 Code polish 2019-06-14 12:39:10 +02:00
nathan
682a069c19 Added reconnect throttling 2019-06-14 12:38:35 +02:00
nathan
c5c709407d Moved class registration fragmentation values to the serialization class 2019-06-14 10:57:36 +02:00
nathan
c697643562 Added deprecated warnings where appropriate 2019-06-14 10:56:28 +02:00
nathan
4e0e95fb44 Broadcast properly wraps the byte buffer (instead of unnecessary allocation) 2019-06-14 03:17:14 +02:00
nathan
050fa81aff Added logger to debug kryo read/write. Fixed compression buffer.read calculation error 2019-06-14 03:02:59 +02:00
nathan
2af14728e7 Comment clean up 2019-06-13 21:40:56 +02:00
nathan
4efa01b8fb Merge branch 'master' into crypto_step1
# Conflicts:
#	src/dorkbox/network/connection/RegistrationWrapper.java
2019-06-13 21:31:40 +02:00
nathan
8c3b98be33 Lowered class registration frame size to fix potential UDP issues 2019-06-13 21:31:19 +02:00
nathan
93a6c0c05e Merge branch 'master' into crypto_step1 2019-06-13 21:25:17 +02:00
nathan
b09ce4c650 Lowered class registration frame size to fix potential UDP issues 2019-06-13 21:24:53 +02:00
nathan
b4ff95b496 Cleaned up Kryo names + exceptions 2019-06-13 20:38:46 +02:00
nathan
6177912bb4 Crypto and compression is cleaner, uses Java native instead of bouncycastle 2019-06-13 20:37:24 +02:00
nathan
a52c67671d Cleaned up Kryo names + exceptions 2019-06-13 20:35:09 +02:00
nathan
7b74a730ba Fixed issues surrounding capacity and strings/byte arrays. (we should not be using capacity, require() should manage if we need to grow capacity or not 2019-06-13 01:42:09 +02:00
nathan
372a6a06ca Updated version from 2.17 to 3.0 2019-03-26 20:48:46 +01:00
nathan
8bd52dd202 Upgrade to Kryo 5rc2, updated to use utilities project as a maven release instead of compiling specific files 2019-03-26 20:47:40 +01:00
nathan
ec8d5d1926 Updated to java 8+ version of getting calling class 2019-02-11 23:31:28 +01:00
nathan
16019270c8 Updated version from 2.16 to 2.17 2019-02-11 15:46:42 +01:00
nathan
cdf34ac1dc Updated version from 2.15 to 2.16 2019-01-28 15:15:08 +01:00
nathan
518c98e3af Fixed RMI close method. Code polish 2019-01-28 09:53:42 +01:00
nathan
debd0716cd Method signature cleanup 2019-01-27 16:42:01 +01:00
nathan
273523fc96 Shortened grace period for shutdown 2019-01-27 16:36:02 +01:00
nathan
7e442f2f8a Consolidated multiple RMI support classes (local/network) 2019-01-25 17:04:12 +01:00
nathan
12a9293526 ConnectionRmiSupport refactor. Moved internal methods to Connection_ 2019-01-25 16:41:13 +01:00
nathan
db69e2f9c8 Updated copyright/formatting 2019-01-25 16:27:01 +01:00
nathan
2a4ae99390 RMI Optimizations, merged/renamed primary serialization interface. 2019-01-25 16:17:15 +01:00
nathan
a8fc584ae4 Server shutdown now tries harder to make sure the server is actually shutdown when aborting. Can also check UDP servers now 2019-01-25 16:16:03 +01:00
nathan
aac6e30ec9 DiscoverHost now throws IoException when host discovery fails 2019-01-25 16:15:11 +01:00
nathan
1a6540f360 Shortened shutdown timeout by a lot 2019-01-25 00:49:48 +01:00
nathan
1d3d794f99 Made logger optional for Host discovery. 2019-01-22 01:02:43 +01:00
nathan
463433ef45 Fixed countdown 2019-01-22 00:40:44 +01:00
nathan
0eb19e8c3f Clean up and optimize RMI network stack. 2019-01-20 22:44:27 +01:00
nathan
df73b839b4 Formatting 2019-01-20 21:36:22 +01:00
nathan
9d3cf9fdf5 Added additional checks to make sure the socket is UN-BOUND when shutting down a server. Added UDP checking for Server.isRunning(config) 2019-01-20 21:35:25 +01:00
nathan
bc67ca73a3 More explicit name for connection registration thread. Verified thread handoff is correct 2019-01-17 19:05:31 +01:00
nathan
66fe755bb5 Fixed comments and assignment of local variables 2019-01-17 17:14:42 +01:00
nathan
aa4fc5c44b Fixed issues with Client/Server worker thread pool sizes. 2019-01-17 16:15:59 +01:00
nathan
e6d8666862 Fixed number of worker threads for endpoint 2019-01-17 15:58:13 +01:00
nathan
52197975cd Better API calls for getting the string representation of an ip 2019-01-16 23:35:21 +01:00
nathan
5000fdd264 Optimize IPv4 -> String call in registration stack 2019-01-16 22:41:02 +01:00
nathan
0e42fb89af Updated version from 2.14 to 2.15 2019-01-16 11:44:11 +01:00
nathan
51544ce594 Local-JVM connections now verify class registrations 2019-01-16 11:43:46 +01:00
nathan
cdc22485b0 Fixed class registration verification (write was compressed, read was not) 2019-01-16 11:43:23 +01:00
nathan
627ef245d2 Fixed issues with array offsets when using unpooled buffers. 2019-01-16 11:42:33 +01:00
nathan
b48886376b Fixed javadocs 2019-01-16 11:08:59 +01:00
nathan
d47c28bcc5 Updated version from 2.13 to 2.14 2019-01-13 17:46:12 +01:00
nathan
4c40fd38f3 Class registration verification now includes serializer class (but not it's configuration). 2019-01-11 10:22:02 +01:00
nathan
63d3a586ff Moved util methods into RmiUtil class 2019-01-11 10:12:19 +01:00
nathan
4b5430e90f Added ability for client to send server registration data, and the server will validate that all of the registration classes are the same before allowing the connection to successfully connect. 2019-01-11 09:56:36 +01:00
nathan
7b89fc6443 Added more explicit details on why UDP can fail 2019-01-11 09:53:11 +01:00
nathan
d662f5c37c Reverted EditableDefaultClassResolver 2019-01-10 20:52:21 +01:00
nathan
ff350991a4 Removed the need for a client to register RMI interfaces explicitly (now it is done the same was as "normal" classes, via 'register'. Fixed various startup bugs missed from the last commit 2019-01-09 23:40:19 +01:00
nathan
1ed2b65eed Removed type generics from RemoteObjectSerializer 2019-01-09 23:39:19 +01:00
nathan
241b3d4ce2 Fixed RMI so that the impl class does not have to be registered in order to construct a proxy object 2019-01-09 23:22:54 +01:00
nathan
c609bb7328 Fixed issue with registration timeout == 0 (it will now wait indefinitely) 2019-01-09 19:54:37 +01:00
nathan
3f003995b6 Moved DNS to it's own project 2019-01-09 18:19:44 +01:00
nathan
33853d44e3 RMI is now more robust and forgiving 2019-01-09 18:19:20 +01:00
nathan
c927f87316 Cleaned up RMI field names 2019-01-09 18:18:05 +01:00
nathan
2b8befa88f Updated version from 2.12 to 2.13 2018-12-20 16:27:13 +01:00
nathan
07cb768fc2 Updated version from 2.11 to 2.12 2018-12-19 00:08:05 +01:00
nathan
e5a96cb3b2 For RMI registration, we check to see if the interface is already registered. If so, we override it with the implementation class. This enables us to simplify registering classes for RMI 2018-12-18 23:45:56 +01:00
nathan
c54d20eae6 Fixed internal issue where RMI object was null (since it didn't exist) and we would try to add it to internal maps anyways. 2018-10-25 21:36:00 +02:00
nathan
5f2cb654d2 Updated version 2018-04-05 18:39:45 +02:00
nathan
a56b4261ae Added more error checking for the client with invalid hosts 2018-04-05 17:15:49 +02:00
nathan
1d35a9916e Fixed issues with StackOverflowErrors when loading Netty on windows. 2018-04-05 17:13:58 +02:00
nathan
03e30ab15c Typo fix 2018-04-05 17:11:49 +02:00
nathan
d1fc510d60 Updated version 2018-04-04 23:49:34 +02:00
nathan
fa3f98581d It is not necessary to interrupt the thread group 2018-04-04 23:34:29 +02:00
nathan
f72a3881eb Fixed logic for transmitting return values/exceptions (it was incorrect
in the earlier commit)
2018-04-04 23:34:11 +02:00
nathan
f142a3f244 If the method return type is 'void', then we don't have to explicitly
set 'transmitReturnValue' to false.  If there are no checked exceptions
thrown, then we don't have to explicitly set 'transmitExceptions' to false
2018-04-04 22:45:31 +02:00
nathan
617ab95ede Added isConnected() method back to the client 2018-04-04 16:16:31 +02:00
nathan
0a2da83a2c Better Ping/UDP-close-hint management 2018-04-04 15:25:02 +02:00
nathan
6582caa521 Added better close listener for UDP 2018-04-04 15:02:17 +02:00
nathan
fdf4ecf39b Removed connection timing. added protocol count connection info during
handshake
2018-04-04 15:01:51 +02:00
nathan
ccbe893efa Added better out-of-order message handling during connection handshake 2018-04-04 15:01:08 +02:00
nathan
b9c6a1422d Code cleanup/polish 2018-04-04 14:58:34 +02:00
nathan
615e224292 Added close hints when the connection is shutdown 2018-04-04 14:58:24 +02:00
nathan
73a5af7a95 Added wire read/write trace logging (ie: exactly what's on the wire...) 2018-04-04 14:57:19 +02:00
nathan
292f50a059 Code polish/cleanup 2018-04-04 14:56:37 +02:00
nathan
a4cf9f4834 Datagram session now checks if event loop is shutdown before trying to
close
2018-04-03 15:53:01 +02:00
nathan
5d2fa50de2 Moved UDP close hint to it's own class and into the EndPoint (similar to
how Ping works)
2018-04-03 14:38:52 +02:00
nathan
f50b218ac1 Code cleanup 2018-04-02 16:16:56 +02:00
nathan
590ae9d94c Added info about link-local multicast name resolution 2018-04-02 16:08:14 +02:00
nathan
0af57379e6 Fixed issues with multiple worker threads 2018-04-02 16:06:58 +02:00