blob: 595e666c05979d61fb764b217fdfb7fa1c666021 (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/* -*- C++ -*- */
/**
* @file Event.h
*
* $Id$
*
* @author Pradeep Gore <pradeep@oomworks.com>
*
*
*/
#ifndef TAO_Notify_EVENT_H
#define TAO_Notify_EVENT_H
#include /**/ "ace/pre.h"
#include "notify_export.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "ace/Copy_Disabled.h"
#include "ace/Refcounted_Auto_Ptr.h"
#include "orbsvcs/orbsvcs/Event_ForwarderS.h"
#include "orbsvcs/orbsvcs/CosNotifyFilterC.h"
#include "orbsvcs/orbsvcs/CosNotificationC.h"
#include "Property.h"
#include "Property_T.h"
class TAO_Notify_Consumer;
class TAO_Notify_EventType;
/**
* @class TAO_Notify_Event
*
* @brief Base class abstraction for Events flowing through the EventChannel.
*
*/
class TAO_Notify_Export TAO_Notify_Event : private ACE_Copy_Disabled
{
public:
/// Constuctor
TAO_Notify_Event (void);
/// Destructor
virtual ~TAO_Notify_Event ();
/// Copy the event.
virtual TAO_Notify_Event* copy (ACE_ENV_SINGLE_ARG_DECL) const = 0;
/// Translate Any to Structured
static void translate (const CORBA::Any& any, CosNotification::StructuredEvent& notification);
/// Translate Structured to Any
static void translate (const CosNotification::StructuredEvent& notification, CORBA::Any& any);
/// Get the event type.
virtual const TAO_Notify_EventType& type (void) const = 0;
/// Returns true if the filter matches.
virtual CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL) const = 0;
/// Convert to CosNotification::Structured type
virtual void convert (CosNotification::StructuredEvent& notification) const = 0;
/// Push event to consumer
virtual void push (TAO_Notify_Consumer* consumer ACE_ENV_ARG_DECL) const = 0;
/// Push event to the Event_Forwarder interface
virtual void push (Event_Forwarder::StructuredProxyPushSupplier_ptr forwarder ACE_ENV_ARG_DECL) const = 0;
/// Push event to the Event_Forwarder interface
virtual void push_no_filtering (Event_Forwarder::StructuredProxyPushSupplier_ptr forwarder ACE_ENV_ARG_DECL) const = 0;
/// Push event to the Event_Forwarder interface
virtual void push (Event_Forwarder::ProxyPushSupplier_ptr forwarder ACE_ENV_ARG_DECL) const = 0;
/// Push event to the Event_Forwarder interface
virtual void push_no_filtering (Event_Forwarder::ProxyPushSupplier_ptr forwarder ACE_ENV_ARG_DECL) const = 0;
///= Accessors
/// Priority
const TAO_Notify_Property_Short& priority (void) const;
/// Timeout
const TAO_Notify_Property_Time& timeout (void) const;
protected:
/// = QoS properties
/// Priority.
TAO_Notify_Property_Short priority_;
/// Timeout.
TAO_Notify_Property_Time timeout_;
};
typedef ACE_Refcounted_Auto_Ptr<const TAO_Notify_Event, TAO_SYNCH_MUTEX> TAO_Notify_Event_var_Base;
/**
* @class TAO_Notify_Event_var
*
* @brief A Non-Copy version of the ACE_Refcounted_Auto_Ptr that hides the constructors.
*
*/
class TAO_Notify_Event_var : public TAO_Notify_Event_var_Base
{
public:
/// Default Constructor
TAO_Notify_Event_var (void);
protected:
/// Constructor
TAO_Notify_Event_var (TAO_Notify_Event* event);
};
/**
* @class TAO_Notify_Event
*
* @brief A version of the ACE_Refcounted_Auto_Ptr that allows construction from a TAO_Notify_Event
*
*/
class TAO_Notify_Event_Copy_var : public TAO_Notify_Event_var
{
public:
/// Default Constructor
TAO_Notify_Event_Copy_var (void);
/// Constructor
TAO_Notify_Event_Copy_var (TAO_Notify_Event* event);
};
typedef ACE_Unbounded_Queue<TAO_Notify_Event_var> TAO_Notify_Event_Collection;
#if defined (__ACE_INLINE__)
#include "Event.inl"
#endif /* __ACE_INLINE__ */
#include /**/ "ace/post.h"
#endif /* TAO_Notify_EVENT_H */
|