#ifndef _NOTIFYLOGEXAMPLE_H
#define _NOTIFYLOGEXAMPLE_H

#include <DsLogAdminC.h>
#include <DsNotifyLogAdminC.h>
#include <CosNotificationC.h>
#include <CosNotifyCommC.h>
#include <CosNotifyCommS.h>
#include <CosNotifyChannelAdminC.h>
#include <CosNotifyFilterC.h>

#include <tao/corba.h>

#include <Common/ObjectAdapter.h>

#include "macro.h"

class NotifyLogExample : public POA_CosNotifyComm::PushSupplier
{
public:

  NotifyLogExample (CORBA::ORB_ptr orb, ObjectAdapter &adapter);

  DsNotifyLogAdmin::NotifyLog_ptr create (void);

  int init (void);

  void setFilter (DsNotifyLogAdmin::NotifyLog_ptr channel);

  void connect (DsNotifyLogAdmin::NotifyLog_ptr channel);

  void generate (void);

  void disconnect (void);

  virtual void disconnect_push_supplier (void);

  virtual void subscription_change (CosNotification::EventTypeSeq const &/*added*/,
                                    CosNotification::EventTypeSeq const &/*removed*/);

private:

  CORBA::ORB_var orbVar_;

  ObjectAdapter &adapter_;

  DsNotifyLogAdmin::NotifyLogFactory_var notifyLogFactoryVar_;

  CosNotifyChannelAdmin::ProxyPushConsumer_var proxyVar_;
};

#endif // _NOTIFYLOGEXAMPLE_H
