gitextract_1je6oco0/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── ask-question.md │ ├── bug-report.md │ ├── empty-issues.md │ └── enhance-task.md ├── .gitignore ├── BACKERS.md ├── LICENSE ├── README.md ├── README_CN.md ├── changeLog_ioGame.md ├── common/ │ ├── README.md │ ├── common-core/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── iohao/ │ │ │ │ └── game/ │ │ │ │ └── action/ │ │ │ │ └── skeleton/ │ │ │ │ ├── IoGameVersion.java │ │ │ │ ├── annotation/ │ │ │ │ │ ├── ActionController.java │ │ │ │ │ ├── ActionMethod.java │ │ │ │ │ ├── DocActionSend.java │ │ │ │ │ ├── DocActionSends.java │ │ │ │ │ ├── ValidatedGroup.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── core/ │ │ │ │ │ ├── ActionCommand.java │ │ │ │ │ ├── ActionCommandDocParser.java │ │ │ │ │ ├── ActionCommandFlowExecute.java │ │ │ │ │ ├── ActionCommandHandler.java │ │ │ │ │ ├── ActionCommandParser.java │ │ │ │ │ ├── ActionCommandRegion.java │ │ │ │ │ ├── ActionCommandRegionGlobalCheckKit.java │ │ │ │ │ ├── ActionCommandRegions.java │ │ │ │ │ ├── ActionFactoryBean.java │ │ │ │ │ ├── ActionParserListenerAbout.java │ │ │ │ │ ├── ActionSend.java │ │ │ │ │ ├── BarMessageKit.java │ │ │ │ │ ├── BarSkeleton.java │ │ │ │ │ ├── BarSkeletonBuilder.java │ │ │ │ │ ├── BarSkeletonBuilderParamConfig.java │ │ │ │ │ ├── BarSkeletonSetting.java │ │ │ │ │ ├── CmdInfo.java │ │ │ │ │ ├── CmdInfoFlyweightFactory.java │ │ │ │ │ ├── CmdKit.java │ │ │ │ │ ├── DataCodecKit.java │ │ │ │ │ ├── DefaultActionCommandFlowExecute.java │ │ │ │ │ ├── DefaultActionFactoryBean.java │ │ │ │ │ ├── DependencyInjectionPart.java │ │ │ │ │ ├── DevConfig.java │ │ │ │ │ ├── Handler.java │ │ │ │ │ ├── InOutManager.java │ │ │ │ │ ├── InOutManagerAbout.java │ │ │ │ │ ├── IoGameCommonCoreConfig.java │ │ │ │ │ ├── IoGameGlobalSetting.java │ │ │ │ │ ├── PrintActionKit.java │ │ │ │ │ ├── SkeletonAttr.java │ │ │ │ │ ├── ValidatorKit.java │ │ │ │ │ ├── action/ │ │ │ │ │ │ └── parser/ │ │ │ │ │ │ ├── ActionParserContext.java │ │ │ │ │ │ ├── ActionParserListener.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── codec/ │ │ │ │ │ │ ├── DataCodec.java │ │ │ │ │ │ ├── DataSelfEncode.java │ │ │ │ │ │ ├── JsonDataCodec.java │ │ │ │ │ │ ├── ProtoDataCodec.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── commumication/ │ │ │ │ │ │ ├── BroadcastContext.java │ │ │ │ │ │ ├── BroadcastOrderContext.java │ │ │ │ │ │ ├── BrokerClientContext.java │ │ │ │ │ │ ├── ChannelContext.java │ │ │ │ │ │ ├── CommunicationAggregationContext.java │ │ │ │ │ │ ├── InvokeExternalModuleContext.java │ │ │ │ │ │ ├── InvokeModuleContext.java │ │ │ │ │ │ ├── ProcessorContext.java │ │ │ │ │ │ ├── SimpleServer.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── doc/ │ │ │ │ │ │ ├── ActionCommandDoc.java │ │ │ │ │ │ ├── ActionCommandDocKit.java │ │ │ │ │ │ ├── ActionDoc.java │ │ │ │ │ │ ├── ActionDocs.java │ │ │ │ │ │ ├── ActionDocument.java │ │ │ │ │ │ ├── ActionMemberCmdDocument.java │ │ │ │ │ │ ├── ActionMethodDocument.java │ │ │ │ │ │ ├── ActionSendDoc.java │ │ │ │ │ │ ├── ActionSendDocs.java │ │ │ │ │ │ ├── ActionSendDocsRegion.java │ │ │ │ │ │ ├── BarSkeletonDoc.java │ │ │ │ │ │ ├── BroadcastDoc.java │ │ │ │ │ │ ├── BroadcastDocBuilder.java │ │ │ │ │ │ ├── BroadcastDocument.java │ │ │ │ │ │ ├── BroadcastDocumentBuilder.java │ │ │ │ │ │ ├── DocInfo.java │ │ │ │ │ │ ├── DocumentAccessAuthentication.java │ │ │ │ │ │ ├── DocumentAnalyseKit.java │ │ │ │ │ │ ├── DocumentGenerate.java │ │ │ │ │ │ ├── DocumentMethod.java │ │ │ │ │ │ ├── ErrorCodeDoc.java │ │ │ │ │ │ ├── ErrorCodeDocs.java │ │ │ │ │ │ ├── ErrorCodeDocsRegion.java │ │ │ │ │ │ ├── ErrorCodeDocument.java │ │ │ │ │ │ ├── IoGameDocument.java │ │ │ │ │ │ ├── IoGameDocumentHelper.java │ │ │ │ │ │ ├── JavaClassDocInfo.java │ │ │ │ │ │ ├── TextDocumentGenerate.java │ │ │ │ │ │ ├── TypeMappingDocument.java │ │ │ │ │ │ ├── TypeMappingRecord.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── enhance/ │ │ │ │ │ │ ├── BarSkeletonBuilderEnhance.java │ │ │ │ │ │ └── BarSkeletonBuilderEnhances.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── ActionErrorEnum.java │ │ │ │ │ │ ├── MsgException.java │ │ │ │ │ │ ├── MsgExceptionInfo.java │ │ │ │ │ │ ├── MsgExceptionKit.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── flow/ │ │ │ │ │ │ ├── ActionAfter.java │ │ │ │ │ │ ├── ActionMethodExceptionProcess.java │ │ │ │ │ │ ├── ActionMethodInOut.java │ │ │ │ │ │ ├── ActionMethodInvoke.java │ │ │ │ │ │ ├── ActionMethodParamParser.java │ │ │ │ │ │ ├── ActionMethodResultWrap.java │ │ │ │ │ │ ├── FlowContext.java │ │ │ │ │ │ ├── FlowContextFactory.java │ │ │ │ │ │ ├── FlowContextKit.java │ │ │ │ │ │ ├── InternalAboutFlowContext.java │ │ │ │ │ │ ├── ResponseMessageCreate.java │ │ │ │ │ │ ├── UserAttachment.java │ │ │ │ │ │ ├── attr/ │ │ │ │ │ │ │ ├── FlowAttr.java │ │ │ │ │ │ │ ├── FlowOption.java │ │ │ │ │ │ │ ├── FlowOptionDynamic.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ ├── DebugInOut.java │ │ │ │ │ │ │ ├── DefaultActionAfter.java │ │ │ │ │ │ │ ├── DefaultActionMethodExceptionProcess.java │ │ │ │ │ │ │ ├── DefaultActionMethodInvoke.java │ │ │ │ │ │ │ ├── DefaultActionMethodParamParser.java │ │ │ │ │ │ │ ├── DefaultActionMethodResultWrap.java │ │ │ │ │ │ │ ├── DefaultResponseMessageCreate.java │ │ │ │ │ │ │ ├── StatActionInOut.java │ │ │ │ │ │ │ ├── ThreadMonitorInOut.java │ │ │ │ │ │ │ ├── TimeRangeInOut.java │ │ │ │ │ │ │ ├── TraceIdInOut.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── parser/ │ │ │ │ │ │ ├── BoolValueMethodParser.java │ │ │ │ │ │ ├── DefaultMethodParser.java │ │ │ │ │ │ ├── IntValueMethodParser.java │ │ │ │ │ │ ├── LongValueMethodParser.java │ │ │ │ │ │ ├── MethodParser.java │ │ │ │ │ │ ├── MethodParsers.java │ │ │ │ │ │ ├── StringValueMethodParser.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── runner/ │ │ │ │ │ ├── InternalRunner.java │ │ │ │ │ ├── Runner.java │ │ │ │ │ ├── Runners.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── eventbus/ │ │ │ │ │ ├── AbstractEventBusRunner.java │ │ │ │ │ ├── EventBrokerClientMessage.java │ │ │ │ │ ├── EventBus.java │ │ │ │ │ ├── EventBusFireType.java │ │ │ │ │ ├── EventBusListener.java │ │ │ │ │ ├── EventBusMessage.java │ │ │ │ │ ├── EventBusMessageCreator.java │ │ │ │ │ ├── EventBusRegion.java │ │ │ │ │ ├── EventBusRunner.java │ │ │ │ │ ├── EventBusSubscriber.java │ │ │ │ │ ├── EventSubscribe.java │ │ │ │ │ ├── EventTopicMessage.java │ │ │ │ │ ├── ExecutorSelector.java │ │ │ │ │ ├── InternalAboutAny.java │ │ │ │ │ ├── InternalAboutEventBus.java │ │ │ │ │ ├── SubscribeExecutorStrategy.java │ │ │ │ │ ├── Subscriber.java │ │ │ │ │ ├── SubscriberInvoke.java │ │ │ │ │ ├── SubscriberInvokeCreator.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── ext/ │ │ │ │ │ └── spring/ │ │ │ │ │ ├── ActionFactoryBeanForSpring.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── i18n/ │ │ │ │ │ ├── Bundle.java │ │ │ │ │ └── MessageKey.java │ │ │ │ ├── kit/ │ │ │ │ │ ├── ExecutorSelectEnum.java │ │ │ │ │ ├── ExecutorSelectKit.java │ │ │ │ │ ├── FixedCmd.java │ │ │ │ │ ├── LogicServerCreateKit.java │ │ │ │ │ ├── RangeBroadcast.java │ │ │ │ │ ├── RangeBroadcaster.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── protocol/ │ │ │ │ │ ├── BarMessage.java │ │ │ │ │ ├── HeadMetadata.java │ │ │ │ │ ├── RequestMessage.java │ │ │ │ │ ├── ResponseMessage.java │ │ │ │ │ ├── collect/ │ │ │ │ │ │ ├── RequestCollectMessage.java │ │ │ │ │ │ ├── ResponseCollectItemMessage.java │ │ │ │ │ │ ├── ResponseCollectMessage.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── external/ │ │ │ │ │ │ ├── RequestCollectExternalMessage.java │ │ │ │ │ │ ├── ResponseCollectExternalItemMessage.java │ │ │ │ │ │ ├── ResponseCollectExternalMessage.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── login/ │ │ │ │ │ │ ├── SettingUserIdMessage.java │ │ │ │ │ │ ├── SettingUserIdMessageResponse.java │ │ │ │ │ │ └── SettingUserIdResult.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── processor/ │ │ │ │ │ │ ├── EndPointLogicServerMessage.java │ │ │ │ │ │ ├── EndPointOperationEnum.java │ │ │ │ │ │ ├── SimpleServerInfo.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── BoolValue.java │ │ │ │ │ ├── BoolValueList.java │ │ │ │ │ ├── ByteValueList.java │ │ │ │ │ ├── IntValue.java │ │ │ │ │ ├── IntValueList.java │ │ │ │ │ ├── LongValue.java │ │ │ │ │ ├── LongValueList.java │ │ │ │ │ ├── StringValue.java │ │ │ │ │ ├── StringValueList.java │ │ │ │ │ ├── ValueRecord.java │ │ │ │ │ ├── WrapperKit.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── pulse/ │ │ │ │ │ ├── Pulses.java │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── PulseChannel.java │ │ │ │ │ │ ├── PulseTransmit.java │ │ │ │ │ │ ├── consumer/ │ │ │ │ │ │ │ ├── DefaultPulseConsumers.java │ │ │ │ │ │ │ ├── PulseConsumer.java │ │ │ │ │ │ │ ├── PulseConsumers.java │ │ │ │ │ │ │ └── PulseSignalRequestAccept.java │ │ │ │ │ │ └── producer/ │ │ │ │ │ │ ├── DefaultPulseProducers.java │ │ │ │ │ │ ├── PulseCreatePeriod.java │ │ │ │ │ │ ├── PulseCreateRequest.java │ │ │ │ │ │ ├── PulseProducer.java │ │ │ │ │ │ ├── PulseProducers.java │ │ │ │ │ │ └── PulseSignalResponseAccept.java │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── EmptyMessage.java │ │ │ │ │ │ ├── PulseSignalMessage.java │ │ │ │ │ │ ├── PulseSignalRequest.java │ │ │ │ │ │ ├── PulseSignalResponse.java │ │ │ │ │ │ └── SignalType.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── runner/ │ │ │ │ │ ├── CreatePulsesRunner.java │ │ │ │ │ └── PulseRunner.java │ │ │ │ └── toy/ │ │ │ │ ├── BannerColorStrategy.java │ │ │ │ ├── BannerData.java │ │ │ │ ├── BreakingNewsAbout.java │ │ │ │ ├── InternalMemory.java │ │ │ │ ├── IoGameBanner.java │ │ │ │ ├── ToyLine.java │ │ │ │ ├── ToyTable.java │ │ │ │ ├── ToyTableRegion.java │ │ │ │ └── ToyTableRender.java │ │ │ └── resources/ │ │ │ ├── iohao.properties │ │ │ └── iohao_zh_CN.properties │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── iohao/ │ │ │ └── game/ │ │ │ ├── action/ │ │ │ │ └── skeleton/ │ │ │ │ ├── core/ │ │ │ │ │ ├── ActionParserListenerTest.java │ │ │ │ │ ├── BarSkeletonTest.java │ │ │ │ │ ├── DataCodecKitTest.java │ │ │ │ │ ├── InOutManagerTest.java │ │ │ │ │ ├── JSR380Test.java │ │ │ │ │ ├── JSR380ValidatedGroupTest.java │ │ │ │ │ ├── SimpleWrapperActionTest.java │ │ │ │ │ ├── WrapperIntTest.java │ │ │ │ │ ├── WrapperLongTest.java │ │ │ │ │ ├── action/ │ │ │ │ │ │ ├── BeeAction.java │ │ │ │ │ │ ├── ExampleActionCmd.java │ │ │ │ │ │ ├── SimpleWrapperAction.java │ │ │ │ │ │ ├── WrapperIntAction.java │ │ │ │ │ │ ├── WrapperLongAction.java │ │ │ │ │ │ ├── group/ │ │ │ │ │ │ │ ├── Create.java │ │ │ │ │ │ │ └── Update.java │ │ │ │ │ │ └── pojo/ │ │ │ │ │ │ ├── BeeApple.java │ │ │ │ │ │ ├── BirdValid.java │ │ │ │ │ │ ├── DogValid.java │ │ │ │ │ │ └── Snake.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── TestDataKit.java │ │ │ │ │ └── flow/ │ │ │ │ │ └── internal/ │ │ │ │ │ ├── StatActionInOutTest.java │ │ │ │ │ ├── ThreadMonitorInOutTest.java │ │ │ │ │ └── TimeRangeInOutTest.java │ │ │ │ ├── eventbus/ │ │ │ │ │ ├── CustomEvent.java │ │ │ │ │ ├── EventBusTest.java │ │ │ │ │ ├── MyMessage.java │ │ │ │ │ └── MyRecord.java │ │ │ │ ├── i18n/ │ │ │ │ │ └── BundleTest.java │ │ │ │ ├── protocol/ │ │ │ │ │ ├── ResponseMessageTest.java │ │ │ │ │ ├── Student.java │ │ │ │ │ └── wrapper/ │ │ │ │ │ └── WrapperKitTest.java │ │ │ │ └── toy/ │ │ │ │ └── ToyTableTest.java │ │ │ └── common/ │ │ │ └── kit/ │ │ │ └── ClassScannerTest.java │ │ └── resources/ │ │ └── logback.xml │ ├── common-kit/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── common/ │ │ └── kit/ │ │ ├── ProtoKit.java │ │ ├── asm/ │ │ │ ├── ClassRefInfo.java │ │ │ ├── ClassRefInfoBuilder.java │ │ │ ├── ClassRefInfoKit.java │ │ │ ├── FieldRefInfo.java │ │ │ ├── MethodRefInfo.java │ │ │ └── package-info.java │ │ ├── io/ │ │ │ ├── FileKit.java │ │ │ ├── ResourceKit.java │ │ │ └── package-info.java │ │ └── system/ │ │ ├── InternalSystemPropsKit.java │ │ ├── OsInfo.java │ │ └── package-info.java │ ├── common-micro-kit/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ ├── com/ │ │ │ │ └── iohao/ │ │ │ │ └── game/ │ │ │ │ └── common/ │ │ │ │ ├── consts/ │ │ │ │ │ ├── CommonConst.java │ │ │ │ │ └── IoGameLogName.java │ │ │ │ ├── internal/ │ │ │ │ │ ├── BootConfig.java │ │ │ │ │ ├── BootItemConfig.java │ │ │ │ │ └── BootItemConfigKit.java │ │ │ │ └── kit/ │ │ │ │ ├── AboutKit.java │ │ │ │ ├── ArrayKit.java │ │ │ │ ├── BaseTypeKit.java │ │ │ │ ├── ByteKit.java │ │ │ │ ├── ClassScanner.java │ │ │ │ ├── CollKit.java │ │ │ │ ├── CompletableFutureKit.java │ │ │ │ ├── ExecutorKit.java │ │ │ │ ├── HashKit.java │ │ │ │ ├── MoreKit.java │ │ │ │ ├── MurmurHash3.java │ │ │ │ ├── NetworkKit.java │ │ │ │ ├── OperationCode.java │ │ │ │ ├── PresentKit.java │ │ │ │ ├── RandomKit.java │ │ │ │ ├── RuntimeKit.java │ │ │ │ ├── SafeKit.java │ │ │ │ ├── StrKit.java │ │ │ │ ├── TimeBetweenKit.java │ │ │ │ ├── TimeFormatterKit.java │ │ │ │ ├── TimeKit.java │ │ │ │ ├── attr/ │ │ │ │ │ ├── AttrOption.java │ │ │ │ │ ├── AttrOptionDynamic.java │ │ │ │ │ ├── AttrOptions.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── beans/ │ │ │ │ │ └── property/ │ │ │ │ │ ├── AbstractPropertyValueObservable.java │ │ │ │ │ ├── BooleanProperty.java │ │ │ │ │ ├── IntegerProperty.java │ │ │ │ │ ├── LongProperty.java │ │ │ │ │ ├── NumberPropertyValueObservable.java │ │ │ │ │ ├── ObjectProperty.java │ │ │ │ │ ├── PropertyAbout.java │ │ │ │ │ ├── PropertyChangeListener.java │ │ │ │ │ ├── PropertyValueObservable.java │ │ │ │ │ ├── StringProperty.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── collect/ │ │ │ │ │ ├── ListMultiMap.java │ │ │ │ │ ├── MultiMap.java │ │ │ │ │ ├── NonBlockingListMultiMap.java │ │ │ │ │ ├── NonBlockingSetMultiMap.java │ │ │ │ │ ├── SetMultiMap.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── concurrent/ │ │ │ │ │ ├── CommonTaskListener.java │ │ │ │ │ ├── DaemonThreadFactory.java │ │ │ │ │ ├── FixedNameThreadFactory.java │ │ │ │ │ ├── IntervalTaskListener.java │ │ │ │ │ ├── OnceTaskListener.java │ │ │ │ │ ├── TaskKit.java │ │ │ │ │ ├── TaskListener.java │ │ │ │ │ ├── ThreadCreator.java │ │ │ │ │ ├── executor/ │ │ │ │ │ │ ├── AbstractThreadExecutorRegion.java │ │ │ │ │ │ ├── ExecutorRegion.java │ │ │ │ │ │ ├── ExecutorRegionKit.java │ │ │ │ │ │ ├── SimpleThreadExecutorRegion.java │ │ │ │ │ │ ├── ThreadExecutor.java │ │ │ │ │ │ ├── ThreadExecutorRegion.java │ │ │ │ │ │ ├── UserThreadExecutorRegion.java │ │ │ │ │ │ ├── UserVirtualThreadExecutorRegion.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── timer/ │ │ │ │ │ └── delay/ │ │ │ │ │ ├── DelayTask.java │ │ │ │ │ ├── DelayTaskKit.java │ │ │ │ │ ├── DelayTaskRegion.java │ │ │ │ │ ├── InternalDelayAbout.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── CommonIllegalArgumentException.java │ │ │ │ │ ├── CommonNullPointerException.java │ │ │ │ │ ├── CommonRuntimeException.java │ │ │ │ │ ├── ThrowKit.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── id/ │ │ │ │ │ ├── CacheKeyKit.java │ │ │ │ │ ├── IdKit.java │ │ │ │ │ ├── StringIdSupplier.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── micro/ │ │ │ │ │ └── room/ │ │ │ │ │ ├── MicroRoom.java │ │ │ │ │ ├── MicroRooms.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── time/ │ │ │ │ │ ├── CacheTimeKit.java │ │ │ │ │ ├── ConfigTimeKit.java │ │ │ │ │ ├── ExpireTimeKit.java │ │ │ │ │ ├── FormatTimeKit.java │ │ │ │ │ ├── ToTimeKit.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── trace/ │ │ │ │ │ ├── TraceIdSupplier.java │ │ │ │ │ ├── TraceKit.java │ │ │ │ │ └── package-info.java │ │ │ │ └── weight/ │ │ │ │ ├── Weight.java │ │ │ │ ├── WeightKit.java │ │ │ │ └── package-info.java │ │ │ └── module-info.java.txt │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── iohao/ │ │ │ └── game/ │ │ │ └── common/ │ │ │ └── kit/ │ │ │ ├── ByteKitTest.java │ │ │ ├── TimeKitTest.java │ │ │ ├── attr/ │ │ │ │ └── AttrOptionDynamicTest.java │ │ │ ├── beans/ │ │ │ │ └── property/ │ │ │ │ └── PropertyValueObservableTest.java │ │ │ ├── collect/ │ │ │ │ ├── ListMultiMapTest.java │ │ │ │ └── SetMultiMapTest.java │ │ │ ├── concurrent/ │ │ │ │ ├── TaskKitTest.java │ │ │ │ ├── executor/ │ │ │ │ │ └── ExecutorRegionKitTest.java │ │ │ │ └── timer/ │ │ │ │ └── delay/ │ │ │ │ └── DelayTaskTest.java │ │ │ ├── time/ │ │ │ │ ├── CacheTimeKitTest.java │ │ │ │ ├── ExpireTimeKitTest.java │ │ │ │ └── FormatTimeKitTest.java │ │ │ └── trace/ │ │ │ └── TraceKitTest.java │ │ └── resources/ │ │ └── logback.xml │ └── common-validation/ │ ├── README.md │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── common/ │ │ └── validation/ │ │ ├── Validation.java │ │ ├── Validator.java │ │ ├── annotation/ │ │ │ ├── EnableValidation.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── processor/ │ │ │ ├── ValidationProcessor.java │ │ │ └── package-info.java │ │ └── support/ │ │ ├── JakartaValidator.java │ │ ├── JavaxValidator.java │ │ └── package-info.java │ └── resources/ │ └── META-INF/ │ ├── gradle/ │ │ └── incremental.annotation.processors │ └── services/ │ └── javax.annotation.processing.Processor ├── doc_maven.txt ├── external/ │ ├── README.md │ ├── external-core/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── external/ │ │ └── core/ │ │ ├── ExternalCore.java │ │ ├── ExternalCoreSetting.java │ │ ├── ExternalServer.java │ │ ├── aware/ │ │ │ ├── ExternalCoreSettingAware.java │ │ │ ├── UserSessionsAware.java │ │ │ └── package-info.java │ │ ├── broker/ │ │ │ └── client/ │ │ │ ├── ExternalBrokerClientStartup.java │ │ │ ├── enhance/ │ │ │ │ ├── ExternalEnhance.java │ │ │ │ └── ExternalEnhances.java │ │ │ ├── ext/ │ │ │ │ ├── ExternalBizRegion.java │ │ │ │ ├── ExternalBizRegionContext.java │ │ │ │ ├── ExternalBizRegions.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── AttachmentExternalBizRegion.java │ │ │ │ │ ├── ExistUserExternalBizRegion.java │ │ │ │ │ ├── ExternalBizRegionKit.java │ │ │ │ │ ├── ForcedOfflineExternalBizRegion.java │ │ │ │ │ ├── UserHeadMetadataExternalBizRegion.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── processor/ │ │ │ ├── BroadcastMessageExternalProcessor.java │ │ │ ├── BroadcastOrderMessageExternalProcessor.java │ │ │ ├── BrokerClientOfflineMessageExternalProcessor.java │ │ │ ├── BrokerClientOnlineMessageExternalProcessor.java │ │ │ ├── EndPointLogicServerMessageExternalProcessor.java │ │ │ ├── RequestCollectExternalMessageExternalProcessor.java │ │ │ ├── ResponseMessageExternalProcessor.java │ │ │ ├── SettingUserIdMessageExternalProcessor.java │ │ │ ├── listener/ │ │ │ │ ├── CmdRegionBrokerClientListener.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── config/ │ │ │ ├── ExternalGlobalConfig.java │ │ │ ├── ExternalJoinEnum.java │ │ │ └── package-info.java │ │ ├── hook/ │ │ │ ├── AccessAuthenticationHook.java │ │ │ ├── BrokerClientExternalAttr.java │ │ │ ├── IdleHook.java │ │ │ ├── UserHook.java │ │ │ ├── cache/ │ │ │ │ ├── CmdCacheOption.java │ │ │ │ ├── ExternalCmdCache.java │ │ │ │ ├── ExternalCmdCacheSetting.java │ │ │ │ ├── InternalAboutCache.java │ │ │ │ ├── internal/ │ │ │ │ │ └── DefaultExternalCmdCache.java │ │ │ │ └── package-info.java │ │ │ ├── internal/ │ │ │ │ ├── DefaultAccessAuthenticationHook.java │ │ │ │ ├── DefaultUserHook.java │ │ │ │ ├── IdleProcessSetting.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── kit/ │ │ │ ├── ExternalKit.java │ │ │ └── package-info.java │ │ ├── message/ │ │ │ ├── DefaultExternalCodec.java │ │ │ ├── ExternalCodec.java │ │ │ ├── ExternalCodecKit.java │ │ │ ├── ExternalMessage.java │ │ │ ├── ExternalMessageCmdCode.java │ │ │ └── package-info.java │ │ ├── micro/ │ │ │ ├── MicroBootstrap.java │ │ │ ├── MicroBootstrapFlow.java │ │ │ ├── PipelineContext.java │ │ │ ├── join/ │ │ │ │ ├── ExternalJoinSelector.java │ │ │ │ ├── ExternalJoinSelectors.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── session/ │ │ ├── UserChannelId.java │ │ ├── UserSession.java │ │ ├── UserSessionOption.java │ │ ├── UserSessionState.java │ │ ├── UserSessions.java │ │ └── package-info.java │ └── external-netty/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── external/ │ │ └── core/ │ │ └── netty/ │ │ ├── DefaultExternalCore.java │ │ ├── DefaultExternalCoreSetting.java │ │ ├── DefaultExternalServer.java │ │ ├── DefaultExternalServerBuilder.java │ │ ├── SettingOption.java │ │ ├── handler/ │ │ │ ├── CmdCacheHandler.java │ │ │ ├── CmdCheckHandler.java │ │ │ ├── SimpleLoggerHandler.java │ │ │ ├── SocketCmdAccessAuthHandler.java │ │ │ ├── SocketIdleExcludeHandler.java │ │ │ ├── SocketIdleHandler.java │ │ │ ├── SocketRequestBrokerHandler.java │ │ │ ├── SocketUserSessionHandler.java │ │ │ ├── check/ │ │ │ │ ├── HttpFallbackHandler.java │ │ │ │ └── TcpProtocolSanityCheckHandler.java │ │ │ ├── codec/ │ │ │ │ ├── TcpExternalCodec.java │ │ │ │ └── WebSocketExternalCodec.java │ │ │ └── ws/ │ │ │ ├── HttpRealIpHandler.java │ │ │ └── WebSocketVerifyHandler.java │ │ ├── hook/ │ │ │ ├── DefaultSocketIdleHook.java │ │ │ └── SocketIdleHook.java │ │ ├── kit/ │ │ │ └── ExternalServerCreateKit.java │ │ ├── micro/ │ │ │ ├── AbstractMicroBootstrap.java │ │ │ ├── AbstractMicroBootstrapFlow.java │ │ │ ├── DefaultPipelineContext.java │ │ │ ├── SocketMicroBootstrap.java │ │ │ ├── SocketMicroBootstrapFlow.java │ │ │ ├── TcpMicroBootstrapFlow.java │ │ │ ├── WebSocketMicroBootstrapFlow.java │ │ │ ├── auto/ │ │ │ │ ├── EventLoopGroupThreadFactory.java │ │ │ │ ├── GroupChannelOption.java │ │ │ │ ├── GroupChannelOptionForLinux.java │ │ │ │ ├── GroupChannelOptionForMac.java │ │ │ │ └── GroupChannelOptionForOther.java │ │ │ └── join/ │ │ │ ├── SocketExternalJoinSelector.java │ │ │ ├── TcpExternalJoinSelector.java │ │ │ └── WebSocketExternalJoinSelector.java │ │ ├── package-info.java │ │ └── session/ │ │ ├── AbstractUserSession.java │ │ ├── AbstractUserSessions.java │ │ ├── SocketUserSession.java │ │ └── SocketUserSessions.java │ └── resources/ │ └── META-INF/ │ └── services/ │ └── com.iohao.game.external.core.micro.join.ExternalJoinSelector ├── history/ │ └── changeLog_ioGame17.md ├── net-bolt/ │ ├── README.md │ ├── bolt-broker-server/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── iohao/ │ │ │ └── game/ │ │ │ └── bolt/ │ │ │ └── broker/ │ │ │ ├── cluster/ │ │ │ │ ├── Broker.java │ │ │ │ ├── BrokerCluster.java │ │ │ │ ├── BrokerClusterManager.java │ │ │ │ ├── BrokerClusterManagerBuilder.java │ │ │ │ ├── BrokerClusterMessageHandler.java │ │ │ │ ├── BrokerClusterMetadata.java │ │ │ │ ├── BrokerRunModeEnum.java │ │ │ │ ├── ClusterMessageListener.java │ │ │ │ └── package-info.java │ │ │ └── server/ │ │ │ ├── BrokerServer.java │ │ │ ├── BrokerServerBuilder.java │ │ │ ├── aware/ │ │ │ │ ├── BrokerClientModulesAware.java │ │ │ │ └── BrokerServerAware.java │ │ │ ├── balanced/ │ │ │ │ ├── BalancedManager.java │ │ │ │ ├── BrokerClientLoadBalanced.java │ │ │ │ ├── ExternalBrokerClientLoadBalanced.java │ │ │ │ ├── LogicBrokerClientLoadBalanced.java │ │ │ │ └── region/ │ │ │ │ ├── BrokerClientProxy.java │ │ │ │ ├── BrokerClientRegion.java │ │ │ │ ├── BrokerClientRegionFactory.java │ │ │ │ ├── DefaultBrokerClientRegion.java │ │ │ │ ├── DefaultWithElementSelector.java │ │ │ │ ├── StrictBrokerClientRegion.java │ │ │ │ └── WithElementSelector.java │ │ │ ├── cluster/ │ │ │ │ └── ClusterMessageListenerImpl.java │ │ │ ├── enhance/ │ │ │ │ ├── BrokerEnhance.java │ │ │ │ └── BrokerEnhances.java │ │ │ ├── kit/ │ │ │ │ ├── BrokerPrintKit.java │ │ │ │ └── EndPointClientIdKit.java │ │ │ ├── processor/ │ │ │ │ ├── BroadcastMessageBrokerProcessor.java │ │ │ │ ├── BroadcastOrderMessageBrokerProcessor.java │ │ │ │ ├── BrokerClientItemConnectMessageBrokerProcessor.java │ │ │ │ ├── BrokerExternalKit.java │ │ │ │ ├── ConnectionCloseEventBrokerProcessor.java │ │ │ │ ├── ConnectionEventBrokerProcessor.java │ │ │ │ ├── ConnectionExceptionEventBrokerProcessor.java │ │ │ │ ├── ConnectionFailedEventBrokerProcessor.java │ │ │ │ ├── EndPointLogicServerMessageBrokerProcessor.java │ │ │ │ ├── EventBusMessageBrokerProcessor.java │ │ │ │ ├── InnerModuleMessageBrokerProcessor.java │ │ │ │ ├── InnerModuleRequestCollectExternalMessageBrokerProcessor.java │ │ │ │ ├── InnerModuleRequestCollectMessageBrokerProcessor.java │ │ │ │ ├── InnerModuleVoidMessageBrokerProcessor.java │ │ │ │ ├── LineKit.java │ │ │ │ ├── PulseSignalRequestBrokerProcessor.java │ │ │ │ ├── PulseSignalResponseBrokerProcessor.java │ │ │ │ ├── RegisterBrokerClientModuleMessageBrokerProcessor.java │ │ │ │ ├── RequestMessageBrokerProcessor.java │ │ │ │ ├── ResponseMessageBrokerProcessor.java │ │ │ │ └── SettingUserIdMessageBrokerProcessor.java │ │ │ └── service/ │ │ │ ├── BrokerClientModules.java │ │ │ └── DefaultBrokerClientModules.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── bolt/ │ │ └── broker/ │ │ ├── cluster/ │ │ │ ├── Gossip1Test.java │ │ │ └── Gossip2Test.java │ │ └── server/ │ │ └── BrokerServerStandaloneTest.java │ ├── bolt-client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── bolt/ │ │ └── broker/ │ │ └── client/ │ │ ├── AbstractBrokerClientStartup.java │ │ ├── BrokerClientApplication.java │ │ ├── BrokerClientStartup.java │ │ ├── RemoteAddress.java │ │ ├── package-info.java │ │ └── processor/ │ │ ├── BoltChannelContext.java │ │ ├── BrokerClientLineKit.java │ │ ├── BrokerClientOfflineMessageLogicProcessor.java │ │ ├── BrokerClientOnlineMessageLogicProcessor.java │ │ ├── BrokerClusterMessageClientProcessor.java │ │ ├── EventBusMessageClientProcessor.java │ │ ├── RequestBrokerClientModuleMessageClientProcessor.java │ │ ├── RequestMessageClientProcessor.java │ │ ├── connection/ │ │ │ ├── CloseConnectEventClientProcessor.java │ │ │ ├── ConnectEventClientProcessor.java │ │ │ ├── ConnectFailedEventClientProcessor.java │ │ │ ├── ExceptionConnectEventClientProcessor.java │ │ │ └── package-info.java │ │ └── package-info.java │ └── bolt-core/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ ├── alipay/ │ │ └── sofa/ │ │ └── common/ │ │ └── log/ │ │ └── factory/ │ │ └── LoggerSpaceFactory4LogbackBuilder.java │ └── iohao/ │ └── game/ │ ├── bolt/ │ │ └── broker/ │ │ ├── client/ │ │ │ └── kit/ │ │ │ ├── ExternalCommunicationKit.java │ │ │ ├── UserIdSettingKit.java │ │ │ └── package-info.java │ │ └── core/ │ │ ├── BoltConnection.java │ │ ├── GroupWith.java │ │ ├── aware/ │ │ │ ├── AwareInject.java │ │ │ ├── AwareKit.java │ │ │ ├── BrokerClientAware.java │ │ │ ├── BrokerClientItemAware.java │ │ │ ├── CmdRegionsAware.java │ │ │ ├── PulseConsumerAware.java │ │ │ ├── PulseProducerAware.java │ │ │ ├── UserProcessorExecutorAware.java │ │ │ ├── UserProcessorExecutorSelectorAware.java │ │ │ └── UserProcessorInNettyThreadAware.java │ │ ├── client/ │ │ │ ├── Broadcast.java │ │ │ ├── BroadcastDebug.java │ │ │ ├── BrokerAddress.java │ │ │ ├── BrokerClient.java │ │ │ ├── BrokerClientAttr.java │ │ │ ├── BrokerClientBuilder.java │ │ │ ├── BrokerClientHelper.java │ │ │ ├── BrokerClientItem.java │ │ │ ├── BrokerClientManager.java │ │ │ ├── BrokerClientType.java │ │ │ ├── BrokerClients.java │ │ │ ├── DefaultProcessorContext.java │ │ │ ├── EventBusBrokerClientListener.java │ │ │ └── config/ │ │ │ └── BrokerClientStatusConfig.java │ │ ├── common/ │ │ │ ├── AbstractAsyncUserProcessor.java │ │ │ ├── DefaultUserProcessorExecutorSelectorStrategy.java │ │ │ ├── DefaultUserProcessorExecutorStrategy.java │ │ │ ├── IoGameGlobalConfig.java │ │ │ ├── ProcessorSelectorThreadExecutorRegion.java │ │ │ ├── UserProcessorExecutorSelectorStrategy.java │ │ │ ├── UserProcessorExecutorStrategy.java │ │ │ ├── VirtualThreadUserProcessorExecutorStrategy.java │ │ │ └── processor/ │ │ │ ├── hook/ │ │ │ │ ├── ClientProcessorHooks.java │ │ │ │ ├── DefaultRequestMessageClientProcessorHook.java │ │ │ │ └── RequestMessageClientProcessorHook.java │ │ │ ├── listener/ │ │ │ │ ├── BrokerClientListener.java │ │ │ │ ├── BrokerClientListenerRegion.java │ │ │ │ ├── ConnectionBeforeListener.java │ │ │ │ ├── LineListener.java │ │ │ │ └── SimplePrintBrokerClientListener.java │ │ │ └── pulse/ │ │ │ ├── PulseSignalRequestUserProcessor.java │ │ │ └── PulseSignalResponseUserProcessor.java │ │ ├── kit/ │ │ │ └── HessianKit.java │ │ ├── loadbalance/ │ │ │ ├── ElementSelector.java │ │ │ ├── ElementSelectorFactory.java │ │ │ ├── RandomElementSelector.java │ │ │ └── RingElementSelector.java │ │ └── message/ │ │ ├── BroadcastMessage.java │ │ ├── BroadcastOrderMessage.java │ │ ├── BrokerClientItemConnectMessage.java │ │ ├── BrokerClientModuleMessage.java │ │ ├── BrokerClientOfflineMessage.java │ │ ├── BrokerClientOnlineMessage.java │ │ ├── BrokerClusterMessage.java │ │ ├── BrokerMessage.java │ │ ├── InnerModuleMessage.java │ │ ├── InnerModuleVoidMessage.java │ │ └── RequestBrokerClientModuleMessage.java │ └── core/ │ └── common/ │ ├── NetCommonKit.java │ ├── client/ │ │ ├── Attachment.java │ │ └── ExternalBizCodeCont.java │ └── cmd/ │ ├── BrokerClientId.java │ ├── CmdRegion.java │ ├── CmdRegions.java │ ├── DefaultCmdRegion.java │ └── DefaultCmdRegions.java ├── pom.xml ├── run-one/ │ └── run-one-netty/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── iohao/ │ └── game/ │ └── external/ │ └── core/ │ └── netty/ │ └── simple/ │ ├── InternalRunOne.java │ ├── NettyClusterSimpleHelper.java │ ├── NettyClusterSimpleRunOne.java │ ├── NettyRunOne.java │ └── NettySimpleHelper.java └── widget/ ├── generate-code/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── action/ │ │ └── skeleton/ │ │ └── core/ │ │ └── doc/ │ │ ├── CsharpDocumentGenerate.java │ │ ├── DocumentGenerateAbout.java │ │ ├── GDScriptDocumentGenerate.java │ │ └── TypeScriptDocumentGenerate.java │ └── resources/ │ └── generate/ │ ├── csharp/ │ │ ├── action.txt │ │ ├── action_method.txt │ │ ├── action_method_no_param.txt │ │ ├── action_method_result_example.txt │ │ ├── action_method_void.txt │ │ ├── action_method_void_no_param.txt │ │ ├── broadcast_action.txt │ │ ├── broadcast_action_example.txt │ │ ├── broadcast_action_example_action.txt │ │ └── game_code.txt │ ├── gdscript/ │ │ ├── action.txt │ │ ├── action_method.txt │ │ ├── action_method_no_param.txt │ │ ├── action_method_result_example.txt │ │ ├── action_method_void.txt │ │ ├── action_method_void_no_param.txt │ │ ├── broadcast_action.txt │ │ ├── broadcast_action_example.txt │ │ ├── broadcast_action_example_action.txt │ │ └── game_code.txt │ └── ts/ │ ├── action.txt │ ├── action_method.txt │ ├── action_method_no_param.txt │ ├── action_method_result_example.txt │ ├── action_method_void.txt │ ├── action_method_void_no_param.txt │ ├── broadcast_action.txt │ ├── broadcast_action_example.txt │ ├── broadcast_action_example_action.txt │ └── game_code.txt ├── light-client/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── iohao/ │ └── game/ │ └── external/ │ └── client/ │ ├── AbstractInputCommandRegion.java │ ├── ClientConnectOption.java │ ├── InputCommandCreate.java │ ├── InputCommandRegion.java │ ├── command/ │ │ ├── CallbackDelegate.java │ │ ├── CommandResult.java │ │ ├── InputCommand.java │ │ ├── ListenCommand.java │ │ ├── RequestCommand.java │ │ └── RequestDataDelegate.java │ ├── join/ │ │ ├── ClientConnect.java │ │ ├── ClientConnects.java │ │ ├── ClientRunOne.java │ │ ├── ClientTcpExternalCodec.java │ │ ├── TcpClientStartup.java │ │ ├── WebSocketClientStartup.java │ │ └── handler/ │ │ └── ClientMessageHandler.java │ ├── kit/ │ │ ├── AssertKit.java │ │ ├── ClientKit.java │ │ ├── ClientUserConfigs.java │ │ ├── ScannerKit.java │ │ └── SplitParam.java │ ├── package-info.java │ └── user/ │ ├── ClientChannelRead.java │ ├── ClientUser.java │ ├── ClientUserChannel.java │ ├── ClientUserInputCommands.java │ ├── ClientUsers.java │ ├── DefaultClientUser.java │ └── InternalAboutClient.java ├── light-domain-event/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── widget/ │ │ └── light/ │ │ └── domain/ │ │ └── event/ │ │ ├── DisruptorManager.java │ │ ├── DomainEventContext.java │ │ ├── DomainEventContextParam.java │ │ ├── DomainEventPublish.java │ │ ├── annotation/ │ │ │ └── DomainEvent.java │ │ ├── disruptor/ │ │ │ ├── ConsumeEventHandler.java │ │ │ ├── DefaultDisruptorCreate.java │ │ │ ├── DisruptorCreate.java │ │ │ ├── DomainEventSource.java │ │ │ ├── EventDisruptor.java │ │ │ └── package-info.java │ │ ├── exception/ │ │ │ ├── DefaultDomainEventExceptionHandler.java │ │ │ └── package-info.java │ │ ├── message/ │ │ │ ├── DomainEventHandler.java │ │ │ ├── Eo.java │ │ │ ├── Topic.java │ │ │ └── package-info.java │ │ └── package-info.java │ └── test/ │ └── java/ │ └── com/ │ └── iohao/ │ └── game/ │ └── widget/ │ └── light/ │ └── domain/ │ └── event/ │ ├── StudentDomainEventTest.java │ ├── StudentDomainEventTest2.java │ ├── UserLoginDomainEventTest.java │ ├── student/ │ │ ├── StudentCountEventHandler.java │ │ ├── StudentEmailEventHandler1.java │ │ ├── StudentEo.java │ │ ├── StudentGoHomeEventHandler2.java │ │ ├── StudentSleepEventHandler3.java │ │ └── package-info.java │ └── user/ │ ├── UserLogin.java │ ├── UserLoginEmailEventHandler.java │ └── package-info.java ├── light-game-room/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── iohao/ │ └── game/ │ └── widget/ │ └── light/ │ └── room/ │ ├── GameRoomService.java │ ├── Player.java │ ├── Room.java │ ├── RoomBroadcastEnhance.java │ ├── RoomKit.java │ ├── RoomService.java │ ├── RoomStatusEnum.java │ ├── SimplePlayer.java │ ├── SimpleRoom.java │ ├── SimpleRoomService.java │ ├── domain/ │ │ ├── GameFlowEo.java │ │ ├── GameFlowEventHandler.java │ │ ├── OperationContextEventHandler.java │ │ └── package-info.java │ ├── flow/ │ │ ├── GameFixedService.java │ │ ├── GameFlowContext.java │ │ ├── GameFlowService.java │ │ ├── GameStartService.java │ │ ├── PlayerCreator.java │ │ ├── RoomCreateContext.java │ │ ├── RoomCreator.java │ │ ├── SimpleGameFlowContext.java │ │ ├── SimpleRoomCreateContext.java │ │ └── package-info.java │ ├── operation/ │ │ ├── OperationContext.java │ │ ├── OperationFactory.java │ │ ├── OperationHandler.java │ │ ├── OperationService.java │ │ ├── PlayerOperationContext.java │ │ ├── SimpleOperationFactory.java │ │ ├── SimpleOperationHandler.java │ │ └── package-info.java │ └── package-info.java ├── light-jprotobuf/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── widget/ │ │ └── light/ │ │ └── protobuf/ │ │ ├── FieldNameGenerate.java │ │ ├── ProtoFieldTypeHolder.java │ │ ├── ProtoFileMerge.java │ │ ├── ProtoFileValue.java │ │ ├── ProtoGenerateFile.java │ │ ├── ProtoGenerateSetting.java │ │ ├── ProtoJava.java │ │ ├── ProtoJavaAnalyse.java │ │ ├── ProtoJavaField.java │ │ ├── ProtoJavaRegion.java │ │ ├── ProtoJavaRegionKey.java │ │ └── kit/ │ │ └── GenerateFileKit.java │ └── test/ │ └── java/ │ └── com/ │ └── iohao/ │ └── game/ │ └── widget/ │ └── light/ │ └── protobuf/ │ ├── ProtoJavaTest.java │ └── data/ │ ├── AnimalTypeEnum.java │ ├── Cat.java │ ├── Food.java │ ├── ProtoTeacher.java │ ├── TempProtoFile.java │ ├── TestEnum.java │ └── Tiger.java ├── light-profile/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── widget/ │ │ └── light/ │ │ └── profile/ │ │ ├── Profile.java │ │ ├── ProfileManager.java │ │ ├── ResourcePatternResolverProfile.java │ │ └── package-info.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── iohao/ │ │ └── game/ │ │ └── widget/ │ │ └── light/ │ │ └── profile/ │ │ ├── ProfileManagerTest.java │ │ └── ResourcePatternResolverProfileTest.java │ └── resources/ │ └── conf/ │ ├── common/ │ │ ├── db.props │ │ └── other.props │ ├── local/ │ │ └── db.props │ └── production/ │ ├── db.props │ └── other.props └── other-tool/ ├── README.md ├── pom.xml └── src/ └── main/ └── java/ ├── com/ │ └── iohao/ │ └── game/ │ └── common/ │ └── kit/ │ └── adapter/ │ ├── AdapterHuUtils.java │ ├── HuArrayUtil.java │ ├── HuAssert.java │ ├── HuBase16Codec.java │ ├── HuCharFinder.java │ ├── HuCharUtil.java │ ├── HuCharsetUtil.java │ ├── HuClassLoaderUtil.java │ ├── HuClassPathResource.java │ ├── HuClassUtil.java │ ├── HuComputeIter.java │ ├── HuCopyVisitor.java │ ├── HuExceptionUtil.java │ ├── HuFastByteArrayOutputStream.java │ ├── HuFastByteBuffer.java │ ├── HuFileResource.java │ ├── HuFileUtil.java │ ├── HuFileWriter.java │ ├── HuFilter.java │ ├── HuFinder.java │ ├── HuHexUtil.java │ ├── HuIoCopier.java │ ├── HuIoRuntimeException.java │ ├── HuIoUtil.java │ ├── HuNoResourceException.java │ ├── HuObjectUtil.java │ ├── HuPathUtil.java │ ├── HuPercentCodec.java │ ├── HuResource.java │ ├── HuResourceUtil.java │ ├── HuRfc3986.java │ ├── HuSplitIter.java │ ├── HuStrFinder.java │ ├── HuStrFormatter.java │ ├── HuStrUtil.java │ ├── HuStreamCopier.java │ ├── HuTextFinder.java │ ├── HuUrlResource.java │ ├── HuUrlUtil.java │ ├── HuUtilException.java │ └── package-info.java └── module-info.java.txt