added doc for applications
This commit is contained in:
parent
7d30d9d971
commit
09fef78f9a
@ -111,10 +111,9 @@ A collection of `Pixel` is called a `Canvas` which is nothing more than a 2D arr
|
||||
The concept of processes tryes to encapsulate programs. A process is basically an interface with the `run(handle: ProcessHandle)` method.
|
||||
The idea is that you can register all you disposable resources in the handle and they will be disposed when the process is killed or crashes.
|
||||
|
||||
A process can be used as a command on the terminal or as a service. See [bin/HelloWorld.hx](../src/bin/HelloWorld.hx) for an example.
|
||||
Basically everything that runs and is not part of the kernel is a process.
|
||||
A process can be used as a command on the terminal or as a service. Basically everything that runs and is not part of the kernel is a process.
|
||||
|
||||
~~In order for you program to be used it needs to be registered in the `BinStore` and the `DCEHack` manually. ~~
|
||||
More on that at [Applications](#applications).
|
||||
|
||||
# EndOfLoop
|
||||
|
||||
@ -224,3 +223,31 @@ The follwing haxe flags can be used in the code or can be set in the makefile.
|
||||
|
||||
- `debug`: Is set when debug
|
||||
- `kv_use_native`: If set use the native CC serialize and unserialize functions instead of the Haxe ones. See [KVStore.hx](../src/lib/KVStore.hx) for more.
|
||||
|
||||
# Applications
|
||||
|
||||
If you want to make an application you just need to create a class that implements IProcess and and has no arguments in the constructor.
|
||||
In order to have the programm available from the terminal you need to add the `Binstore.includeBin` macro for the class. Here is an example:
|
||||
|
||||
```haxe
|
||||
@:build(macros.Binstore.includeBin("HelloWorld", ["hello", "helloworld"]))
|
||||
class HelloWorld implements IProcess {
|
||||
public function new() {}
|
||||
|
||||
public function run(handle:ProcessHandle) {
|
||||
handle.writeLine("Hello World");
|
||||
handle.close(true);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Let's break this down:
|
||||
|
||||
- The `includeBin` macro is required to automaticly inlcude the app and to defeat the DCE optimisation. In early versions refections were used but DCE did not like that
|
||||
- The first argument on `includeBin` is the name of the app. Only ever used in displaying.
|
||||
- The second argument are the aliases. These are used to call the app from the terminal and other places
|
||||
- The constructor can't have any arguments. It's also recommended to not do any major setup stuff in there.
|
||||
- The `run` method is the entry point in the app.
|
||||
- The handle is used to interact with the outside world. (theoretically at least)
|
||||
- The `handle.close(true)` call is required to end a process. The app does not end when the run function is finished. The first arguments represents if the app was successfull.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user