blob: f02fb0a9ce8df4307d0349e5fc447c0ece378697 (
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
|
// -*- C++ -*-
#ifndef FACTORY_H
#define FACTORY_H
#include "Factory_Map.h"
#include "orbsvcs/PortableGroupS.h"
#include "ace/Null_Mutex.h"
#if defined (_MSC_VER)
# pragma warning(push)
#endif /* _MSC_VER */
/// Implement the PortableGroup::GenericFactory Interface.
class Factory
: public virtual POA_PortableGroup::GenericFactory
{
public:
/// Constructor
Factory ();
/// creates a Test::Simple servant reference.
/// This reference is then passed as a FactoryInfos property
/// when the LoadManager creates the object group.
/// In this way, LoadManager can decide when to create the object group
/// members.
virtual CORBA::Object_ptr create_object (
const char * type_id,
const PortableGroup::Criteria & the_criteria,
PortableGroup::GenericFactory::FactoryCreationId_out
factory_creation_id);
/// The LoadManager is passed the FactoryCreationId, it received
/// from the create_object () call.
/// The LoadManager destroys the factory object created.
virtual void delete_object (
const PortableGroup::GenericFactory::FactoryCreationId &
factory_creation_id);
private:
/// The factory creation id.
CORBA::ULong fcid_;
/// Table that maps FactoryCreationId to Factory_Node
Factory_Map factory_map_;
/// The object id of the servant we are creating.
PortableServer::ObjectId_var oid_;
/// The POA with which we register the servant.
PortableServer::POA_var poa_;
/// Lock used to synchronize access to the factory creation id
TAO_SYNCH_MUTEX lock_;
};
#if defined(_MSC_VER)
# pragma warning(pop)
#endif /* _MSC_VER */
#endif /* FACTORY_H */
|