#+title: pCloudCC Request-Response Flow ~pcloudcc~ is built upon a client-server architecture. When the user runs ~pcloudcc -u ~, this starts the server. The server listens for request messages and sends back response messages. When the user runs ~pcloudcc -k~, this starts the client's command line interface. The client sends request messages to and expects a corresponding response message from the server. The client and server send and receive messages over a Unix socket that gets created when the server is started. #+begin_src plantuml :file img/request-response-00.png :export results participant user participant control_tools <> participant overlay_client <> participant socket <> participant poverlay <> user -> control_tools: input command control_tools -> control_tools : parse command control_tools -> overlay_client : SendCall(msgType, reqData, ...) overlay_client -> socket : write_request socket -> poverlay : request poverlay -> poverlay : poverlay_handle_request poverlay -> poverlay : poverlay_get_response poverlay -> socket : response socket -> overlay_client : read_response overlay_client -> control_tools : (msg, msgsz, payload, payloadsz) control_tools -> user : print results #+end_src [[file:img/request-response-00.png]]