summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-04-10Make implementation multithreadJosé Bollo4-44/+98
This changes makes many improvement needed for multi-threading: - json object can't be shared across threads because get/set is not protected - event are now multithread compatible Change-Id: Id44b12c68e0fa67042b8ea44939af4edfa76270a Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Enforce flush of incoming dataJosé Bollo1-0/+4
Change-Id: I81deb974460e7f3edbccf132efeac87f873d78dd Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Make HelloWord binding multi-threadJosé Bollo1-0/+13
Handling of event was not compatible with multi threaded. This implmentation solves this by protecting event access with mutexes. Change-Id: Ie52216289000f1ae6352c9dda442dfbda1ebe850 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Refactor of initialisationJosé Bollo1-8/+9
Change-Id: Ie5209f74ea1a65571a3ec54724131f15d22ca35f Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Refactor setting of directoriesJosé Bollo2-9/+8
When not specified, the default directories are now ".". The workdir is relative to the current directory and other directories are relative the the workdir. Change-Id: I52c013e3a3c93b3f984903562cf0c56d990900e6 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Fix typoJosé Bollo1-1/+1
Change-Id: I0077f77984accdd1f07d0e7c1526720f687ec58e Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Isolate interupt managementJosé Bollo1-7/+44
Provision daemon features: - SIGTERM for terminating - SIGHUP for config reload Change-Id: Id45a0b963812105c22ead5a0a2004f3f531a2a65 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Websocket client select if looping or notJosé Bollo3-3/+13
Allows the client to tell websocket module to not loop on messages. Change-Id: Iaa1025ce5442a5659554ba66fcc5869a1e8659b4 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-10Refactor of API interfacesJosé Bollo6-24/+154
The new interface has increased functionnality, it allows to set debug flags by API. Change-Id: Ibd35fb02ed645e22cac8e7021b37b96e07e79877 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-07Add hooking of daemon interfaceJosé Bollo13-59/+542
Change-Id: I5840609f4300ade98412e8527ac5ce1f1e8c0c59 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-07Improve log messagesJosé Bollo3-33/+61
Add ability to discuss directly with systemd journal. Add report of functions name when logging. Change-Id: Ia7c5836e387b621b47e3700a7abca40bc0e481c8 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-07Finalize hooking of requestsJosé Bollo5-61/+131
Change-Id: I0c03b2c8ce556f1e6987ee5a7ad355ba9e67f142 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Reactivate hooking of requestsJosé Bollo6-449/+413
Change-Id: I0fc8429063d99e10344aaadba06480a470b9eb9d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Avoid prompting error on empty lineJosé Bollo1-3/+4
Change-Id: I9da7f17f93f1948da23f6a2304f0718d7bee6464 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Improve namesJosé Bollo1-11/+11
Change-Id: Ib7e31b50a725c73e6eaba414c6628524fbcd84f9 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Make websocket concurrentJosé Bollo1-7/+31
Stress tests shown that the module wsj1 wasn't ready to concurrency. Change-Id: Ia54196f97e9712adf0920b59b188d570f39a6b4f Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Add a script for stressing the daemonJosé Bollo1-0/+76
Change-Id: Ic8c5241339106376daaf91acafca1e4fb0f5f818 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Add an easy function for synchronous callsJosé Bollo2-4/+74
The added function, 'jobs_call', allows to call a job with 'group' sequencing and 'timeout' handling synchronously. The difference with 'jobs_enter' is that the function 'jobs_call' assert that the job is terminated when 'callback' returns. Change-Id: I8c01d1cd017787ca0448b03a899305a9069ebb6c Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Avoid to stick on event loopJosé Bollo1-1/+10
When working synchronously, waiting continuously to an event can make deadlocks. This commit enforce threads that wait for some job completion to wait for a fixed amount of time. An alternative management with signals should be studied in future. Change-Id: Idcfadc60f8c14d73d7fa32e937c6ea0f552cc09b Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-06Reduce explicitely recursionJosé Bollo2-25/+24
When evaluating permissions, the recursive algorithm is replaced with an algorithm that eliminates the tail recursion. Change-Id: I3298c42fa658498a954f4bf7dedfad87f00ab736 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-05Make daemon interface commonJosé Bollo6-177/+174
For the future, having only one piece of code to handle daemon interface to bindings is an improvement. Change-Id: I806c424eb1a82637d27bc84b921612789907d971 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-05Add permission subsystemJosé Bollo7-0/+757
Change-Id: I0bbbf55832faf6413dd6147174934d0d4dc5277d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Ensure that subcall_sync use subcallJosé Bollo5-62/+63
The intent is to provide the asynchronous subcall as standard. This is needed for fixing subcall across connections (DBus or WebSocket). Change-Id: Ia046cfa4d0124bfa3ba7eb8e8f936eeafcf09875 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Avoid to count child threadsJosé Bollo1-7/+9
The count of allowed threads must be the real count of threads started. Change-Id: Iaefc9fa4368042d6db45ed3333f9591da027b2f0 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Improve debugging optionsJosé Bollo1-9/+1
Change-Id: I3550a4c2500b98efa985e678217e3d91bc8ca4c6 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Add synchronous subcallsJosé Bollo10-41/+182
Synchronous subcalls are more easy for writing simple applications with sequential logic. Change-Id: I76a0231a64a6db8270014cd2a64284e1b0fc16ec Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Use SIGHUP instead of SIGKILLJosé Bollo1-4/+3
This doesn't enforces anymore the brutal termination. Change-Id: I62445c7cb3692354637906fb1ddda1787c8fb82a Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Launch job at a earlier stepJosé Bollo9-48/+50
Change-Id: I3fcb96e4d748e38eacc4d413a451143dd9b4a10d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Definitive switch to internal's xreqJosé Bollo11-168/+16
This switch allows to work on a common base for the requests. Change-Id: I94e7fdda80c1966af399309334c41c7c8c8259dc Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Migrates subcalls to use xreqJosé Bollo3-125/+70
Change-Id: If865208bc0c207511d2b11e4cff617005ed01e56 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-04Introduce subcontext for subcallsJosé Bollo2-6/+29
Change-Id: I5460e9c502cee814c59a0ee60c2be001385e7b4a Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-03Switch API D-Bus to xreqJosé Bollo1-110/+68
Change-Id: I16bfa2594f8de4babcc0d3cc1a62e7d0856d2479 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-03Switch API websocket to xreqJosé Bollo1-161/+53
Change-Id: I57600d8dc99bf37f207b126a0e3ab5731ad08ced Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-03Improve interface xreqJosé Bollo2-5/+41
Add missing function for further work Change-Id: I4e2b7a35b45ffb0edb1fd14b52500c9b00fab807 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-03Add notification message for added APIJosé Bollo1-0/+2
Change-Id: I797afeaa0758f2fef854a1ffaee398aff6c9041e Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-04-03Rework the jobsJosé Bollo5-304/+178
Enforce starting jobs with acquiring the calling thread. Removes invoke methods in favour of enter/leave synchronisation. Change-Id: I7086f7f53b919b43ddafd2355316abc0d3516f49 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-31Use xreq for servicesJosé Bollo3-59/+50
Change-Id: I05d0ddb36635c01b3d56ae52a08fbb68f3b3a6a9 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-31Use xreq for websocketsJosé Bollo4-110/+36
Change-Id: Ia489f863e8be3384fbe8a240f6010f7d5916b72a Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-31Factorize common code for handling requestsJosé Bollo16-122/+598
The common code for session handling is shared using struct afb_xreq. At the moment only hreq leverages the new feature. The objective is double: make the work of writing new internal requests more easy and prepare to check permissions. Change-Id: If3ca311d68c2d8c427d1125f31a2704b150c2c94 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-31Allow detection of session closureJosé Bollo1-2/+2
In some case it can be good to have a function called when the session closes. This is the case when a binding records an item in the context. With this modification the recorded item can be simply NULL. Change-Id: I5e23f00eb2a6e2639fdeea15f9dea79c7df9dfbb Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-30Start to implement the bindings V2José Bollo12-81/+515
More work has to be done for merging common code. Change-Id: I72b01901f978854843967c12bfcb3cc59cc10310 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-30Overall integration of job initialisationJosé Bollo4-25/+38
Move the job initialisation from main to jobs. Change-Id: I8f5b54adb62e60592884ff1e3fad9811b5934d47 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-30Fix concurrency issues on event managerJosé Bollo4-155/+140
Having only one event manager is not possible in multithreading due to the way that systemd has to manage timer events. We observed that timers were not armed when set in a thread because event was polling in an other thread. This patch provides more than one event manager and at most as many as the number of threads avalaible to start. Change-Id: Iaeab353b7bc79ce61361ab73c7b197a9e69a6109 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-30Refactor initialisation of the daemonJosé Bollo1-50/+66
This commit prepares a future job centrered main where 'sig_monitor_init', 'jobs_init', 'jobs_add_events', 'jobs_queue0' and 'jobs_add_me' will be merged in one single call provided as a feature of module jobs. Change-Id: I8ccb1bf1761c4fa1031e903bead863ff68e7df83 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-29Prepare migration to binding v2José Bollo5-119/+181
Change-Id: I48c1fdb5199c9fb0f001576ceed3ddcb50fc9066 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-29cosmeticJosé Bollo1-2/+11
Change-Id: I26e35f99a68557d005ee46dd4cd1c0fbd728bfd2 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-29Prepare move to bindings version 2José Bollo5-289/+366
Change-Id: I3105a5898d0703d1e57eff09f179b38742482842 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-29Add commentsJosé Bollo5-182/+464
Improves the comments of the module jobs Change-Id: Id99e9c6d6c9572d68ae9cca0f13e2498348de91d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-28Refactor job to allow synchronous callsJosé Bollo4-140/+349
The family of methods "jobs_invoke" make synchronous job activation. It waits for the completion of the job while still dispatching it internally and providing the calling thread for processing any job queued. Change-Id: Id36a30789cc51245a7bbfca42f0122cf4ea623b2 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-03-28Fix bug in recycling jobsJosé Bollo4-8/+11
The bug was creating an infinite loop starving the system (or other possible horrific stuff). Also updated the test. Change-Id: Id71dd112d2ed4651ac8aa56d2c57b088d69b8655 Signed-off-by: José Bollo <jose.bollo@iot.bzh>