2020-12-26 19:36:09 +00:00
|
|
|
<mxfile host="65bd71144e" modified="2020-12-26T07:51:18.537Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36" etag="Iqq-QtiSg1pcXFCyEV9I" version="13.10.0" type="embed">
|
2020-12-24 22:33:17 +00:00
|
|
|
<diagram id="LHR7ubqCPd17_LyHkaH9" name="Structure">
|
2020-12-26 19:36:09 +00:00
|
|
|
<mxGraphModel dx="850" dy="740" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
2020-12-24 22:33:17 +00:00
|
|
|
<root>
|
|
|
|
<mxCell id="0"/>
|
|
|
|
<mxCell id="1" parent="0"/>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-5" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;jumpStyle=none;dashed=1;endArrow=block;endFill=0;exitX=1;exitY=0;exitDx=0;exitDy=0;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-1" target="v9q6W0nyI9kZyF3peKlB-4" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-26 19:36:09 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-1" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ServiceInfo (entity)</th></tr><tr><td align="center">- serviceName: string<br>- controlLock: object<br>- state: ServiceState<br>- service: IGameService<br>- serviceConsoleStream: Stream<br>- moduleName: string<br>- assemblyName: string<br>- Dictionary&lt;string, IConfigurable&gt;<br>- disposed: bool</td></tr><tr><td align="center">+ Start(): void<br>+ Stop(): void<br>+ GetConfigurableOptions(): ISet&lt;string&gt;<br>+ SetConfigurableValue(configurationName: string, value: string): bool<br>+ GetConfigurableValue(configurationName: string): string<br>+ GetServiceState(): ServiceState<br>+ getModuleName(): string<br>+ GetassemblyName(): string<br>+ SetServiceName(name: string): void // Implemented as property<br>+ GetServiceName(): string // Implemented as property<br>+ GetServiceConsoleStream(): Stream // Implemented as property<br>- OnServiceStateChange(curr: ServiceState,&nbsp;prev: ServiceState): void<br># Dispose(disposing: bool): void<br>+ Dispose(): void<br></td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry x="950" y="950" width="400" height="410" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontStyle=1;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-2" target="v9q6W0nyI9kZyF3peKlB-1" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-26 19:36:09 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-2" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ServiceManager (Use-case)</th></tr><tr><td align="center">- services: Dictionary&lt;string, Service&gt;<br>- modules: Dictionary&lt;string, Dictionary&lt;string, IGameServiceModule&gt;&gt;</td></tr><tr><td align="center">+ AddModule(assemblyName: string, module: IGameServiceModule): void<br>+ RemoveModule(assemblyName: string, moduleName string): void<br>+ CreateService(serviceName: string, assemblyName: string, moduleName: string): void<br>+ GetServiceNames(): IReadOnlyCollection&lt;string&gt;<br>+ GetServiceOptionsValue(serviceName: string): IEnumerable&lt;string&gt;<br>+ SetServiceOptionValue(serviceName: string, optionName: string, string: value): bool<br>+ GetServiceState(serviceName: string): ServiceState<br>+ StartService(serviceName: string): void<br>+ StopService(serviceName: string): void<br>+ ExecuteCommand(serviceName: string, command: string): void<br>+ GetServiceConsoleStream(): Stream</td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
|
|
|
<mxGeometry x="640" y="570" width="490" height="290" as="geometry"/>
|
2020-12-24 22:33:17 +00:00
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-4" value="IDisposable" style="shape=ext;double=1;whiteSpace=wrap;html=1;sketch=1;" parent="1" vertex="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry x="1410" y="820" width="120" height="80" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-13" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ModuleLoader (Gateway)</th></tr><tr><td align="center"></td></tr><tr><td align="center">- InstantiateServiceables(assembly: Assembly): void<br>- LoadAssembly(path: string): void<br>+ LoadModules(path: string): IEnumerable&lt;IGameServiceModule&gt;<br>+ LoadAllModules(path: string[]): IEnumerable&lt;IGameServiceModule&gt;<br>+ LoadAllModules(path: IEnumerable&lt;string&gt;): IEnumerable&lt;IGameServiceModule&gt;<br></td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-26 19:36:09 +00:00
|
|
|
<mxGeometry x="90" y="280" width="490" height="250" as="geometry"/>
|
2020-12-24 22:33:17 +00:00
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="titdvn9p0HDrujjw1N2D-4" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;endArrow=block;endFill=0;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-16" target="v9q6W0nyI9kZyF3peKlB-27" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="2" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-16" target="v9q6W0nyI9kZyF3peKlB-2" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="3" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-16" target="v9q6W0nyI9kZyF3peKlB-13" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="4" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;sketch=1;curved=1;" parent="1" source="v9q6W0nyI9kZyF3peKlB-16" target="v9q6W0nyI9kZyF3peKlB-23" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-16" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ServiceController (Controller)</th></tr><tr><td align="center">- moduleLoader: ModuleLoader<br>- serviceManager: serviceManager</td></tr><tr><td align="center">+ LoadModulesInDirectory(directory: string): void<br>+ SaveServices(serviceDataDir: string): void<br>+ LoadServices(serviceDataDir: string): void</td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry x="640" y="280" width="432.5" height="250" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-23" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ServiceGateway (Gateway)</th></tr><tr><td align="center">- dataDirectory: string</td></tr><tr><td align="center">+ SaveService(name: string, assemblyName: string, moduleName: string): void<br>+ GetServiceName(path: string): string<br>+ GetServiceModuleName(path: string): string<br>+ GetAllServiceInfoPaths() IEnumerable&lt;string&gt;</td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-26 19:36:09 +00:00
|
|
|
<mxGeometry x="90" y="545" width="490" height="230" as="geometry"/>
|
2020-12-24 22:33:17 +00:00
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="v9q6W0nyI9kZyF3peKlB-27" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">ICommandable &lt;I&gt;</th></tr><tr><td align="center"></td></tr><tr><td align="center">+ GetPrefix(): string<br>+ Validate(string input): bool<br>+ Execute(string input): void<br>+ Help(): string</td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry x="900" y="50" width="250" height="170" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="titdvn9p0HDrujjw1N2D-5" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;dashed=1;endArrow=block;endFill=0;sketch=1;curved=1;" parent="1" source="titdvn9p0HDrujjw1N2D-1" target="v9q6W0nyI9kZyF3peKlB-27" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="HWr5KmjBEDiam6OlhXxB-2" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;endArrow=open;endFill=0;sketch=1;curved=1;" parent="1" source="titdvn9p0HDrujjw1N2D-1" target="v9q6W0nyI9kZyF3peKlB-27" edge="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
|
|
</mxCell>
|
2020-12-24 23:21:05 +00:00
|
|
|
<mxCell id="titdvn9p0HDrujjw1N2D-1" value="<table border="1" width="100%" cellpadding="4" style="width: 100% ; height: 100% ; border-collapse: collapse"><tbody><tr><th align="center">CommandFork (Controller)</th></tr><tr><td align="center">- commands: Dictionary&lt;string, ICommandable&gt;</td></tr><tr><td align="center"><br></td></tr></tbody></table>" style="text;html=1;fillColor=none;overflow=fill;strokeColor=#f0f0f0;sketch=1;" parent="1" vertex="1">
|
2020-12-24 22:33:17 +00:00
|
|
|
<mxGeometry x="1120" y="280" width="280" height="140" as="geometry"/>
|
|
|
|
</mxCell>
|
|
|
|
</root>
|
|
|
|
</mxGraphModel>
|
|
|
|
</diagram>
|
|
|
|
</mxfile>
|