#ifndef CONSUMER_H
#define CONSUMER_H

#include "Consumer_Handler.h"

class Event_Comm_i;

//ACE_RCSID(Consumer, consumer, "consumer.cpp,v 1.9 1998/11/08 03:07:06 pradeep Exp")

class Consumer
{
  // = TITLE
  //    Consumer driver for the Publish/Subscribe example.
  //
  // = DESCRIPTION
  //    The Consumer holds the <Consumer_Input_Handler> and
  //    <Consumer_Handler> objects.
public:
 
  int isShutdown();

  enum initializationState {NOT_STARTED, IN_PROGRESS, COMPLETE, FAILED};
 
  // Initialization state
  initializationState initState();

  // = Initialization and termination methods.
  Consumer (void);
  // Constructor.

  ~Consumer (void);
  // Destructor.

  int initialize (int argc, char *argv[], Event_Comm_i *receiver);
  // Initialization method.

  int run (void);
  // Execute the consumer;

  virtual void close (BOOL consumerinitiated);
  // Shutdown the consumer.  

private:

  // Flag to indiciate init state
  initializationState init_;

  Consumer_Handler ch_;
  // Handler for CORBA Consumer.

  ACE_Thread_Manager thr_mgr;
  // Thread manager
};

#endif