add algorithm to seek for locale files
[src/app-framework-binder.git] / doc / afb-application-writing.md
index ee58347..14199f6 100644 (file)
@@ -1,10 +1,6 @@
+
 HOWTO WRITE an APPLICATION above AGL FRAMEWORK
 ==============================================
 HOWTO WRITE an APPLICATION above AGL FRAMEWORK
 ==============================================
-    version: 1
-    Date:    30 mai 2016
-    Author:  José Bollo
-
-TABLE-OF-CONTENT-HERE
 
 Programmation Languages for Applications
 -----------------------------------------
 
 Programmation Languages for Applications
 -----------------------------------------
@@ -23,9 +19,9 @@ In a near future, JSON-RPC protocol should be added to complete current x-afb-js
 
 Two examples of HTML5 applications are given:
 
 
 Two examples of HTML5 applications are given:
 
-- [afb-client](https://github.com/iotbzh/afb-client) a simple "hello world" application template
+- [afb-client](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-demo.git;a=tree;f=afb-client) a simple "hello world" application template
 
 
-- [afm-client](https://github.com/iotbzh/afm-client) a simple "Home screen" application template
+- [afm-client](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-demo.git;a=tree;f=afm-client) a simple "Home screen" application template
 
 ### Writing a Qt application
 
 
 ### Writing a Qt application
 
@@ -33,7 +29,7 @@ Writing Qt applications is also supported. Qt offers standard API to send reques
 
 It is also possible to write QML applications. A sample QML application [token-websock] is avaliable..
 
 
 It is also possible to write QML applications. A sample QML application [token-websock] is avaliable..
 
-- [token-websock](https://github.com/iotbzh/afb-daemon/blob/master/test/token-websock.qml) 
+- [token-websock](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a=blob;f=test/token-websock.qml)
 a simple "hello world" application in QML
 
 ### Writing "C" application
 a simple "hello world" application in QML
 
 ### Writing "C" application
@@ -46,7 +42,7 @@ to connect with an afb-daemon binder.
 The program **afb-client-demo** is the C example that use
 **libafbwsc** library.
 Source code is available here
 The program **afb-client-demo** is the C example that use
 **libafbwsc** library.
 Source code is available here
-[src/afb-client-demo.c](https://github.com/iotbzh/afb-daemon/blob/master/src/afb-client-demo.c).
+[src/afb-client-demo.c](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a=blob;f=src/afb-client-demo.c).
 
 Current implementation relies on libsystemd and file descriptors.
 This model might be review in the future to support secure sockets
 
 Current implementation relies on libsystemd and file descriptors.
 This model might be review in the future to support secure sockets
@@ -166,6 +162,8 @@ Checking on closed session for uuid should be refused:
 
 #### Using afb-client-demo
 
 
 #### Using afb-client-demo
 
+> The program is packaged within AGL in the rpm **libafbwsc-dev**
+
 Here is an example of exchange using **afb-client-demo**:
 
     $ afb-client-demo ws://localhost:1234/api?token=123456
 Here is an example of exchange using **afb-client-demo**:
 
     $ afb-client-demo ws://localhost:1234/api?token=123456
@@ -202,6 +200,24 @@ Replies use javascript object returned as serialized JSON.
 This object contains at least 2 mandatory fields of name **jtype** and **request**
 and one optional field of name **response**.
 
 This object contains at least 2 mandatory fields of name **jtype** and **request**
 and one optional field of name **response**.
 
+### Template
+
+This is a template of replies:
+
+```json
+{
+   "jtype": "afb-reply",
+   "request": {
+      "status": "success",
+      "info": "informationnal text",
+      "token": "e83b36f8-d945-463d-b983-5d8ed73ba52",
+      "uuid": "5fcc3f3d-4b84-4fc7-ba66-2d8bd34ae7d1",
+      "reqid": "application-generated-id-23456"
+   },
+   "response": ....any response object....
+}
+```
+
 ### Field jtype
 
 The field **jtype** must have a value of type string equal to **"afb-reply"**.
 ### Field jtype
 
 The field **jtype** must have a value of type string equal to **"afb-reply"**.
@@ -240,19 +256,39 @@ Value returns in the reply has the exact same value as the one received in the r
 
 This field response optionally contains an object returned when request succeeded.
 
 
 This field response optionally contains an object returned when request succeeded.
 
+Format of events
+----------------
+
+Events are javascript object serialized as JSON.
+
+This object contains at least 2 mandatory fields of name **jtype** and **event**
+and one optional field of name **data**.
+
 ### Template
 
 ### Template
 
-This is a template of replies:
+Here is a template of event:
 
 
-    {
-      "jtype": "afb-reply",
-      "request": {
-           "status": "success",
-           "info": "informationnal text",
-           "token": "e83b36f8-d945-463d-b983-5d8ed73ba52",
-           "uuid": "5fcc3f3d-4b84-4fc7-ba66-2d8bd34ae7d1",
-           "reqid": "application-generated-id-23456"
-         },
-      "response": ....any response object....
-    }
+```json
+{
+   "jtype": "afb-event",
+   "event": "sample_api_name/sample_event_name",
+   "data": ...any event data...
+}
+```
+
+### Field jtype
+
+The field **jtype** must have a value of type string equal to **"afb-event"**.
+
+### Field event
+
+The field **event** carries the event's name.
+
+The name of the event is made of two parts separated by a slash:
+the name of the name of the API that generated the event
+and the name of event within the API.
+
+### Field data
+
+This field data if present holds the data carried by the event.