summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/HTIOP/HTIOP_Connection_Handler.h
blob: daa12b9f6eafc0b457c9a134cdebb29e10c4537d (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
// This may look like C, but it's really -*- C++ -*-

// ===================================================================
/**
 *  @file   HTIOP_Connection_Handler.h
 *
 *  $Id$
 *
 *  @author Priyanka Gontla <gontla_p@ociweb.com>
 */
// ===================================================================

#ifndef HTIOP_CONNECTION_HANDLER_H
#define HTIOP_CONNECTION_HANDLER_H
#include /**/ "ace/pre.h"

#include "HTIOP_Transport.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
#pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */


#include "tao/corbafwd.h"
#include "tao/Wait_Strategy.h"
#include "tao/Connection_Handler.h"

#include "ace/Acceptor.h"
#include "ace/Reactor.h"
#include "ace/Svc_Handler.h"


// Forward Decls
class TAO_Pluggable_Messaging;

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

namespace TAO
{
  namespace HTIOP
  {

    /**
     * @class HTIOP_Connection_Handler
     *
     * @brief  Handles requests on a single connection.
     *
     * The Connection handler which is common for the Acceptor and
     * the Connector
     */


    class HTIOP_Export Connection_Handler : public SVC_HANDLER,
                                            public TAO_Connection_Handler
    {

    public:

      Connection_Handler (ACE_Thread_Manager* t = 0);

      /// Constructor. <arg> parameter is used by the Acceptor to pass the
      /// protocol configuration properties for this connection.
      Connection_Handler (TAO_ORB_Core *orb_core,
                          CORBA::Boolean flag);

      /// Destructor.
      ~Connection_Handler (void);

      /// Called by the <Strategy_Acceptor> when the handler is completely
      /// connected.  Argument is unused.
      virtual int open (void *);

      virtual int open_handler (void *);

#if 0  // for now, an active version of HTIOP is not defined, but the
       // methods are kept here as a place-holder.

      /// = Active object activation method.
      virtual int activate (long flags = THR_NEW_LWP,
                            int n_threads = 1,
                            int force_active = 0,
                            long priority = ACE_DEFAULT_THREAD_PRIORITY,
                            int grp_id = -1,
                            ACE_Task_Base *task = 0,
                            ACE_hthread_t thread_handles[] = 0,
                            void *stack[] = 0,
                            size_t stack_size[] = 0,
                            ACE_thread_t  thread_names[] = 0);


      /// Only used when the handler is turned into an active object by
      /// calling <activate>.  This serves as the event loop in such cases.
      virtual int svc (void);
#endif /* 0 */

      //@{
      /** @name Event Handler overloads
       */
      virtual int resume_handler (void);
      virtual int close_connection (void);
      virtual int handle_input (ACE_HANDLE);
      virtual int handle_output (ACE_HANDLE);
      virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask);
      virtual int close (u_long = 0);
      //@}

      /// Add ourselves to Cache.
      int add_transport_to_cache (void);

      /// Process the <listen_list>
      int process_listen_point_list (::HTIOP::ListenPointList &listen_list);

      ///Set the Diff-Serv codepoint if the Policy dicates the setting of
      ///Network Priority This method is a no-op, but implemented to
      ///satisfy the base class interface.
      int set_dscp_codepoint (CORBA::Boolean set_network_priority);


      //@{
      /**
       * @name TAO_Connection Handler overloads
       */
      virtual int release_os_resources (void);
      //@}

    private:
    };
  }
}
#if defined (__ACE_INLINE__)
#include "HTIOP_Connection_Handler.i"
#endif /* __ACE_INLINE__ */

#include /**/ "ace/post.h"
#endif /* HTIOP_CONNECTION_HANDLER_H */