1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
2.6 KiB
Plaintext

The daemon needs to know (for each task):
- Some identifier
- Times of start and repetition AND be able to calculate the upcoming repetition?
- Formula to check ALSO for each variable a list of task to be recalculated.
FOR task with implicit variables: that that task should be recalculated every time
- Command to be run
- Which timer shall be used ERROR if daemon needs CAP_WAKE_ALARM but doesn't have it.
- User note?
Socket comunication scheme: Q: shouldn't it be a fifo instead?
- One line: \n terminates a request
- Request from client ending with \n, then a line from the daemon with status.
- Status lines: keyword, optionally with details after a space
* 'OK' = the request has been processed as expected
- 'OK but' + obsolete, dangerous, ... = still a success, but shouldn't be used that way.
- Clients are still free to ignore the details.
- also return task ID when creating a task
* 'SYSERR'+␣+errno line = Some of the syscalls failed
* 'SYSBUSY' = Syscall error, possibly fixable by trying it again (EBUSY, EAGAIN, ...)
- This shall be done by the client, so that the daemon can process other requests
* 'PARSEERR' (maybe what failed) = The daemon was unable to parse the request line
- also nonexistent variable and all errors with the request
* 'ERR' = Other kind of error. This should not end up being overused.
* 'NYI' = The request type is not recognised or implemented.
* 'DATA'+␣+data = for data exporting from the daemon to the client (task list).
- Implicates 'OK', if anything fails, we fail
- Maybe break the convention of single line from each? Then each line start with DATA, and last with 'DATAEND'?
- DATAEND has the advantage of us knowing the data is all, even for empty data.
- or encode it in a single long line??
I should define status codes and classes, so that old clients can parse new errors. Maybe.
- Requests: Type, space, parameters
* 'TASK' = adds a new task
* 'VAR' = adds/sets a variable
* 'TASKDEL' = delete a task
- there is no such thing as disabled task
* 'LIST' (selector?)
- Support for task changes? Not needed, can delete and make new task, but may be nice
- Metainformation like 'VERSION'?
Semantics detail
- Variables are always numbers
- Variables not defined are either a fail, or zero AND I AM THE ONE WHO SHOULD DECIDE WHICH IS THE CORRECT BEHAVIOR
- Variable names consist only of uppercase letters and underscores
- And maybe they have limited length?
- lowercase names are reserved for function names and maybe implicit variables
- Should it be guaranteed uppercase names are all free for user to use? I think so