コード例 #1
0
void DescriptionBuffer::copiarLectura(void *elemento, long posicion)
{
	Description *elem = (Description *) elemento;
	Description *dato = _datos[posicion];
	char* buffer = elem->getBuffer();
	dato->getBufferCopied(&buffer);
	elem->setBuffer(buffer,dato->getSize());//It is only for updating the _usedSize of the buffer
	elem->setId(dato->getId());
	return;
#ifdef _DEBUG
	 //printf("DescriptionBuffer::copiarLectura: imagen %d ; posicion %d\n",im->getId(),posicion);
#endif
}
コード例 #2
0
int DiVAClient::WaitForDescription(void** buffer)
{
	long longitud =0;
	char aux[512];
	memset(aux,0,512);
	//Espero la recepción de los parametros
	//Primero su longitud
	longitud = 0;
	long	x1 = 0;
	long	x = 0;
	long porRecibir =sizeof(long);
	long longTotal=0;

	x1 = DiVArecv(aux ,porRecibir);
	if(x1<0)
		return -1;
	memcpy(&longitud,aux,sizeof(long));
	longTotal=longTotal+x1;

	//Despues los parametros en si
	porRecibir =longitud;
	long x2= DiVArecv(aux ,porRecibir);
	if(x2<0)
		return -1;
	x=0;
	longTotal=longTotal+x2;
	long id;
	long bufferSize;
		sscanf(aux,"%d %d\n",&id,&bufferSize);

	
	//No sin antes almacenar el buffer de la imagen en ella
	//Primero recibimos la longitud del buffer
	porRecibir =sizeof(long);
	long	x3 = DiVArecv(aux ,porRecibir);
	if(x3<=0)
	{
		return -1;
	}
	x=0;
	longTotal=longTotal+x3;

	memcpy(&longitud,aux,sizeof(long));
	//Creo la instancia que devolveremos
	Description* pdesc = new Description(bufferSize);///////////////////////////////////////////////////////
	pdesc->setId(id);
	//Despues el buffer en si
	char * dataBuffer = (char*)pdesc->getBuffer();
	porRecibir =longitud;
	long	x4 = DiVArecv(dataBuffer ,porRecibir);
	if(x4<=0)
	{
		if(pdesc)
			delete pdesc;
		return -1;
	}
	x=0;
	*buffer = (void*)pdesc;
	longTotal=longTotal+x4;
	return longTotal;
}