objectDeltaDataIStream.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "objectDeltaDataIStream.h"
00019
00020 #include "command.h"
00021 #include "commands.h"
00022
00023 #include <eq/base/idPool.h>
00024
00025 using namespace std;
00026
00027 namespace eq
00028 {
00029 namespace net
00030 {
00031 ObjectDeltaDataIStream::ObjectDeltaDataIStream()
00032 {
00033 }
00034
00035 ObjectDeltaDataIStream::~ObjectDeltaDataIStream()
00036 {
00037 }
00038
00039 bool ObjectDeltaDataIStream::getNextBuffer( const uint8_t** buffer,
00040 uint64_t* size )
00041 {
00042 const Command* command = getNextCommand();
00043 if( !command )
00044 return false;
00045
00046 switch( (*command)->command )
00047 {
00048 case CMD_OBJECT_DELTA_DATA:
00049 {
00050 const ObjectDeltaDataPacket* packet =
00051 command->getPacket< ObjectDeltaDataPacket >();
00052 *buffer = packet->delta;
00053 *size = packet->deltaSize;
00054 return true;
00055 }
00056
00057 case CMD_OBJECT_DELTA:
00058 {
00059 const ObjectDeltaPacket* packet =
00060 command->getPacket< ObjectDeltaPacket >();
00061 *buffer = packet->delta;
00062 *size = packet->deltaSize;
00063 return true;
00064 }
00065
00066 default:
00067 EQERROR << "Illegal command in command fifo: " << *command << endl;
00068 EQUNREACHABLE;
00069 }
00070
00071 return false;
00072 }
00073 }
00074 }