#ifndef _ACCOUNTMANAGERIMPL_H
#define _ACCOUNTMANAGERIMPL_H

#include "BankS.h"
#include "BankC.h"

#include <tao/corba.h>

#include "AccountImpl.h"
#include "Util.h"

#include <ace/Vector_T.h>

typedef ACE_Vector<PortableServer::ServantBase_var> ServantsHolder;

#ifndef OPENFUSION_BANK_DLL
#define OPENFUSION_BANK_DLL
#endif

class OPENFUSION_BANK_DLL AccountManagerImpl
  : public POA_Bank::AccountManager
{
public:

  AccountManagerImpl (Util &util);

  virtual void createAccount (const char *name, CORBA::Float amount);

  virtual Bank::Account_ptr getAccount (const char *name);

private:

  Util &util_;

  ServantsHolder servants_;
};

#endif // _ACCOUNTMANAGERIMPL_H
