Difference between revisions of "Daemons and Services"
(Added getting started step b/c my snapshot install did not have the component already installed.) |
|||
Line 76: | Line 76: | ||
Called when a special signal was sent to the daemon. This method should return ''True'' on success. | Called when a special signal was sent to the daemon. This method should return ''True'' on success. | ||
+ | |||
+ | ==Getting Started== | ||
+ | Before you are able to create a Service or Daemon application you must first ensure that the Lazarus Daemon package "lazdaemon" is installed. | ||
=Example= | =Example= | ||
There is a simple example in examples/cleandir/. Read the README.txt. | There is a simple example in examples/cleandir/. Read the README.txt. |
Revision as of 15:21, 29 January 2008
│
English (en) │
español (es) │
français (fr) │
polski (pl) │
português (pt) │
русский (ru) │
What are daemons and services?
Unix daemons and windows services are programs running without user interaction. For example www or ftp servers are called daemons under linux and services under windows. Because they do not interact with the user directly, they close their stdin, stdout, stderr descriptors at start.
With Free Pascal, Lazarus it is possible to write these daemons/services platform independent via the Lazarus lazdaemon package. To avoid name conlicts with the Delphi components these classes are called 'daemons'.
Classes
TCustomDaemon
This is a TDataModule descendant that does all the work. There can be several TCustomDaemons classes and/or instances running at the same time and in the same process (multi threaded).
TCustomDaemonApplication
This is a TCustomApplication descendant which creates the TCustomDaemons. This does not need any change. It runs under windows until it receives the Stop call or under linux until the TERM signal.
TDaemonMapper
This component handles the service registration. Each instance needs one entry in the property DaemonDefs.
Daemon - Step by Step
- When the daemon is started the command line parameters are parsed. The following are predefined:
- -i --install: register the daemon. This has no effect under unix.
- -u --uninstall: unregister the daemon. This has no effect under unix.
- -r --run: start the daemon. Windows does this normally itself.
- Create the TDaemonMapper
- Create one TCustomDaemon for each entry of DaemonDefs.
- install, uninstall or run every instance.
- if run: start every instance in its own thread and then wait for Stop/TERM signal.
Daemon Methods
Start
Called when daemon should start. This method must return immediately with True.
Stop
Called when daemon should stop. This method must return immediately with True.
Shutdown
Called when daemon should be killed. This method must stop the daemon immediately and return with True. This is not triggered under Linux. Linux simply kills the daemon.
Pause
Called when daemon should pause. This method must return immediately with True. Under Linux this is not triggered because the kernel stops the whole daemon on STOP and continues it on CONT.
Continue
Called when daemon should continue after a pause. This method must return immediately with True. Under Linux this is not triggered.
Install
Called when daemon is registered as windows service. This method should return True on success.
Uninstall
Called when daemon is unregistered as windows service. This method should return True on success.
AfterUnInstall
Called after daemon was unregistered as windows service. This method should return True on success.
HandleCustomCode
Called when a special signal was sent to the daemon. This method should return True on success.
Getting Started
Before you are able to create a Service or Daemon application you must first ensure that the Lazarus Daemon package "lazdaemon" is installed.
Example
There is a simple example in examples/cleandir/. Read the README.txt.