/* Network-Integrated Multimedia Middleware (NMM)
 * http://www.motama.com/nmm.html
 *  
 * Copyright (C) 2006-2007
 * Motama GmbH, Saarbruecken, Germany
 * http://www.motama.com
 *  
 * This file is part of NMM. 
 * 
 * NMM is free software; you can redistribute it and/or modify it    
 * under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; only version 2 of the License.      
 * 
 * NMM is distributed in the hope that it will be useful, but WITHOUT 
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 
 * License for more details.  
 * 
 * You should have received a copy of the GNU General Public License 
 * along with NMM; if not, write to the Free Software Foundation,    
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 */

#ifndef _NMM_TRANSFERBUFFER2_HPP_
#define _NMM_TRANSFERBUFFER2_HPP_ _NMM_TRANSFERBUFFER2_HPP_

#include "nmm/nmm_prefix.hpp"

#include "nmm/comm/serialize/Value.hpp"
#include "nmm/multimedia/StateTransitionFailedException.hpp"
#include "nmm/comm/serialize/InvalidTypeException.hpp"
#include "nmm/comm/serialize/TValueConstructor.hpp"
//#include "nmm/base/serialize/ComplexValue.hpp"

namespace NMM 
{
  class TransferBuffer2
  {
  private:
    size_t size;           ///< The size in bytes of this buffer.
    char* data;            ///< The actual data field.


  public:
    TransferBuffer2();

    TransferBuffer2(const TransferBuffer2& buf);

    virtual TransferBuffer2* copy() const;

    const TransferBuffer2& operator=(const TransferBuffer2& buf);

    virtual ~TransferBuffer2();

    void setData(char* d, size_t s); 
  
    void setData(const char* d, size_t s);

    char* getData();

    const char* getData() const;

    size_t getSize() const;

    
  };

  IValueStream& operator>>(IValueStream& i_stream, TransferBuffer2& my_struct);
  OValueStream& operator<<(OValueStream& o_stream, const TransferBuffer2& my_struct);


}

#include "nmm/nmm_suffix.hpp"

#endif
