aboutsummaryrefslogtreecommitdiffstats
path: root/sample/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'sample/README.md')
-rwxr-xr-xsample/README.md98
1 files changed, 98 insertions, 0 deletions
diff --git a/sample/README.md b/sample/README.md
new file mode 100755
index 0000000..8edaddd
--- /dev/null
+++ b/sample/README.md
@@ -0,0 +1,98 @@
+# Test cloud applications #
+
+## Description
+
+The test-cloud-app and telemetry-cloud-app are examples of an agl-cloudproxy-service client.
+They are used to demonstrate the possibilities of the cloudproxy service.
+
+## Applications
+
+* test-cloud-app: Simple application demonstrating the following possibilities:
+ * Sending the messages to cloud over cloud proxy server
+ * Receiving confirmations from cloud on the sent messages
+ * Receiving messages from cloud
+
+
+* telemetry-cloud-app: Application which sends the GPS coordinates to the cloud
+ * Sending of the messages with telemetry to the cloud
+ * Receiving of the messages from the cloud
+
+Applications use CloudProxy client as high level interface for the messages sending and receiving
+
+ qDebug("Received data: %s", data_str);
+ });
+ ```
+
+
+* Message sending:
+
+
+```
+qDebug() << "sendMessage result: " << g_cloudproxyclient->sendMessage("{\"app_key\": \"app_value1111\"}");
+``` \ No newline at end of file
ons to the services that it needs. It provides a fast way to securely offer APIs to applications written in any language and running almost anywhere. - The ***binder*** is developed for AGL. - The ***binder*** is the usual name. - The binary is named **afb-daemon**. - The name **afb-daemon** stands for ***Application Framework Binder Daemon***. The word *daemon*, here, denote the fact that the ***binder*** makes witchcraft to connect applications to their expected services. (note: that usually the term of daemon denotes background process but not here). Each ***binder*** **afb-daemon** is in charge to bind one instance of an application or service to the rest of the system, applications and services. Within AGL, the connection between services and/or applications is tuned by the AGL framework and the AGL system. ## The basis of the binder The following figure shows main concepts linked to the ***binder***. <a id="fig-binder-basis"></a> ![Figure: binder basis](pictures/basis.svg) The shown elements are: - The SECURITY CONTEXT The primary intend of any ***binder*** is to provide a secured environment for any application. On AGL, the **security context** is ensured by [Smack] , the security context of the application or service. - The BINDER This is the central element. It makes possible to run HTML5 applications and provides the unified access to APIs provided by the ***bindings***. Running a pure HTML5 application doesn't require any ***binding***. In that case , the ***binder*** acts as a simple HTTP server for the web runtime. - The BINDINGs A ***binding*** adds one **API** to the ***binder***. An **API** is a set of **verbs** that can be called using either REST over HTTP or a kind of JSON RPC. ***bindings*** are either: - dynamically loaded libraries in the ***binder*** process - remote service running on the same host - remote service running on other hosts When acting as an HTTP server, the binder treats the language settings of the HTTP requests to provide internationalized content as specified by [widget specifications](https://www.w3.org/TR/widgets/#internationalization-and-localization). - The APPLICATION An ***application*** connects to the binder to get access to the **API** that it provides or to get its HTTP services to access resources. <!-- pagebreak --> ## Interconnection of binders The AGL framework interprets the **widget/application** manifests to setup the ***bindings*** configuration of the ***binders***. The figure below shows that ***binders*** are interconnected. <a id="fig-binder-interconnection"></a> ![Figure: binder interconnection](pictures/interconnection.svg) The figure shows 4 several **application/service**: **A**, **B**, **C** and **D**. The application **A** might use an **API** that is shown as a local ***binding*** but that in reality runs within the context of **D**. The framework AGL takes care of making the plumbing working.