From 82fca3f7c16e9c4e85f0abd2dff1a5d12a3e68b0 Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 13:12:54 +0000 Subject: Utilisateur : Fcolin Date : 10/06/02 Heure : 13:14 Créé Commentaire: (vss 1) --- IvyTest/ivytest.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 IvyTest/ivytest.cpp (limited to 'IvyTest') diff --git a/IvyTest/ivytest.cpp b/IvyTest/ivytest.cpp new file mode 100644 index 0000000..b9121ac --- /dev/null +++ b/IvyTest/ivytest.cpp @@ -0,0 +1,83 @@ +// ivytest.cpp : Defines the entry point for the console application. +// +#include + +#include + +#include "ivy.h" +#include "IvyApplication.h" + +static bool TheGrassIsGreenAndTheWindBlows = true; + +class cIvyTranslater : public IvyApplicationCallback +{ +public: + cIvyTranslater(void); + ~cIvyTranslater(); +protected: + void OnApplicationConnected ( IvyApplication *app ); + void OnApplicationDisconnected( IvyApplication *app ); + void HelloCallback ( IvyApplication *app, int argc, const char **argv ); + void ByeCallback ( IvyApplication *app, int argc, const char **argv ); + Ivy *bus; +}; + + + +cIvyTranslater::cIvyTranslater(void) +{ + // initialization + bus = new Ivy( "cIvyTranslater","cIvyTranslater READY",this,FALSE); + + int count; + count = bus->BindMsg( "^Hello(.*)", BUS_CALLBACK_OF(cIvyTranslater, HelloCallback )); + count = bus->BindMsg( "^Bye$", BUS_CALLBACK_OF(cIvyTranslater, ByeCallback )); + + bus->start(NULL); +} +cIvyTranslater::~cIvyTranslater(void) +{ + bus->stop(); + delete bus; +} + +void cIvyTranslater::HelloCallback(IvyApplication *app, int argc, const char **argv) +{ + const char* arg = (argc < 1) ? "" : argv[0]; + cout << "cIvyTranslater received msg: Hello'" << arg << "'" << endl; + bus->SendMsg( "Bonjour%s!", arg ); +} + +void cIvyTranslater::ByeCallback(IvyApplication *app, int argc, const char **argv) +{ + cout << "cIvyTranslater stops bus" << endl; + if (bus) { + TheGrassIsGreenAndTheWindBlows = false; + // This is causing the fatal bug +// bus->stop(); +// delete bus; // This statement is never reached! Don't know why! + } + +} + +void cIvyTranslater::OnApplicationConnected(IvyApplication *app) +{ + cout << "cIvyTranslater is ready to accept messages from " << app->GetName() << endl; +} + +void cIvyTranslater::OnApplicationDisconnected(IvyApplication *app) +{ + cout << "cIvyTranslater good buy '" << app->GetName() << "'" << endl; +} + + +void main(int argc, char* argv[]) +{ + cIvyTranslater aIvyTL; + + while (TheGrassIsGreenAndTheWindBlows) { + Sleep(2000); + cout << "new cycle..." << endl; + } + cout << "Good buy, world\n"; +} \ No newline at end of file -- cgit v1.1