/*
********************************************************
Copyright 2000 MBARI.
MBARI Proprietary Information. All rights reserved.
NOTE: This file is automatically generated.
DO NOT MODIFY.
********************************************************
*/

#ifndef __DropWeightIF_SK_H
#define __DropWeightIF_SK_H

#include "TaskServer.h"
#include "DropWeightIF.h"

class DropWeightIF_SK : public TaskServer {

  public:

  // Constructor for server with default name
  DropWeightIF_SK();

  // Constructor for server with specific name
  DropWeightIF_SK(const char *serverName);

  virtual ~DropWeightIF_SK();
  
  protected:

  // These methods must be defined in subclass
  virtual void release() = 0;
  virtual Boolean released() = 0;
  virtual short watchdogTimeout() = 0;
  virtual short burnwireTimeout() = 0;
  virtual Boolean ACommsDN() = 0;
  virtual short DW_out() = 0;
  virtual void resetWatchdog() = 0;
  virtual void resetRelayAndCounters() = 0;
  virtual void resetRelayAndPIC() = 0;
  virtual void fireGulper() = 0;
  
  // Declare callbacks corresponding to each method
  Boolean releaseCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean releasedCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean watchdogTimeoutCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean burnwireTimeoutCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean ACommsDNCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean DW_outCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean resetWatchdogCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean resetRelayAndCountersCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean resetRelayAndPICCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  Boolean fireGulperCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

  
  // Message structure pointer for each method
  DropWeightIF::ReleaseMsg *_releaseMsg;
  DropWeightIF::ReleasedMsg *_releasedMsg;
  DropWeightIF::WatchdogTimeoutMsg *_watchdogTimeoutMsg;
  DropWeightIF::BurnwireTimeoutMsg *_burnwireTimeoutMsg;
  DropWeightIF::ACommsDNMsg *_ACommsDNMsg;
  DropWeightIF::DW_outMsg *_DW_outMsg;
  DropWeightIF::ResetWatchdogMsg *_resetWatchdogMsg;
  DropWeightIF::ResetRelayAndCountersMsg *_resetRelayAndCountersMsg;
  DropWeightIF::ResetRelayAndPICMsg *_resetRelayAndPICMsg;
  DropWeightIF::FireGulperMsg *_fireGulperMsg;
  
  // Determine max bytes required for message buffer
  virtual size_t maxRequestBytes();

  // Allocate buffer for messages, set pointers, etc
  virtual void allocateBuffers();

  private:

  // Initializer method called by constructors
  int init();

};

#endif

