filter.h
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C头文件 代码 · 共 273 行
H
273 行
/* -*- C++ -*- */
// Filter.h,v 1.8 2003/08/05 05:09:55 dhinton Exp
// ==========================================================================
//
// = FILENAME
// Filter.h
//
// = DESCRIPTION
// Class to demo structured event filtering.
//
// = AUTHOR
// Pradeep Gore <pradeep@cs.wustl.edu>
//
// ==========================================================================
#ifndef NOTIFY_FILTER_CLIENT_H
#define NOTIFY_FILTER_CLIENT_H
#include "orbsvcs/CosNotifyChannelAdminS.h"
#include "orbsvcs/CosNotifyCommC.h"
#include "orbsvcs/CosNamingC.h"
#include "ace/SString.h"
#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */
class Filter_StructuredPushConsumer;
class Filter_StructuredPushSupplier;
class FilterClient
{
// = TITLE
// Filter Client
// = DESCRIPTION
// Client example that shows how to do Structured Event filtering
// in the Notification Service.
public:
// = Initialization and Termination
FilterClient (void);
// Constructor
~FilterClient ();
// Destructor
void init (int argc, char *argv [] ACE_ENV_ARG_DECL);
// Init the Client.
void run (ACE_ENV_SINGLE_ARG_DECL);
// Run the demo.
void done (void);
// Consumer calls done, We're done.
protected:
void init_ORB (int argc, char *argv [] ACE_ENV_ARG_DECL);
// Initializes the ORB.
void resolve_naming_service (ACE_ENV_SINGLE_ARG_DECL);
// Try to get hold of a running naming service.
void resolve_Notify_factory (ACE_ENV_SINGLE_ARG_DECL);
// Try to resolve the Notify factory from the Naming service.
void create_EC (ACE_ENV_SINGLE_ARG_DECL);
// Create an EC.
void create_supplieradmin(ACE_ENV_SINGLE_ARG_DECL);
// Create the Supplier Admin.
void create_consumeradmin (ACE_ENV_SINGLE_ARG_DECL);
// Create the Consumer Admin.
void create_consumers (ACE_ENV_SINGLE_ARG_DECL);
// Create and initialize the consumers.
void create_suppliers (ACE_ENV_SINGLE_ARG_DECL);
// create and initialize the suppliers.
void send_events (ACE_ENV_SINGLE_ARG_DECL);
// send the events.
// = Data Members
PortableServer::POA_var root_poa_;
// Reference to the root poa.
CORBA::ORB_var orb_;
// The ORB that we use.
CosNaming::NamingContext_var naming_context_;
// Handle to the name service.
CosNotifyChannelAdmin::EventChannelFactory_var notify_factory_;
// Channel factory.
CosNotifyChannelAdmin::EventChannel_var ec_;
// The one channel that we create using the factory.
CosNotifyChannelAdmin::InterFilterGroupOperator ifgop_;
// The group operator between admin-proxy's.
CosNotification::QoSProperties initial_qos_;
// Initial qos specified to the factory when creating the EC.
CosNotification::AdminProperties initial_admin_;
// Initial admin props specified to the factory when creating the EC.
CosNotifyChannelAdmin::ConsumerAdmin_var consumer_admin_;
// The consumer admin used by consumers.
CosNotifyChannelAdmin::SupplierAdmin_var supplier_admin_;
// The supplier admin used by suppliers.
Filter_StructuredPushConsumer* consumer_1;
// Consumer #1
Filter_StructuredPushConsumer* consumer_2;
// Consumer #2
Filter_StructuredPushSupplier* supplier_1;
// Supplier #1
Filter_StructuredPushSupplier* supplier_2;
// Supplier #2
CORBA::Boolean done_;
// Set this flag to exit the run loop.
};
/*****************************************************************/
class Filter_StructuredPushConsumer : public POA_CosNotifyComm::StructuredPushConsumer, public PortableServer::RefCountServantBase
{
// = TITLE
// Filter_StructuredPushConsumer
//
// = DESCRIPTION
// Consumer for the Filter example.
//
public:
// = Initialization and Termination code
Filter_StructuredPushConsumer (FilterClient* filter, const char *my_name);
// Constructor.
void connect (CosNotifyChannelAdmin::ConsumerAdmin_ptr consumer_admin ACE_ENV_ARG_DECL);
// Connect the Consumer to the EventChannel.
// Creates a new proxy supplier and connects to it.
virtual void disconnect (ACE_ENV_SINGLE_ARG_DECL);
// Disconnect from the supplier.
protected:
// = Data members
FilterClient* filter_;
// The callback for <done>
ACE_CString my_name_;
// The name of this consumer.
CosNotifyChannelAdmin::StructuredProxyPushSupplier_var proxy_supplier_;
// The proxy that we are connected to.
CosNotifyChannelAdmin::ProxyID proxy_supplier_id_;
// The proxy_supplier id.
// = Methods
virtual ~Filter_StructuredPushConsumer (void);
// Destructor
// = NotifyPublish method
virtual void offer_change (
const CosNotification::EventTypeSeq & added,
const CosNotification::EventTypeSeq & removed
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
CosNotifyComm::InvalidEventType
));
// = StructuredPushSupplier methods
virtual void push_structured_event (
const CosNotification::StructuredEvent & notification
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
CosEventComm::Disconnected
));
virtual void disconnect_structured_push_consumer (
ACE_ENV_SINGLE_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
};
/*****************************************************************/
class Filter_StructuredPushSupplier : public POA_CosNotifyComm::StructuredPushSupplier, public PortableServer::RefCountServantBase
{
// = TITLE
// Filter_StructuredPushSupplier
//
// = DESCRIPTION
// Supplier for the filter example.
//
public:
// = Initialization and Termination code
Filter_StructuredPushSupplier (const char* my_name);
// Constructor.
void connect (CosNotifyChannelAdmin::SupplierAdmin_ptr supplier_admin
ACE_ENV_ARG_DECL);
// Connect the Supplier to the EventChannel.
// Creates a new proxy supplier and connects to it.
void disconnect (ACE_ENV_SINGLE_ARG_DECL);
// Disconnect from the supplier.
virtual void send_event (const CosNotification::StructuredEvent& event
ACE_ENV_ARG_DECL);
// Send one event.
protected:
// = Data members
ACE_CString my_name_;
// The name of this consumer.
CosNotifyChannelAdmin::StructuredProxyPushConsumer_var proxy_consumer_;
// The proxy that we are connected to.
CosNotifyChannelAdmin::ProxyID proxy_consumer_id_;
// This supplier's id.
// = Protected Methods
virtual ~Filter_StructuredPushSupplier ();
// Destructor
// = NotifySubscribe
virtual void subscription_change (
const CosNotification::EventTypeSeq & added,
const CosNotification::EventTypeSeq & removed
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
CosNotifyComm::InvalidEventType
));
// = StructuredPushSupplier method
virtual void disconnect_structured_push_supplier (
ACE_ENV_SINGLE_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
};
/*****************************************************************/
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */
#endif /* NOTIFY_FILTER_CLIENT_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?