summaryrefslogtreecommitdiff
path: root/protocols/ace/RMCast/Simulator.cpp
blob: 4b08f37f3da490aef9da10d82f5e152046636cc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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;
    }
  }
}