diff options
Diffstat (limited to 'ACE/examples/ASX/UPIPE_Event_Server/Supplier_Router.h')
-rw-r--r-- | ACE/examples/ASX/UPIPE_Event_Server/Supplier_Router.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ACE/examples/ASX/UPIPE_Event_Server/Supplier_Router.h b/ACE/examples/ASX/UPIPE_Event_Server/Supplier_Router.h new file mode 100644 index 00000000000..4d5d440e018 --- /dev/null +++ b/ACE/examples/ASX/UPIPE_Event_Server/Supplier_Router.h @@ -0,0 +1,57 @@ +/* -*- C++ -*- */ +// $Id$ + +// The interface between a supplier and an Event Service ACE_Stream. + +#ifndef _SUPPLIER_ROUTER_H +#define _SUPPLIER_ROUTER_H + +#include "ace/UPIPE_Addr.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/UPIPE_Acceptor.h" +#include "ace/Map_Manager.h" +#include "ace/Svc_Handler.h" +#include "Peer_Router.h" + +#if defined (ACE_HAS_THREADS) + +// Forward declaration. +class Supplier_Handler; + +// Type of search key for SUPPLIER_MAP. +typedef ACE_HANDLE SUPPLIER_KEY; + +// Instantiated type for routing messages to suppliers. + +typedef Peer_Router<Supplier_Handler, SUPPLIER_KEY> SUPPLIER_ROUTER; + +class Supplier_Handler + : public Peer_Handler<SUPPLIER_ROUTER, SUPPLIER_KEY> +{ +public: + Supplier_Handler (ACE_Thread_Manager *tm = 0); + virtual int open (void *); +}; + +class Supplier_Router : public SUPPLIER_ROUTER +{ +public: + Supplier_Router (ACE_Thread_Manager *); + +protected: + // ACE_Task hooks.. + virtual int open (void *a = 0); + virtual int close (u_long flags = 0); + virtual int put (ACE_Message_Block *msg, ACE_Time_Value * = 0); + virtual int svc (void); + + // Dynamic linking hooks inherited from Peer_Router. + virtual int info (ACE_TCHAR **info_string, size_t length) const; +}; + +#endif /* ACE_HAS_THREADS */ +#endif /* _SUPPLIER_ROUTER_H */ |