summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp
blob: 55f0de96038f0bd7b9b24f51a5dda6badc5e0b40 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// $Id$

#include "orbsvcs/Event/EC_Filter.h"
#include "orbsvcs/Event/EC_QOS_Info.h"

#include "tao/ORB_Constants.h"

#if ! defined (__ACE_INLINE__)
#include "orbsvcs/Event/EC_Filter.i"
#endif /* __ACE_INLINE__ */

ACE_RCSID (Event,
           EC_Filter,
           "$Id$")

TAO_BEGIN_VERSIONED_NAMESPACE_DECL

TAO_EC_Filter::~TAO_EC_Filter (void)
{
}

void
TAO_EC_Filter::adopt_child (TAO_EC_Filter* child)
{
  child->parent_ = this;
}

TAO_EC_Filter::ChildrenIterator
TAO_EC_Filter::begin (void) const
{
  return 0;
}

TAO_EC_Filter::ChildrenIterator
TAO_EC_Filter::end (void) const
{
  return 0;
}

int
TAO_EC_Filter::size (void) const
{
  return 0;
}

void
TAO_EC_Filter::get_qos_info (TAO_EC_QOS_Info& qos_info
                             ACE_ENV_ARG_DECL)
{
  ACE_UNUSED_ARG (qos_info);
  ACE_THROW (CORBA::NO_IMPLEMENT (TAO::VMCID,
                                  CORBA::COMPLETED_NO));
}

// ****************************************************************

int
TAO_EC_Null_Filter::filter (const RtecEventComm::EventSet& event,
                            TAO_EC_QOS_Info& qos_info
                            ACE_ENV_ARG_DECL)
{
  // This is a leaf, no need to query any children, and we accept all
  // events, so push it.
  this->push (event, qos_info ACE_ENV_ARG_PARAMETER);
  ACE_CHECK_RETURN (0);
  return 1;
}

int
TAO_EC_Null_Filter::filter_nocopy (RtecEventComm::EventSet& event,
                                   TAO_EC_QOS_Info& qos_info
                                   ACE_ENV_ARG_DECL)
{
  // This is a leaf, no need to query any children, and we accept all
  // events, so push it.
  this->push_nocopy (event, qos_info ACE_ENV_ARG_PARAMETER);
  ACE_CHECK_RETURN (0);
  return 1;
}

void
TAO_EC_Null_Filter::push (const RtecEventComm::EventSet& event,
                          TAO_EC_QOS_Info& qos_info
                          ACE_ENV_ARG_DECL)
{
  if (this->parent () != 0)
    this->parent ()->push (event, qos_info ACE_ENV_ARG_PARAMETER);
}

void
TAO_EC_Null_Filter::push_nocopy (RtecEventComm::EventSet& event,
                                 TAO_EC_QOS_Info& qos_info
                                 ACE_ENV_ARG_DECL)
{
  if (this->parent () != 0)
    this->parent ()->push_nocopy (event, qos_info ACE_ENV_ARG_PARAMETER);
}

void
TAO_EC_Null_Filter::clear (void)
{
  // do nothing
}

CORBA::ULong
TAO_EC_Null_Filter::max_event_size (void) const
{
  // @@ Is there a better way to express this?
  return 0;
}

int
TAO_EC_Null_Filter::can_match (const RtecEventComm::EventHeader&) const
{
  // @@ This method should be correctly so we can implement null
  // filtering at the consumers but real filtering on the suppliers.
  return 1;
}

int
TAO_EC_Null_Filter::add_dependencies (
      const RtecEventComm::EventHeader &,
      const TAO_EC_QOS_Info &
      ACE_ENV_ARG_DECL_NOT_USED)

{
  return 0;
}

TAO_END_VERSIONED_NAMESPACE_DECL