Commit Graph

667 Commits

Author SHA1 Message Date
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