#include <unistd.h> // sleep() #include <iostream> #include "odai.h" // callback function for receiving the message "message(i, f, s)" static void message(int i, double f, char *s) { cout << "MESSAGE: "; cout << "string=" << s << ", "; cout << "integer=" << i << ", "; cout << "float=" << f << endl << endl; } int main(int argc, char **argv) { char *t = "abcdefghijklmnopqrstuvwxyz"; Client *c = NULL; double f; char *s; int i; try { c = new Client("localhost", 3000); } catch (int err) { cerr << "client: fatal error " << err << endl; exit(1); } // make function a callback for a message c->reg("message(i, f, s)", (void *)message); // call every second a function in the sever process while (true) { sleep(1); cout << "calling ret_void() ... "; flush(cout); if (!c->fnc("ret_void(s)", t)) { cout << "OK" << endl; } sleep(1); cout << "calling ret_int() ... "; flush(cout); if (!c->fnc(&i, "ret_int(s)", t)) { cout << "OK, got: " << i << endl; } sleep(1); cout << "calling ret_float() ... "; flush(cout); if (!c->fnc(&f, "ret_float(s)", t)) { cout << "OK, got: " << f << endl; } sleep(1); cout << "calling ret_string() ... "; flush(cout); if (!(c->fnc(&s, "ret_string(s)", t))) { cout << "OK, got: " << s << endl << endl; } } delete (c); return (0); }