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
 ==============================================
-    version: 1
-    Date:    30 mai 2016
-    Author:  José Bollo
-
-TABLE-OF-CONTENT-HERE
 
 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:
 
-- [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
 
@@ -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..
 
-- [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
@@ -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
-[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
@@ -166,6 +162,8 @@ Checking on closed session for uuid should be refused:
 
 #### 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
@@ -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**.
 
+### 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"**.
@@ -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.
 
+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
 
-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.