diff --git a/README.md b/README.md index c7c8758..8fae3a4 100644 --- a/README.md +++ b/README.md @@ -11,77 +11,6 @@ Communication JSON RPC protocol and implementation with Unity Scene. See [API.md](API.md) for detailed request/response formats. -## Comm model - -```plantuml -@startuml -box ClientProcess #LightBlue -Participant Caller -Participant CloudPointClient -Participant TCPClient -end box -box UnityProcess #LightGreen -Participant TCPServer -Participant CloudPointServer -Participant UnityWorld -end box -UnityWorld -> CloudPointServer : init thread -activate CloudPointServer -CloudPointServer -> TCPServer : await for connection -activate TCPServer -->CloudPointClient : init thread -activate CloudPointClient -CloudPointClient -> TCPClient : createConnection -TCPClient -> TCPServer : establish connection -TCPServer -> CloudPointServer : established -deactivate TCPServer -CloudPointServer -> TCPServer : await for calls - -TCPServer -> TCPServer : await for packet -Caller -> CloudPointClient : I want something -activate CloudPointClient -CloudPointClient -> CloudPointClient : CallMethod -CloudPointClient -> TCPClient : send(message) -activate TCPClient -TCPClient -> TCPServer : packet send -TCPServer -> TCPServer : await for packet -activate TCPServer -TCPServer -> TCPServer : read packet -TCPServer -> TCPClient : packet read -TCPClient -> CloudPointClient : done -deactivate TCPClient -CloudPointClient -> TCPClient : await for response -activate TCPClient -TCPClient -> TCPClient : await for packet -TCPServer -> CloudPointServer : callMethod -activate CloudPointServer -CloudPointServer -> UnityWorld : addToStaticQueue - -UnityWorld -> UnityWorld : read from queue -activate UnityWorld -UnityWorld -> UnityWorld : callMethod -UnityWorld -> CloudPointServer: set task return value -deactivate UnityWorld -CloudPointServer -> TCPServer : return task -deactivate CloudPointServer -TCPServer -> TCPClient : send response -TCPClient -> TCPServer : response read -TCPClient -> CloudPointClient : response received -TCPServer -> CloudPointServer : done -deactivate TCPServer -CloudPointClient -> Caller : here what you wanted -deactivate CloudPointClient - -Caller -> CloudPointClient : destruct -CloudPointClient -> TCPClient : finish waiting -deactivate TCPClient -deactivate CloudPointClient -UnityWorld -> CloudPointServer : destruct -deactivate CloudPointServer - -@enduml -``` - ## Development The project uses **Meson** build system and **C++20**. @@ -150,3 +79,7 @@ You also can mount your own `config.yaml` to override the default settings: ```bash docker run --network=host -it -v $(pwd)/my_config.yaml:/app/config.yaml cloud-point-rpc ``` + +## Communication model + +![Communicatoin model plantuml diagram](docs/cm.png) diff --git a/docs/cm.png b/docs/cm.png new file mode 100644 index 0000000..ff89b14 Binary files /dev/null and b/docs/cm.png differ diff --git a/docs/communication_model.pu b/docs/communication_model.pu new file mode 100644 index 0000000..72c879f --- /dev/null +++ b/docs/communication_model.pu @@ -0,0 +1,66 @@ +@startuml comm +box ClientProcess #LightBlue +Participant Caller +Participant CloudPointClient +Participant TCPClient +end box +box UnityProcess #LightGreen +Participant TCPServer +Participant CloudPointServer +Participant UnityWorld +end box +UnityWorld -> CloudPointServer : init thread +activate CloudPointServer +CloudPointServer -> TCPServer : await for connection +activate TCPServer +->CloudPointClient : init thread +activate CloudPointClient +CloudPointClient -> TCPClient : createConnection +TCPClient -> TCPServer : establish connection +TCPServer -> CloudPointServer : established +deactivate TCPServer +CloudPointServer -> TCPServer : await for calls + +TCPServer -> TCPServer : await for packet +Caller -> CloudPointClient : I want something +activate CloudPointClient +CloudPointClient -> CloudPointClient : CallMethod +CloudPointClient -> TCPClient : send(message) +activate TCPClient +TCPClient -> TCPServer : packet send +TCPServer -> TCPServer : await for packet +activate TCPServer +TCPServer -> TCPServer : read packet +TCPServer -> TCPClient : packet read +TCPClient -> CloudPointClient : done +deactivate TCPClient +CloudPointClient -> TCPClient : await for response +activate TCPClient +TCPClient -> TCPClient : await for packet +TCPServer -> CloudPointServer : callMethod +activate CloudPointServer +CloudPointServer -> UnityWorld : addToStaticQueue + +UnityWorld -> UnityWorld : read from queue +activate UnityWorld +UnityWorld -> UnityWorld : callMethod +UnityWorld -> CloudPointServer: set task return value +deactivate UnityWorld +CloudPointServer -> TCPServer : return task +deactivate CloudPointServer +TCPServer -> TCPClient : send response +TCPClient -> TCPServer : response read +TCPClient -> CloudPointClient : response received +TCPServer -> CloudPointServer : done +deactivate TCPServer +CloudPointClient -> Caller : here what you wanted +deactivate CloudPointClient + +Caller -> CloudPointClient : destruct +CloudPointClient -> TCPClient : finish waiting +deactivate TCPClient +deactivate CloudPointClient +UnityWorld -> CloudPointServer : destruct +deactivate CloudPointServer + +@enduml