|
|
// // Packet.h // // Declaration of Packet class for sending messages across the // network. // // // Copyright (c) 1998, 2000 Silicon Graphics, Inc. All Rights Reserved. // // This program is free software; you can redistribute it and/or modify // it under the terms of version 2.1 of the GNU Lesser General Public // License as published by the Free Software Foundation. // // This program is distributed in the hope that it would be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // // Further, this software is distributed without any warranty that it is // free of the rightful claim of any third person regarding infringement // or the like. Any license provided herein, whether implied or // otherwise, applies only to this software file. Patent licenses, if // any, provided herein do not apply to combinations of this program // with other software, or any other product whatsoever. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, // USA. // // Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, // Mountain View, CA 94043, or http://www.sgi.com/ // // For further information regarding this notice, see: // http://oss.sgi.com/projects/GenInfo/NoticeExplan/ // #ifndef _SYSADM_PACKET_H #define _SYSADM_PACKET_H #ident "$Revision: 1.5 $" #include <sysadm/AttrBundle.h> BEGIN_NAMESPACE(sysadm); /** * Packet is the unit of communication when using a Connection. A * packet has a type, which represents a service, and a selector, * which represents an operation within that service. Most * information in a packet is contained in typed/key value pairs, * which Packet inherits from AttrBundle. * * A Packet can be used to send and receive arbitrary data using the * setData() and getData() methods. A packet that has data associated * with it via setData() cannot be transmitted across the network in a * byte-order independent manner, however, so this facility should * only be used when the data being transported can be interpreted * independently of byte-order. */ class Packet : public AttrBundle { public: /** * Constructor for creating a new packet from scratch. */ Packet(const String& type, const String& selector); /** * Constructor for creating a packet from a serialized attribute * bundle. */ Packet(const String& stream); /** * Set data for this packet. The data is not freed by the * packet's destructor. */ virtual void setData(void* data, size_t length); /** * Get the data for this packet. The return value is owned by the * creator of this packet, and should not be assumed to be valid * beyond the lifetime of this packet. */ virtual const void* getData() const; /** * Get the number of bytes of data. */ virtual size_t getDataLength() const; private: // Intentionally undefined. Packet(const Packet&); Packet& operator=(const Packet&); void* _data; size_t _dataLength; }; END_NAMESPACE(sysadm); #endif // _SYSADM_PACKET_H
Generated by: rusty@irem on Mon Sep 18 18:07:52 2000, using kdoc 2.0a36. |