summaryrefslogtreecommitdiff
path: root/modules/CIAO/connectors/dds4ccm/impl/ndds/Connector_T.h
blob: 1975e34fb0093cd31ef54a83836b8bc812abb999 (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
/**
 * @author Marcel Smit <msmit@remedy.nl>
 *
 * $Id$
 *
 * Wrapper facade for NDDS.
 */
#ifndef CONNECTOR_T_H_
#define CONNECTOR_T_H_

#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
#include "ace/Copy_Disabled.h"

template <typename DDS_TYPE, typename CCM_TYPE>
class Connector_T
  : public virtual CCM_TYPE::base_type,
    public virtual ::CORBA::LocalObject,
    private virtual ACE_Copy_Disabled
{
public:
  Connector_T (const char * topic_name);
  virtual ~Connector_T (void);

  virtual char *topic_name (void);

  virtual void topic_name (const char * topic_name);

  virtual ::DDS::StringSeq *key_fields (void);

  virtual ::DDS::DomainId_t domain_id (void);

  virtual void domain_id (::DDS::DomainId_t domain_id);

  virtual char *qos_profile (void);

  virtual void qos_profile (const char * qos_profile);

  virtual typename CCM_TYPE::writer_type::_ptr_type get_info_in_data (void);

  virtual ::DDS::CCM_DataWriter_ptr get_info_in_dds_entity (void);

  virtual typename CCM_TYPE::updater_type::_ptr_type get_info_update_data (void);

  virtual typename CCM_TYPE::getter_type::_ptr_type get_info_out_get_data (void);

  virtual typename CCM_TYPE::reader_type::_ptr_type get_info_out_data (void);

  virtual ::CCM_DDS::CCM_ListenerControl_ptr get_info_out_data_control (void);

  virtual ::DDS::CCM_DataReader_ptr get_info_out_dds_entity (void);

  virtual void set_session_context (::Components::SessionContext_ptr ctx);

  virtual void configuration_complete (void);

  virtual void ccm_activate (void);
  virtual void ccm_passivate (void);
  virtual void ccm_remove (void);

private:
  typename CCM_TYPE::context_type::_var_type context_;

  // Default stuff
  void configure_default_domain_ (void);
  bool default_domain_configured_;
  ::DDS::DomainParticipantFactory_var domain_factory_;
  ::DDS::DomainParticipant_var domain_;

  // @from DDS_Base
  DDS::DomainId_t domain_id_;
  CORBA::String_var qos_profile_;

  // @from DDS_TopicBase
  void configure_default_topic_ (void);
  bool default_topic_configured_;
  ::DDS::Topic_var topic_;
  CORBA::String_var topic_name_;
  DDS::StringSeq key_fields_;

  // @from DDS_Write for
  void configure_port_info_in_ (void);
  bool __info_in_configured_;
  ::DDS::Publisher_var __info_in_publisher_;
  ::DDS::CCM_DataWriter_var __info_in_datawriter_;
  typename CCM_TYPE::writer_type::_var_type __info_in_writer_;

  // @from DDS_RawListen
  void configure_port_info_out_ (bool create_getter);
  bool __info_out_configured_;
  ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> __info_out_rawlistener_enabled_;
  ::DDS::Subscriber_var __info_out_subscriber_;
  ::DDS::DataReader_var __info_out_datareader_;
  ::DDS::DataReaderListener_var __info_out_datareaderlistener;
  ::DDS::DataWriterListener_var __info_out_datawriterlistener;

  // @from DDS_Getter
  bool __info_get_configured_;
  ::DDS::DataReader_var __info_get_datareader_;
};

  template <typename BASE_TYPE,
            typename SEQ_TYPE,
            typename WRITER_TYPE,
            typename UPDATER_TYPE,
            typename GETTER_TYPE,
            typename READER_TYPE,
            typename CONTEXT_TYPE,
            typename RAWLISTENER_TYPE,
            typename CONNECTORSTATUSLISTENER_TYPE
  >

  struct Connector_Traits
  {
    typedef BASE_TYPE base_type;
    typedef SEQ_TYPE seq_type;
    typedef WRITER_TYPE writer_type;
    typedef UPDATER_TYPE updater_type;
    typedef GETTER_TYPE getter_type;
    typedef READER_TYPE reader_type;
    typedef CONTEXT_TYPE context_type;
    typedef RAWLISTENER_TYPE rawlistener_type;
    typedef CONNECTORSTATUSLISTENER_TYPE connectorstatuslistener_type;
  };


#include "dds4ccm/impl/ndds/Connector_T.cpp"

#endif /* CONNECTOR_T_H_ */