#ifndef HALLO_IMPL_H
#define HALLO_IMPL_H

#include <string>
#include <Hallo_skel.h>  // header from IDL module

#ifdef HAVE_STD_IOSTREAM
using namespace std;
#endif


class Hallo_impl: public POA_Hallo, public PortableServer::RefCountServantBase {

public:
  Hallo_impl(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, const char* pName);

  // business functions
  virtual void sayHi() throw (CORBA::SystemException);
  virtual void shutdown() throw (CORBA::SystemException);

  // getter for the attribute
  virtual char* name() throw (CORBA::SystemException);

  // important for explicit object activation with own POAs
  virtual PortableServer::POA_ptr _default_POA();

private:
  CORBA::ORB_var orb_;
  PortableServer::POA_var poa_;
  string m_strName;  /* the readonly attribute */

};

#endif

