diff options
Diffstat (limited to 'protocols/ace/RMCast/Simulator.cpp')
-rw-r--r-- | protocols/ace/RMCast/Simulator.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/protocols/ace/RMCast/Simulator.cpp b/protocols/ace/RMCast/Simulator.cpp new file mode 100644 index 00000000000..4b08f37f3da --- /dev/null +++ b/protocols/ace/RMCast/Simulator.cpp @@ -0,0 +1,40 @@ +// file : ace/RMCast/Simulator.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// cvs-id : $Id$ + +#include <ace/RMCast/Simulator.h> + +namespace ACE_RMCast +{ + Simulator:: + Simulator () + { + srand (time (0)); + } + + void Simulator:: + send (Message_ptr m) + { + // Note: Simulator may work in unpredictable ways mainly due + // to the "reliable loopback" mechanism. + // + out_->send (m); + return; + + int r (rand ()); + + if ((r % 3) == 0) return; + + Lock l (mutex_); + + if (hold_.get ()) + { + out_->send (m); + out_->send (hold_); + } + else + { + hold_ = m; + } + } +} |