summaryrefslogtreecommitdiff
path: root/TAO/examples/Simple/bank/AccountManager_i.h
blob: 93e23917cb06ba32159ee6c9de3f3069b8953c17 (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
// -*- C++ -*-
// $Id$

// ============================================================================
//
// = LIBRARY
//    TAO/tests/Simple/Bank
//
// = FILENAME
//    AccountManager_i.h
//
// = DESCRIPTION
//    This class implements the Bank::AccountManager IDL interface.
//
// = AUTHOR
//    Vishal Kachroo  <vishal@cs.wustl.edu>
//
// ============================================================================

#if !defined (ACCOUNTMANAGER_I_H)
#define	ACCOUNTMANAGER_I_H

#include "ace/ACE.h"
#include "ace/OS.h"
#include "tao/TAO.h"
#include "BankS.h"
#include "Account_i.h"

class AccountManager_i : public POA_Bank::AccountManager
{
  // = TITLE
  //    Account Manager object implementation.
  //
  // = DESCRIPTION
  //    Implementation of a simple object that has two methods, one
  //    that returns an Account Interface and the other that shuts
  //    down the server.
public:
  // = Initialization and termination methods.
  AccountManager_i (void);
  // Constructor.

  ~AccountManager_i (void);
  // Destructor.

  virtual Bank::Account_ptr open (const char *name,
				  CORBA::Float initial_balance,
				  CORBA::Environment &_env);
  // Return the Account interface with the given name from the server.
  // Put the initial balance specified in the new account.

  virtual void close (Bank::Account_ptr,
		      CORBA::Environment &env);
  // Close the given account.

  virtual void shutdown (CORBA::Environment &env);
  // Shutdown the server.

  void orb (CORBA::ORB_ptr o);
  // Set the ORB pointer.

  void poa (PortableServer::POA_ptr poa);
  // Set the POA pointer.

  void set_orb_manager (TAO_ORB_Manager *orb_manager);
  // Set the ORB Manager.

  TAO_ORB_Manager *orb_manager_;
  // The ORB manager.

private:
  CORBA::ORB_var orb_;
  // ORB pointer.

  PortableServer::POA_ptr poa_;
  // POA pointer.

  //TAO_ORB_Manager orb_manager_;
  // The ORB manager.

  ACE_Hash_Map_Manager<ACE_CString,
                       Account_i *,
                       ACE_Null_Mutex> hash_map_;
  // Calls to <open> will create a new instance of <Account_i> and
  // bind into the hash map manager if <name> is unique, else it will
  // return a previously bound entry.
};

#endif /* ACCOUNTMANAGER_I_H */