summaryrefslogtreecommitdiff
path: root/protocols/ace/HTBP/HTBP_Session.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/ace/HTBP/HTBP_Session.h')
-rw-r--r--protocols/ace/HTBP/HTBP_Session.h198
1 files changed, 0 insertions, 198 deletions
diff --git a/protocols/ace/HTBP/HTBP_Session.h b/protocols/ace/HTBP/HTBP_Session.h
deleted file mode 100644
index 5b46c6e86b3..00000000000
--- a/protocols/ace/HTBP/HTBP_Session.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// -*- C++ -*-
-
-//=============================================================================
-/**
- * @file HTBP_Session.h
- *
- * $Id$
- *
- * @author Phil Mesnier
- */
-//=============================================================================
-
-#ifndef ACE_HTBP_SESSION_H
-#define ACE_HTBP_SESSION_H
-#include /**/ "ace/pre.h"
-
-#include "ace/SOCK_IO.h"
-#include "ace/Hash_Map_Manager.h"
-#include "ace/Synch.h"
-#include "ace/Message_Queue.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "HTBP_Addr.h"
-#include "HTBP_Export.h"
-#include "HTBP_Channel.h"
-
-#include "HTBP_Stream.h"
-
-ACE_BEGIN_VERSIONED_NAMESPACE_DECL
-
-// Forward declarations.
-class ACE_HTBP_Filter;
-class ACE_Event_Handler;
-
-namespace ACE
-{
- namespace HTBP
- {
-
- class Session_Id_t
- {
- public:
- ACE_UINT32 id_;
- Addr local_;
- Addr peer_;
-
- u_long hash () const;
- bool operator ==(const Session_Id_t &other) const;
- };
-
- /**
- * @class Session
- *
- * @brief Defines the methods in the <Session> abstraction.
- *
- * A session is an entity that combines two Ht_Channels that connect directly
- * to a proxy to manage communication with a remote peer. The Session may
- * persist longer than either stream, assuming that the proxy is libel to
- * close a connection at any time.
- *
- * This means that the session needs to be able to reconnect to the remote
- * peer. This also means that the session needs to be aware of its location
- * If it is outside the proxy and looses a stream, oh well. If it is inside,
- * then the next time a stream is required, then it must reconnect before
- * returning the stream.
- *
- * The session does not queue outbound messages. That is going to be the
- * responsibility of the application, or a higher level protocol wrapper.
- */
- class HTBP_Export Session
- {
- public:
- // Initialization and termination methods.
- /// Constructor.
- Session (void);
-
- /// Constructor (sets the underlying session id with <sid>).
- Session (const Addr& peer,
- const Addr& local,
- ACE_UINT32 sid = 0,
- ACE_INET_Addr *proxy = 0,
- int take_proxy = 0);
- Session (const Session_Id_t &id,
- ACE_INET_Addr *proxy = 0,
- int take_proxy = 0);
-
- Session (const Session &other);
- Session& operator= (const Session &other);
-
- /// Destructor.
- ~Session (void);
-
- /// The following methods are specific to the Session
- static ACE_UINT32 next_session_id ();
-
- static int add_session (Session *);
- static int remove_session (Session *);
- static int find_session (const Session_Id_t&,
- Session *&out);
-
- Stream *stream (void) const;
- void stream (Stream *);
-
- int enqueue (ACE_Message_Block *msg);
- int flush_outbound_queue (void);
-
- int close_inbound (void) const;
- int close_outbound (void) const;
-
- /// get references to the actual streams based on the direction
- /// of data flow if this session is on the inside of the proxy
- /// ie, has a non-null proxy addr, then the inbound stream is
- /// the out_to_in stream, otherwise it is the in_to_out
- /// stream. The outbound is the opposite of the inbound.
- /// Whenever an application wishes to send data, whether that is
- /// request or reply data, it uses the outbound stream, and it
- /// should associate an event handler with the inbound stream
- /// for receiving data.
- Channel *inbound (void) const;
- Channel *outbound (void) const;
- void inbound (Channel *);
- void outbound (Channel *);
-
- int enable (int value);
- int disable (int value);
-
- const Session_Id_t& session_id(void) const;
- void session_id (ACE_UINT32 );
-
- const ACE_INET_Addr *proxy_addr (void) const;
- void proxy_addr (ACE_INET_Addr *, int destroy = 0);
-
- const Addr &peer_addr (void) const;
- const Addr &local_addr (void) const;
-
- void peer_addr (const Addr &);
- void local_addr (const Addr &);
-
- /// invoke close on both streams, then remove self from session map
- int close (void);
-
- ACE_Event_Handler *handler (void);
- void handler (ACE_Event_Handler *);
- void reactor (ACE_Reactor *);
- void detach (Channel *);
-
- int sock_flags(void) const;
-
- private:
- /// Connected Stream ensures that the particular stream is
- /// connected to the proxy, if possible. The result is same as
- /// the reference passed in, so that it may be used inline for
- /// the inboundor outbound methods
-
- void reconnect ();
- void reconnect_i (Channel *);
-
- typedef ACE_Hash_Map_Manager<Session_Id_t, Session*,
- ACE_SYNCH_MUTEX> Session_Map;
- typedef ACE_Hash_Map_Entry <Session_Id_t, Session*> Map_Entry;
- static Session_Map session_map_;
- static ACE_UINT32 last_session_id_;
- static ACE_SYNCH_MUTEX session_id_lock_;
-
- ACE_INET_Addr *proxy_addr_;
- int destroy_proxy_addr_;
-
- Session_Id_t session_id_;
-
- Channel *inbound_;
- Channel *outbound_;
-
- Filter *inbound_filter_;
- Filter *outbound_filter_;
-
- int closed_;
-
- ACE_Event_Handler *handler_;
- ACE_Reactor *reactor_;
-
- ACE_Message_Queue<ACE_SYNCH> outbound_queue_;
- Stream * stream_;
- int sock_flags_;
- };
- }
-}
-
-ACE_END_VERSIONED_NAMESPACE_DECL
-
-#if defined (__ACE_INLINE__)
-#include "HTBP_Session.inl"
-#endif
-
-#include /**/ "ace/post.h"
-#endif /* ACE_HTBP_SESSION_H */