#ifndef _CHANNELUTIL_H
#define _CHANNELUTIL_H

#include "MailS.h"
#include <CosNotifyChannelAdminS.h>
#include <CosNotificationS.h>

class OPENFUSION_MAIL_DLL ChannelUtil
{
public:

  ChannelUtil (CORBA::ORB_ptr orb);

  CosNotifyChannelAdmin::EventChannel_ptr getChannel (void);

  PortableServer::POA_ptr getRootPoa (void);

  PortableServer::POA_ptr getDefaultTransientPoa (void);

  PortableServer::POA_ptr getDefaultPersistentPoa (void);

  PortableServer::POA_ptr createTransientPoa (const char *name);

  PortableServer::POA_ptr createPersistentPoa (const char *name);

  CORBA::Boolean fileExists (const char *filename);

  void deleteFile (const char *filename);

  void writeIOR (const char *filename, CORBA::Object_ptr obj);

  CORBA::Object_ptr readIOR (const char *filename);

private:

  PortableServer::POA_ptr createPoa (const char *name, CORBA::Boolean persistent);

  CORBA::ORB_var orbVar_;

  PortableServer::POA_var rootPoaVar_;

  PortableServer::POA_var transientPoaVar_;

  PortableServer::POA_var persistentPoaVar_;

  CosNotifyChannelAdmin::EventChannelFactory_var channelFactoryVar_;

  CosNotifyChannelAdmin::EventChannel_var channelVar_;
};
#endif  // _CHANNELUTIL_H
