#ifndef _NEWSPUBLISHER_H
#define _NEWSPUBLISHER_H

#include <CosNotifyCommS.h>
#include <CosNotifyChannelAdminS.h>
#include <CosNotificationS.h>

#include "Notification/news/ChannelUtil.h"

class NewsPublisher : public POA_CosNotifyComm::StructuredPushSupplier
{
public:

  NewsPublisher (CORBA::ORB_ptr orb);

  void connectToChannel (void);

  void broadcast (void);

  void delay (void);

  virtual CosNotification::StructuredEvent *createNextEvent (void) = 0;

  virtual void disconnect_structured_push_supplier (void);

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

protected:

  CORBA::ORB_var orbVar_;

  ChannelUtil util_;

  CosNotifyComm::StructuredPushSupplier_var supplierVar_;

  CosNotifyChannelAdmin::StructuredProxyPushConsumer_var proxyVar_;

  int eventCount_;

  long maxDelay_;
};

#endif  // _NEWSPUBLISHER_H
