parent
8c640b33a6
commit
f9004e890b
@ -0,0 +1,35 @@ |
|||||||
|
# Scriptform Developer guide |
||||||
|
|
||||||
|
## Build rules |
||||||
|
|
||||||
|
Build rules for testing, generating documentation and generating packages are |
||||||
|
stored in `build.sla`. These can be run directly from a POSIX compliant shell, |
||||||
|
or you can use the [Simple Little Automator](https://github.com/fboender/sla) |
||||||
|
for convenience. |
||||||
|
|
||||||
|
## Inner workings |
||||||
|
|
||||||
|
1. Instantiate a `ScriptForm` class. This takes care of loading the form |
||||||
|
config (json) file and provides methods to run the server. |
||||||
|
2. If running as a daemon: |
||||||
|
a) Instantiate the `Daemon` class |
||||||
|
b) Hook up a callback to shutdown the ScriptForm server |
||||||
|
c) Start the daemon. This detaches from the console. |
||||||
|
3. Start the ScriptForm server. This listens on a port for incoming HTTP |
||||||
|
connections. |
||||||
|
4. If a request comes in, it is dispatched to the `ScriptFormWebApp` request |
||||||
|
handler. `ScriptFormWebApp` inherits from the `webserver.RequestHandler` |
||||||
|
class. The `WebAppHandler` determines which method of `ScriptFormWebApp` |
||||||
|
the request should be dispatched to. |
||||||
|
5. Depending on the request, a method is called on `ScriptFormWebApp`. These |
||||||
|
methods render HTML to as a response. |
||||||
|
6. If a form is submitted, its fields are validated and the script callback is |
||||||
|
called. Depending on the output type, the output of the script is either |
||||||
|
captured and displayed as HTML to the user or directly streamed to the |
||||||
|
browser. |
||||||
|
7. GOTO 4. |
||||||
|
8. Upon receiving an OS signal (kill, etc) the daemon calls the shutdown |
||||||
|
callback. |
||||||
|
9. The shutdown callback starts a new thread (otherwise the webserver blocks |
||||||
|
until the next request) to stop the server. |
||||||
|
10. The program exits. |
Loading…
Reference in new issue