bool NoPointerData::hidratate(const ByteStream& stream) {
	if (stream.getTamanioOcupado()
			>= sizeof(entero) + sizeof(real) + sizeof(caracter)) {
		const byte_t* data = stream.obtenerStream();
		memcpy(&entero, data, sizeof(entero));
		data += sizeof(entero);
		memcpy(&real, data, sizeof(real));
		data += sizeof(real);
		memcpy(&caracter, data, sizeof(caracter));
		return true;
	}
	else {
		return false;
	}
}
size_t SharedMemoryBlock::write(const ByteStream& data) {
	size_t dataSize = data.getTamanioOcupado();
	if (blockSize < dataSize) {
		throw SharedMemoryException(SharedMemoryException::write_size);
	}
	try {
		lock.seizeExclusiveLock();
		memcpy(ptrData, &dataSize, sizeof(size_t));
		memcpy(ptrData + sizeof(size_t), data.obtenerStream(), dataSize);
		lock.releaseLock();
	}
	catch(const LockException &e) {
		throw SharedMemoryException(SharedMemoryException::write_lock);
	}
	return dataSize;
}