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

//=============================================================================
/**
 *  @file    HTIOP_Connector.h
 *
 *  $Id$
 *
 *  HTIOP specific connector processing
 *
 *
 *  @author Priyanka Gontla <gontla_p@ociweb.com>
 */
//=============================================================================


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

#include "tao/Connector_Impl.h"

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

#include "HTIOP_Connection_Handler.h"

#include "tao/Transport_Connector.h"

#include "ace/SOCK_Connector.h"
#include "ace/Connector.h"
#include "ace/OS.h"


namespace ACE
{
  namespace HTBP
  {
    class Environment;
  }
}

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

namespace TAO
{
  namespace HTIOP
  {
    class Endpoint;

    /**
     * @class HTIOP_Connector
     *
     * @brief HTIOP-specific Connector bridge for pluggable protocols.
     *
     * Concrete instance of the TAO_Connector class.  Responsible
     * for establishing a connection with a server and is called from the
     * Connector_Registory.
     */
    class HTIOP_Export Connector : public TAO_Connector
    {
    public:
      typedef TAO_Connect_Concurrency_Strategy<Connection_Handler>
      CONNECT_CONCURRENCY_STRATEGY;

      typedef TAO_Connect_Creation_Strategy<Connection_Handler>
      CONNECT_CREATION_STRATEGY;

      /// Initialization and termination methods.
      /// Constructor.
      /// {@
      Connector (ACE::HTBP::Environment *ht_env);

      /// Destructor.
      ~Connector (void);

      /// @}


      /// The TAO_Connector methods, please check the documentation on
      /// Transport_Connector.h
      /// {@
      int open (TAO_ORB_Core *orb_core);
      int close (void);

      TAO_Profile *create_profile (TAO_InputCDR& cdr);

      virtual int check_prefix (const char *endpoint);

      virtual char object_key_delimiter (void) const;
      /// @}

    protected:

      // = The TAO_Connector methods, please check the documentation on
      // Transport_Connector.h
      int set_validate_endpoint (TAO_Endpoint *ep);

      TAO_Transport *make_connection (TAO::Profile_Transport_Resolver *r,
                                      TAO_Transport_Descriptor_Interface &desc,
                                      ACE_Time_Value *timeout = 0);


      /// More TAO_Connector methods, please check the documentation on
      /// Transport_Connector.h
      virtual TAO_Profile *make_profile (ACE_ENV_SINGLE_ARG_DECL);

      /// Cancel the passed cvs handler from the connector
      /// Its not clear what it means to cancel in HTIOP, since there's no
      /// base connector.
      virtual int cancel_svc_handler (TAO_Connection_Handler * svc_handler);

    private:

      /// Return the remote endpoint, a helper function
      Endpoint *remote_endpoint (TAO_Endpoint *ep);

      /// Our creation strategy
      CONNECT_CREATION_STRATEGY *connect_creation_strategy_;

      /// Our activation strategy
      CONNECT_CONCURRENCY_STRATEGY *concurrency_strategy_;

      /// reference to the configuration parameters
      ACE::HTBP::Environment *ht_env_;
    };
  }
}
#include /**/ "ace/post.h"
#endif  /* HTIOP_CONNECTOR_H */