Basklass för applikationer rt_appl


Basklassen rt_appl innehåller mycket av de initieringar och övervakning av händelser som
är beskrivet ovan. Genom att subklassa rt_appl behöver man inte lägga in någon kod för detta
utan det utförs av rt_appl. rt_appl innehåller tre virtuella funktioner som ska implementeras
av subklassen, open(), close() och scan(). open() används vid initieringen för att direktlänka
mot attribut och objekt, scan() blir anropad cykliskt med angiven scantid, och i close() tar
man ner direktlänkningarna.

rt_appl gör följande:

- Initiera gdh, errh och qcom.
- Sätter applikationsstatus vid uppstart och omstart.
- Hanterar händelser för mjuk omstart och terminiering.
- Tidstämplar för undvika timeout.

I exemplet nedan kan vi se applikationen ra_appl som subklassar rt_appl.

class ra_appl : public rt_appl {
public:
  ra_appl() : rt_appl( "ra_appl", errh_eAnix_appl1) {}
  void open();
  void close();
  void scan();
};

void ra_appl::open()
{
  // Link to database objects
}

void ra_appl::close()
{
  // Unlink to database objects
}

void ra_appl::scan()
{
  // Do something
}

int main()
{
  ra_appl appl;

  appl.init();
  appl.register_appl( "Nodes-MyNode-MyAppl");

  appl.mainloop();
}