Him188
b219ba986e
Review network ComponentStorage
framework and improve connection logics, support reconnection on force offline ( closes #1330 , close #1331 ), and on bad network.
...
- Remove `FactoryKeepAliveNetworkHandlerSelector` and add `KeepAliveNetworkHandlerSelector`;
- Review the storage of `QQAndroidBotClient`, extract it as a `BotClientHolder`;
- Introduce bot-level components that lasts with the lifecycle of `Bot`, and network-level components accordingly;
- Dynamically re-create the context given to `NetworkHandler` in selector, to use network-level components, including `BotClientHolder`, that allows a simple reinitialization of `BotClient`;
- Handles the situation when physical network broken on logging in, giving a hint to user and halts the log-in process and transfer the responsibility of reconnecting to selector;
- Send logout only in `Bot.close` (manual close).
2021-06-16 03:00:50 +08:00
Him188
e65593b2af
Add BeforeStateChangedObserver
2021-06-16 02:37:06 +08:00
Him188
23c1a67479
Add naming notes for StatSvc.Register
in logging
2021-06-16 02:29:05 +08:00
Him188
ad4f7a6232
Show OutgoingPacket.displayName
in logging
2021-06-16 02:28:51 +08:00
Him188
24ac4ffa95
Add ConcurrentComponentStorage
builder
2021-06-16 01:52:42 +08:00
Him188
e6119e6301
Throw NoSuchComponentException
with full details in CombinedComponentStorage.get
2021-06-16 01:52:27 +08:00
Him188
9933fab4c5
Add ComponentStorage?.withPrimary
2021-06-16 01:51:50 +08:00
Him188
f4ec905aff
Make CombinedStateObserver.toString
more readable
2021-06-16 01:51:26 +08:00
Him188
750ab0db37
Fix StackOverflowError
on calling bot.client
in tests with TestSsoProcessor
, fix #1332
2021-06-15 20:47:50 +08:00
Him188
bebb786b9a
Fix build
2021-06-13 11:10:12 +08:00
Him188
c9f98e46d7
Implement heartbeat periods and timeouts correctly, #1255
2021-06-13 10:59:11 +08:00
Him188
43b13d158f
Implement HeartbeatStrategy
, #1226
2021-06-13 10:50:55 +08:00
Karlatemp
e9d9d56489
Avoid network congestion
2021-06-11 21:19:35 +08:00
Karlatemp
05a8419fb7
Fix internal error in uploading private images; fix #1317
2021-06-10 22:49:24 +08:00
Him188
1e2ab736c2
Use bot.closeAndJoin()
in tests
2021-06-08 17:13:37 +08:00
Him188
81258488cb
Check isActive
in BotOnlineWatchdog
2021-06-08 17:13:25 +08:00
Him188
300882ea18
Redesign ComponentStorage
initialization for clearer tests
2021-06-08 17:13:15 +08:00
Him188
f9da72c136
Convert DEFAULT_BLACKLIST
to function and initialize the immutable set only once
2021-06-08 16:16:01 +08:00
Him188
65a3ffc147
Rename ComponentScope.plus
to .withFallback
2021-06-08 16:14:23 +08:00
Him188
c8def70594
Add bot.job
as parent of NetworkHandlerSupport
2021-06-08 16:14:23 +08:00
Him188
5f7f350eb5
Close PacketDecodePipeline.channel
on scope closure
2021-06-08 16:14:23 +08:00
Him188
038be54444
Remote pcap4j from jvmTest
2021-06-08 16:14:23 +08:00
Him188
19bc781854
Add kotlinx-coroutines-debug
to jvmTest
2021-06-08 16:14:23 +08:00
Him188
ad3bd4cc0d
Stop BotOnlineWatchdog if bot is closed
2021-06-08 12:19:05 +08:00
Him188
54a78313c8
Improve logging on exceptions and correctly handle CancellationException
when Bot.close
is invoked.
2021-06-08 12:18:40 +08:00
Him188
3e8fc8e1ec
Do not pass failed IncomingPacket
to PacketFactory
s
2021-06-08 12:16:26 +08:00
Him188
725b502d9e
Add notes for blacklist
2021-06-08 12:04:54 +08:00
Him188
a53f97cb6f
Add OnlinePush.ReqPush
to blacklist
2021-06-08 12:00:35 +08:00
Him188
56165c82aa
Fix ignored friend message event logging, fix #1312
2021-06-08 12:00:20 +08:00
Him188
091906577a
Add StatSvc.SimpleGet
to DEFAULT_BLACKLIST
2021-06-08 11:25:36 +08:00
Him188
8312a5bc98
Temporarily disable NettyHandlerEventTest
to make build success #1311
2021-06-07 22:03:12 +08:00
Him188
e0f9c311f2
Temporarily disable tests BotOffline from OK TO CLOSED
and BotOfflineEvent after successful reconnection
to make build success #1311
2021-06-07 22:00:22 +08:00
Him188
684b844b44
Move implementation of EventDispatcher.joinBroadcast
to tests and mark it @TestOnly
2021-06-07 18:46:40 +08:00
Him188
9619338d5b
Catch and forward event broadcasting to EventDispatcher
2021-06-07 18:18:07 +08:00
Him188
9cf45bd9ca
Ignore MessageSvc.PushNotify
in logging
2021-06-07 18:14:24 +08:00
Him188
271759b4c6
Fix ignorance of MultiPacket
using blacklist
2021-06-07 18:14:10 +08:00
Him188
84fb928764
Add check for arguments of NetworkHandlerSupport.sendAndExpect
2021-06-07 17:47:40 +08:00
Him188
5ebd65e78d
Change setStateImpl
in the ordering:
...
1. Update current state
2. Close old state
3. Notify observer
4. Notify selector
2021-06-07 17:05:34 +08:00
Him188
02c9fd2fb0
Add SetStateTest
2021-06-07 13:36:27 +08:00
Him188
02681428c9
Review and migrate deprecated calls
2021-06-07 12:57:01 +08:00
Him188
b5db147985
Remove debugConf
2021-06-07 12:57:00 +08:00
Him188
e9c53eb5db
Always close netty connection if StateLoading completed with an exception
2021-06-06 16:56:19 +08:00
Him188
91b5a5da58
Disable mirai.debug.network.state.observer.logging
in tests
2021-06-06 16:35:56 +08:00
Him188
679e61e4d0
Use collectThrow
instead of throw
in SsoProcessor.SlowLoginImpl.login
2021-06-06 16:34:35 +08:00
Him188
756c805460
Fix typo
2021-06-06 16:21:50 +08:00
Him188
e7521028d1
Fix tests
2021-06-06 13:58:46 +08:00
Him188
dadff42718
Unwrap NetworkException on logon failure
2021-06-06 13:58:46 +08:00
Him188
7739c4db80
Close network in MessageSvcPushForceOffline properly by throwing ServerClosedException
2021-06-06 13:58:46 +08:00
Him188
0d28772275
Do not listen BotOfflineEvent to close network
2021-06-06 13:58:45 +08:00
Him188
137e1a1235
Fix network scopes and exception handling. Support recovering after system hibernation and network failure.
2021-06-05 16:05:41 +08:00
Him188
e788aa09f7
Add awaitStateChange
2021-06-05 16:05:41 +08:00
Him188
c6075ec299
Refine state observer for events
2021-06-05 16:05:41 +08:00
Him188
061023bc4d
Rearrange NetworkHandlerSupport
2021-06-05 16:05:41 +08:00
Him188
8ae2e04f02
Improve implementation docs
2021-06-05 16:05:41 +08:00
Him188
083a3a1e00
Prefer value class
2021-06-05 16:05:41 +08:00
Him188
b7527a1b56
Extract HeartbeatScheduler and add HeartbeatFailedException and NetworkException
2021-06-05 16:05:41 +08:00
Him188
9f466c882e
Improve syncMessageSvc
:
...
- do not suspend logon and postpone suspension until sending message
- add MessageSvcSyncer
Fix #1253
2021-06-02 17:24:46 +08:00
Him188
4fd1b25838
Close network in-place in BotOfflineEventMonitorImpl.onEvent
on BotOfflineEvent.Active
2021-05-31 17:05:20 +08:00
Him188
0c0c9d5dc2
Replace stateChanged
with stateChannel
for better performance and easier testing;
...
Add tests for `sendPacketImpl`;
2021-05-31 15:58:44 +08:00
Him188
00e2d2b77f
Support refreshing instance in NetworkHandlerSelector
2021-05-31 15:03:12 +08:00
Him188
8c0f245da1
Simplify awaitState
2021-05-31 13:39:21 +08:00
Him188
db98862712
Initialize classes before tests
2021-05-31 13:38:21 +08:00
Him188
bdd390e774
Unify logging in ContactCacheService
2021-05-31 13:38:04 +08:00
Him188
9dfb46d704
Make tests faster
2021-05-31 01:46:02 +08:00
Him188
266d73f8a1
Improve SelectorNetworkHandler lifecycle: do not tolerant any exception thrown by states
2021-05-31 01:33:00 +08:00
Him188
0505dc41fa
Stop SelectorNetworkHandler
after manual close
2021-05-31 01:12:08 +08:00
Him188
e0c0a189dc
Make NettyUtilsTest faster
2021-05-31 00:31:54 +08:00
Him188
ff6c63fafc
EventDispatcher: launch Jobs UNDISPATCHED-ly
2021-05-31 00:15:02 +08:00
Karlatemp
76eaa34917
Fix tests
...
tests
Fix StateObserver error
2021-05-31 00:15:02 +08:00
Karlatemp
6f8d15ed37
Add test timeout
2021-05-31 00:15:02 +08:00
Karlatemp
7e94eb66d4
Fix StackOverflowError
2021-05-31 00:15:02 +08:00
Him188
b5f47d5f91
Fix network:
...
- fix `awaitState`
- improve `EventDispatcher`
- use `EventDispatcher` in components
- use `eventDispatcher.joinBroadcast()` in tests to remove delays and make tests stable
2021-05-31 00:15:01 +08:00
Him188
c93d6aa608
Add ForwardRefineTest
2021-05-30 22:51:26 +08:00
Him188
301deadbd1
Add test for #1273
2021-05-30 21:16:43 +08:00
Him188
bcdff1336b
Kotlin 1.5 and dependencies updates ( #1246 )
...
* Kotlin 1.5 and dependencies updates
* Update mirai-console ref
* Use Kotlin 1.5.10
* 2.7-M1-dev-3
* Update console ref
2021-05-27 14:39:13 +08:00
Him188
5e25c0e25b
Remove bintray
2021-05-25 12:25:53 +08:00
Him188
3584ca1e71
Improve performance of CombinedComponentStorage.size
2021-05-24 13:21:38 +08:00
Him188
e769130829
Improve ComponentStorage.plus: accept nullable arguments
2021-05-11 09:01:12 +08:00
Him188
1d2b2377cf
Add ConcurrentComponentStorage.creationStacktrace
2021-05-10 13:13:58 +08:00
Him188
f7f4ccf4f5
Correct state transition logic:
...
- Linear lifecycle for NetworkHandler: no chance to change state back to previous ones
- No reconnection attempts in NetworkHandler but in NHSelector
- Ensure clashing checks performed in setState
- Print closure exception in TestNettyNH.setStateOK
2021-05-09 21:05:32 +08:00
Him188
d43a77b590
Update docs and improve source code readability
2021-05-09 15:31:50 +08:00
Him188
6bc5c1204e
Use withExceptionCollector
in sendAndExpect
2021-05-09 13:12:34 +08:00
Him188
c9a3bb23ee
Minor improvements after rebase
2021-05-09 00:54:48 +08:00
Him188
e60dd20d7b
Add AbstractNettyNHTest.setSsoProcessor
2021-05-09 00:54:48 +08:00
Him188
0584b44823
Fix imports
2021-05-09 00:54:48 +08:00
Karlatemp
b31ef37c8d
Exception Handling; Normal login tests
2021-05-09 00:54:48 +08:00
Him188
d2f600f9bb
Fix docs
2021-05-09 00:54:48 +08:00
Him188
e58db121dc
Remove redundant properties
2021-05-09 00:54:48 +08:00
Karlatemp
361304b9f2
Fix NPE in StateConnecting
2021-05-09 00:54:48 +08:00
Him188
b53e546743
Prototype EventDispatcher
2021-05-09 00:54:48 +08:00
Him188
5d3130448c
Add NHSupport.setState safe overload and fix tests
2021-05-09 00:54:48 +08:00
Him188
1bb1b18f98
Improve logging in components
...
- Fix duplicated event logs
- Specify logger name for AccountSecretsManager
- Fix OtherClientUpdater logger
- Unify ServerList logger
- SubLogger.isEnabled
2021-05-09 00:54:48 +08:00
Him188
060004644e
Add writeAndFlushOrCloseAsync to handle exception on send properly
2021-05-09 00:54:48 +08:00
Him188
a77b52e7d3
Add bot argument to PushReqResponse and filter in ConfigPushProcessorImpl
2021-05-09 00:54:48 +08:00
Him188
d14ed0cecd
Dispatch events in Bot scope
2021-05-09 00:54:48 +08:00
Him188
b62e39b4d1
Set state to CLOSED on failure during connecting
2021-05-09 00:54:48 +08:00
Him188
f684b148d3
Remove notes that was for rewrite
2021-05-09 00:54:48 +08:00
Him188
61bc657417
Extract some logic out of QQAndroidBot
2021-05-09 00:54:48 +08:00
Him188
35884182af
Fix and improve event logging
2021-05-09 00:54:48 +08:00
Him188
d73f5a2692
Review BotConfiguration and implement relevant configs, implement alive heartbeat, fix behavior on resume
2021-05-09 00:54:48 +08:00
Him188
6e06406a3a
Support network selector retry
2021-05-09 00:54:48 +08:00
Him188
83a81961ca
Properly suspend coroutine is not available for send
2021-05-09 00:54:48 +08:00
Him188
eb80a4836b
Remove all unstable kotlin.Duration usages
2021-05-09 00:54:48 +08:00
Him188
a7a4879d05
Improve logging
2021-05-09 00:54:48 +08:00
Him188
5fa54114c1
Fix sso and event logging
2021-05-09 00:54:48 +08:00
Him188
971685a2b0
Fix state resume
2021-05-09 00:54:48 +08:00
Him188
95d634233c
Close bot if first login failed
2021-05-09 00:54:48 +08:00
Him188
35a6d12dde
Test: network scope closed on bot close
2021-05-09 00:54:48 +08:00
Him188
062492c546
Test: NettyEndlessReconnectionTest
2021-05-09 00:54:48 +08:00
Him188
e584bc8ee8
Test: state tests
2021-05-09 00:54:48 +08:00
Him188
8db8e2fb03
Implement lifecycle management for network
2021-05-09 00:54:48 +08:00
Him188
f9ddf74d8e
Extract sync logic
2021-05-09 00:54:48 +08:00
Him188
076cd4997d
BotOfflineEventMonitor
2021-05-09 00:54:48 +08:00
Him188
3806d7ce78
fix componentName and smartToString
2021-05-09 00:54:48 +08:00
Him188
c35c2c97c8
CombinedStorageTest
2021-05-09 00:54:48 +08:00
Him188
b91bbfd2b8
Add NetworkHandlerFactory and tests for NetworkHandler
2021-05-09 00:54:48 +08:00
Him188
4f77abca87
Components misc implementations including (ABI changes):
...
- ComponentStorage and its impls
- ContactCacheService
- ContactUpdater
- HeartbeatProcessor
- SsoProcessor
- QQABot
2021-05-09 00:54:48 +08:00
Him188
7f2f1e9759
Rearrange network tests
2021-05-09 00:54:48 +08:00
Him188
9286d2124e
Add utils for tests
2021-05-09 00:54:48 +08:00
Him188
035085cf45
Remove state CONNECTION_LOST
2021-05-09 00:54:48 +08:00
Him188
84fa460b32
BotOnlineEvent, BotReloginEvent, BotOfflineEvent
2021-05-09 00:54:48 +08:00
Him188
d70475b8ba
Do not resume state while it is already closed
2021-05-09 00:54:48 +08:00
Him188
0e1b9da5e4
Fix test KeepAliveNetworkHandlerSelectorTest
2021-05-09 00:54:48 +08:00
Him188
79112bc98d
Fix LongMessageInternal missing parameter (due to merge)
2021-05-09 00:54:48 +08:00
Him188
35b80dc700
Processors
2021-05-09 00:54:48 +08:00
Him188
dd1b7404ea
IDEA removed my import
2021-05-09 00:54:48 +08:00
Him188
9db3a5ef4f
Rearrange packages for component system
2021-05-09 00:54:48 +08:00
Him188
0443fe4576
Prefer generified outgoing packets in all factories
2021-05-09 00:54:48 +08:00
Him188
82ad953b2b
Continuing implement states for NetworkHandler
2021-05-09 00:54:48 +08:00
Him188
03e12eb287
fix build
2021-05-09 00:54:48 +08:00
Him188
9ac0a8715c
Integrate ServerList into component system
2021-05-09 00:54:48 +08:00
Him188
3ec8a94096
ContactUpdater and ContactCacheService
2021-05-09 00:54:48 +08:00
Him188
51c1450202
ComponentStorage
2021-05-09 00:54:48 +08:00
Him188
05b2bfe059
Rearrange packages
2021-05-09 00:54:48 +08:00
Him188
70551167ba
States and connection impl
2021-05-09 00:54:48 +08:00
Him188
1fef89cf1c
Add state observer
2021-05-09 00:54:48 +08:00
Him188
8786f12d5d
Add NetworkHandler.isOk to avoid state == OK
2021-05-09 00:54:48 +08:00
Him188
4446479e80
Make QQAndroidClient lighter
2021-05-09 00:54:48 +08:00
Him188
f2b236341a
Decouple SSO login processor
2021-05-09 00:54:48 +08:00
Him188
997ad1eb63
Rearrange QQAndroidBot
2021-05-09 00:54:48 +08:00
Him188
1d053bd1bd
Extract netty utils
2021-05-09 00:54:48 +08:00
Him188
90f5e27b5f
Add AbstractKeepAliveNetworkHandlerSelectorTest
2021-05-09 00:54:48 +08:00
Him188
382c351e08
Implement NetworkHandlerSelector, serverList, and implement them into Bot
2021-05-09 00:54:48 +08:00
Him188
ff80434d2d
Migrate network logger and old sendWithoutExpect and sendAndExpect
2021-05-09 00:54:48 +08:00
Him188
840dd19dd0
Move EMPTY_BYTE_ARRAY to mirai-core-utils
2021-05-09 00:54:48 +08:00
Him188
097a478999
Relocates netty files to correct packages
2021-05-09 00:54:48 +08:00
Karlatemp
5f0b432220
NettyTestUnit
2021-05-09 00:54:48 +08:00
Him188
e293195391
Set state to StateClosed
appropriately and update docs
2021-05-09 00:54:48 +08:00
Him188
a143340141
Buildscript: Fix test artifacts included in main sourceset
2021-05-09 00:54:48 +08:00
Him188
d01f71ff8b
Remove rubbish; fix build; add todos
2021-05-09 00:54:48 +08:00