/*
 * Copyright (c) 2001-2003 The Trustees of Indiana University.  
 *                         All rights reserved.
 * Copyright (c) 1998-2001 University of Notre Dame. 
 *                         All rights reserved.
 * Copyright (c) 1994-1998 The Ohio State University.  
 *                         All rights reserved.
 * 
 * This file is part of the LAM/MPI software package.  For license
 * information, see the LICENSE file in the top level directory of the
 * LAM/MPI source distribution.
 * 
 * $HEADER$
 *
 * $Id: longbuf_mgmt.h,v 6.5 2003/02/04 00:24:17 jsquyres Exp $
 *
 *	Function:	- makes long and short packets to place on host queues
 */

#ifndef _LAM_LONGBUF_MGMT_H_
#define _LAM_LONGBUF_MGMT_H_

#include <lam_config.h>

#if LAM_WANT_IMPI

#include <impid-cc.h>
#include <impi-defs.h>


/*
 * Use a class for this so that we can get a destructor for free; it
 * is guaranteed to clean itself up (and all associated data) when it
 * gets destroyed.  
 */
class longbuf_mgmt {
public:
  inline longbuf_mgmt(char* _buffer, IMPI_Uint8 _received, IMPI_Packet& _pk)
    : buffer(_buffer), received(_received), pk(_pk)
    {}
  inline ~longbuf_mgmt()
    {
      delete[] buffer;
#if LAM_IMPID_DEBUG
      buffer = 0;
      received = (IMPI_Uint8) 0;
      memset(&pk, 0, sizeof(pk));
#endif
  }

  inline char*        get_buffer() const { return buffer; }
  inline IMPI_Uint8   get_received() const { return received; }
  inline void         inc_received(IMPI_Uint4 size)
    { received += (IMPI_Uint8) size; }
  inline IMPI_Packet* get_packet() { return &pk; }

protected:
  char        *buffer;
  IMPI_Uint8  received;

  IMPI_Packet pk;

private:
};

#endif /* LAM_WANT_IMPI */
#endif /* _LAM_LONGBUF_MGMT_H_ */



syntax highlighted by Code2HTML, v. 0.9.1