00001
00002
00003
00004
00005
00006
00007 #include <iostream>
00008 #include <stdlib.h>
00009 #include <unistd.h>
00010 #include <string.h>
00011 #include "ComPlusPlus/ComPlusPlus"
00012
00013 class Test1 {
00014
00015 public:
00016 Test1() {}
00017 ~Test1() {std::cout << "Test1 OBJECT deleted \n"; } ;
00018
00019 };
00020
00021 int main( int argc, char * argv [] ) {
00022
00023 try {
00024 compp::Signalling<int> Sig;
00025
00026 int val=0;
00027 compp::SignallingMemberID ID, ID1;
00028 ID = Sig.Join();
00029 ID1 = Sig.Join();
00030
00031 bool f = Sig.TryWait ( ID, val );
00032 std::cout << "TryWait: delivered " << f << "should be 0\n";
00033
00034 Sig.Post ( ID1 , 56 );
00035 Sig.Wait ( ID, val );
00036 std::cout << "Wait: delivered " << val << "should be 56\n";
00037
00038 Sig.Post(ID, 78 );
00039 f = Sig.TryWait ( ID, val );
00040 std::cout << "TryWait: delivered " << f << "should be 0\n";
00041
00042 f = Sig.TryWait ( ID1, val );
00043 std::cout << "TryWait: delivered " << f << "should be 1 and " << val << " should be 78 \n";
00044
00045 f = Sig.TryWait ( ID1, val );
00046 std::cout << "TryWait: delivered " << f << "should be 0\n";
00047
00048 Sig.Leave ( ID );
00049 Sig.Leave ( ID1 );
00050
00051 compp::Signalling<Test1> Sig2;
00052
00053 Test1 Dummy;
00054 ID = Sig2.Join();
00055 ID1 = Sig2.Join();
00056
00057 Sig2.Post(ID, Dummy);
00058 std::cout << "Leave1\n";
00059 Sig2.Leave(ID);
00060 std::cout << "Leave2\n";
00061 Sig2.Leave(ID1);
00062
00063 std::cout << "Leave3\n";
00064 } catch ( syspp::ComException &e ) {
00065 std::cout << "Exception " << e.what () << "\n";
00066 }
00067 return 0;
00068 }
00069