This PR contains the first version of gateway allowing:
Synchronous communication between clients and a single service (Vision)
Asynchronous communication between frontend and backend
Partial third parties communication
In general, the components can be divided into three controllers as thread that handle each communication:
It also adds the first version of service_domain.json file containing the service names and parameters needed until now, with a service_discovery implementation using singleton design pattern provided by singleton.h.
To allow third parties communication, it adds a poller implementation aiming to check events in different sockets. However the version here provided only uses one external component, (vision third party). Concerns related to this are issued in #87.
Some restrictions are applied:
For synchronous communication, the client must use ZeroMQ REQ socket connect with "Gateway.Router" and the service (Vision) must use ZeroMQ DEALER socket connected with "Gateway.Sync.Requests", since it's based on a proxy pattern (see experiments)
For asynchronous communication, the client must use a ZeroMQ SUB socket connected with "Gateway.Live" and the service must use a ZeroMQ PUB socket binded to "Vision".
For third parties communication, the service must use a ZeroMQ SUB socket connected with "Gateway.Third.Parties".
Notice, this is only a preliminary approach to release further development of frontend and backend services without blocking the communication between them. The final version will study a better approach to synchronous communication (see #80).
Due the current priority, other improvements will be added with the final version:
This PR contains the first version of gateway allowing:
In general, the components can be divided into three controllers as thread that handle each communication:
It also adds the first version of
service_domain.json
file containing the service names and parameters needed until now, with aservice_discovery
implementation using singleton design pattern provided bysingleton.h
.To allow third parties communication, it adds a
poller
implementation aiming to check events in different sockets. However the version here provided only uses one external component, (vision third party). Concerns related to this are issued in #87.Some restrictions are applied:
Notice, this is only a preliminary approach to release further development of frontend and backend services without blocking the communication between them. The final version will study a better approach to synchronous communication (see #80).
Due the current priority, other improvements will be added with the final version:
81
86
88