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

#ifndef __RemoteAgentIF_SK_H
#define __RemoteAgentIF_SK_H

#include "TaskServer.h"
#include "RemoteAgentIF.h"

class RemoteAgentIF_SK : public TaskServer {

  public:

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

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

  virtual ~RemoteAgentIF_SK();
  
  protected:

  // These methods must be defined in subclass
  virtual void setDebugLevel(short level) = 0;
  virtual short getDebugLevel() = 0;
  virtual void requestCommand(short mtype, short timeType, short period) = 0;
  virtual void poinkerCommand(RemoteAgentIF::poinkCommand command) = 0;
  virtual void reregisterServer() = 0;
  
  // Declare callbacks corresponding to each method
  Boolean setDebugLevelCallback(Request *request, int nReqBytes,
                 Reply **reply, int *nReplyBytes);

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

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

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

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

  
  // Message structure pointer for each method
  RemoteAgentIF::SetDebugLevelMsg *_setDebugLevelMsg;
  RemoteAgentIF::GetDebugLevelMsg *_getDebugLevelMsg;
  RemoteAgentIF::RequestCommandMsg *_requestCommandMsg;
  RemoteAgentIF::PoinkerCommandMsg *_poinkerCommandMsg;
  RemoteAgentIF::ReregisterServerMsg *_reregisterServerMsg;
  
  // 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

