summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Log/EventLogFactory_i.h
blob: 8c708aeefed54a2f900f9b8194477ab5c3e8a8be (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
136
137
138
139
140
141
142
143
144
145
146
147
/* -*- C++ -*- */

//=============================================================================
/**
 *  @file   EventLogFactory_i.h
 *
 *  $Id$
 *
 *  Implementation of the DsEventLogAdmin::EventLogFactory interface.
 *
 *
 *  @author Rob Ruff <rruff@scires.com>
 *  @David A. Hanvey <d.hanvey@qub.ac.uk>
 *  
 */
//=============================================================================

#ifndef TAO_TLS_EVENTLOGFACTORY_I_H
#define TAO_TLS_EVENTLOGFACTORY_I_H

#include /**/ "ace/pre.h"

#include "orbsvcs/orbsvcs/DsEventLogAdminS.h"

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

#include "orbsvcs/orbsvcs/DsLogAdminS.h"
#include "orbsvcs/orbsvcs/Log/LogMgr_i.h"
#include "orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h"
#include "orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h"
#include "orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h"
#include "EventLog_i.h"

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

class TAO_EventLog_i;
class TAO_EventLogNotification;

/**
 * @class TAO_EventLogFactory_i
 *
 * @brief The EventLogFactory is a factory that is used to create EventLogs which are event-aware.
 */
class TAO_EventLog_Export TAO_EventLogFactory_i :
  public POA_DsEventLogAdmin::EventLogFactory,
  public TAO_LogMgr_i

{
public:

  //= Initialization and termination code.

  /// Constructor.
  TAO_EventLogFactory_i (void);

  /// Destructor.
  ~TAO_EventLogFactory_i ();

  /// Initialise the EventChannel and obtain a 
  /// pointer to it.
  CosEventChannelAdmin::EventChannel_ptr
    init (PortableServer::POA_ptr poa
              ACE_ENV_ARG_DECL);

  /// Activate this servant with the POA passed in.
  DsEventLogAdmin::EventLogFactory_ptr
    activate (PortableServer::POA_ptr poa
              ACE_ENV_ARG_DECL);

  /// Used to create an EventLog.
  DsEventLogAdmin::EventLog_ptr create (
        DsLogAdmin::LogFullActionType full_action,
        CORBA::ULongLong max_size,
        const DsLogAdmin::CapacityAlarmThresholdList & thresholds,
        DsLogAdmin::LogId_out id
        ACE_ENV_ARG_DECL
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        DsLogAdmin::InvalidLogFullAction,
        DsLogAdmin::InvalidThreshold
      ));

  /// Same as create (), but allows clients to specify the id.
  DsEventLogAdmin::EventLog_ptr create_with_id (
        DsLogAdmin::LogId id,
        DsLogAdmin::LogFullActionType full_action,
        CORBA::ULongLong max_size,
        const DsLogAdmin::CapacityAlarmThresholdList & thresholds
        ACE_ENV_ARG_DECL
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        DsLogAdmin::LogIdAlreadyExists,
        DsLogAdmin::InvalidLogFullAction,
        DsLogAdmin::InvalidThreshold
      ));

  // = Implementation of the CosEventChannelAdmin::ConsumerAdmin methods.
  CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_push_supplier (
        ACE_ENV_SINGLE_ARG_DECL
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

  CosEventChannelAdmin::ProxyPullSupplier_ptr obtain_pull_supplier (
        ACE_ENV_SINGLE_ARG_DECL
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

protected:

  /// Our object ref. after <active>ation.
  DsLogAdmin::LogMgr_var log_mgr_;
 
  /// The event channel used for log generated events.
  TAO_CEC_EventChannel *impl;

  /// The object used for log generated events.
  TAO_EventLogNotification* notifier_;

  /// EventChannel used to obtain the ConsumerAdmin.
  CosEventChannelAdmin::EventChannel_var event_channel_;
 
  /// The ConsumerAdmin that the EventLogFactory supports.
  CosEventChannelAdmin::ConsumerAdmin_var consumer_admin_;

  /// POA.
  PortableServer::POA_var poa_;
};

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

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