Esempio n. 1
0
void* sendPackets(void* data) {
   // Send Header
   Header* h = initHeader(filename, "dave");
   char* h_s = serializeHeader(h);
   sendto(sock, h_s, strlen(h_s), 0, (struct sockaddr *) &servAddr, sizeof(servAddr));

   // Send the packets
   for (;;) {
      if (!isEmpty(ph)) {
         char *s;
         Packet* p = malloc(sizeof(Packet));

         getLock(ph);
         p = removePacket(ph, p); // Get packet
         unlock(ph);
         s = serializePacket(p); // Convert into sendable char array

         sendto(sock, s, strlen(s), 0, (struct sockaddr *) &servAddr, sizeof(servAddr));
         if (p->fragment == DUMMY_FRAG_NUM) {
            printf("Done Sending!!\n");
            pthread_exit(0);
         }
      }

   }
}
Esempio n. 2
0
void
MissingFramePacket::serialize(OutputStream& outputStream) throw (SerializationException&) {
    UInt bodySize = getBodySerializationSize();
    m_packetHeader->setMessageSize(bodySize);
    serializeHeader(outputStream);
    serializeBody(outputStream);
}
void
GetPartitionRequestPacket::serialize(OutputStream& outputStream) throw (SerializationException&) {
    UInt bodySize = getBodySerializationSize();
    ((MedusaHeader*) m_packetHeader)->m_messageSize = bodySize;
    serializeHeader(outputStream);
    serializeBody(outputStream);
}
RequestCoordinatorPacket::serialize(OutputStream& outputStream) THROW(SerializationException&) {
    UInt bodySize = getBodySerializationSize();
    ((SthenoHeader*) m_packetHeader)->m_messageSize = bodySize;
    serializeHeader(outputStream);
    //ACE_DEBUG((LM_DEBUG,ACE_TEXT("(%t|%T)RequestCellPacket::serialize():serialized header!len=%lu\n", outputStream.total_length());
    serializeBody(outputStream);
    //ACE_DEBUG((LM_DEBUG,ACE_TEXT("(%t|%T)RequestCellPacket::serialize():serialized body!len=%lu\n", outputStream.total_length());
}
ssize_t SyncRequestPacket::serializePacket(uint8_t* data,
                                           uint32_t length) {
    ssize_t offset = serializeHeader(data, length);
    if (offset > 0) {
        SERIALIZE_INT64(clientTxLocalTime);
    }
    return offset;
}
void PacketGS_PlayerLogin::serialize(Crypt *pCrypt, CRC_32 *pCRC)
{
    ByteBuffer internalBuffer;
    internalBuffer << m_playerID;
    
    serializeHeader(pCrypt, internalBuffer.size(), pCRC->ComputeCRC32(internalBuffer.contents(), internalBuffer.size()));
    
    m_pBuffer->append(internalBuffer);
}
ssize_t MasterAnnouncementPacket::serializePacket(uint8_t* data,
                                                  uint32_t length) {
    ssize_t offset = serializeHeader(data, length);
    if (offset > 0) {
        uint64_t packed = packDeviceID(deviceID, devicePriority);
        SERIALIZE_INT64(packed);
    }
    return offset;
}
ssize_t WhoIsMasterRequestPacket::serializePacket(uint8_t* data,
                                                  uint32_t length) {
    ssize_t offset = serializeHeader(data, length);
    if (offset > 0) {
        uint64_t packed = packDeviceID(senderDeviceID, senderDevicePriority);
        SERIALIZE_INT64(packed);
    }
    return offset;
}
void PacketGS_SaveCustomData::serialize(Crypt *pCrypt, CRC_32 *pCRC)
{
    ByteBuffer internalBuffer;
    internalBuffer << m_key;
    internalBuffer.append(m_rData);
    
    serializeHeader(pCrypt, internalBuffer.size(), pCRC->ComputeCRC32(internalBuffer.contents(), internalBuffer.size()));
    
    m_pBuffer->append(internalBuffer);
}
ssize_t SyncResponsePacket::serializePacket(uint8_t* data,
                                            uint32_t length) {
    ssize_t offset = serializeHeader(data, length);
    if (offset > 0) {
        SERIALIZE_INT64(clientTxLocalTime);
        SERIALIZE_INT64(masterRxCommonTime);
        SERIALIZE_INT64(masterTxCommonTime);
        SERIALIZE_INT32(nak);
    }
    return offset;
}
void
P3DiscoveryQueryReplyPacket::serialize(OutputStream& outputStream)
throw (SerializationException&) {
    //printf("P3DiscoveryQueryReplyPacket::serialize 1\n");
    UInt bodySize = getBodySerializationSize();
    //printf("P3DiscoveryQueryReplyPacket::serialize 2\n");
    m_packetHeader->setMessageSize(bodySize);
    //printf("P3DiscoveryQueryReplyPacket::serialize 3\n");
    serializeHeader(outputStream);
    //printf("P3DiscoveryQueryReplyPacket::serialize 4\n");
    serializeBody(outputStream);
    //printf("P3DiscoveryQueryReplyPacket::serialize 5\n");
}
Esempio n. 12
0
/** 
Converts the info message into a stream of bytes to memory pointed to by destinationPtr
Number of bytes streamed is equal to getSizeOfInfoMessage() 
@param im the infoMessage to serialize
@param destinationPtr where to copy the stream of bytes to
@pre destinationPtr points to a region of memory at least getSizeOfInfoMessage() bytes in size
*/
void serializeInfoMessage(struct infoMessage* im, unsigned char* destinationPtr)
{  
  serializeHeader((&(im->header)), destinationPtr);
  destinationPtr += (HEADER_SIZE);
  *destinationPtr++ = im->deviceType;
  *destinationPtr++ = im->numParameters;
  
  int i;
    for (i=0; i < im->numParameters; i++)  //for each KVP:
  {
    *destinationPtr++ = im->kvps[i].oid;            //object identifier
    *destinationPtr++ = (im->kvps[i].value) & 0xFF;   //LSB of value
    *destinationPtr++ = (im->kvps[i].value) >> 8;          //MSB of value
  }
}
Esempio n. 13
0
void
SthenoPacket::serialize(OutputStream& outputStream) throw (SerializationException&) {
    //ACE_DEBUG((LM_DEBUG,
    //ACE_TEXT("(%T) SthenoPacket::serialize()!\n")));
    UInt bodySize = getBodySerializationSize();
    //ACE_DEBUG((LM_DEBUG,
    //ACE_TEXT("(%T) SthenoPacket::serialize(): after body size=%u!\n"), bodySize));
    getPacketHeader()->m_messageSize = bodySize;
    /*ACE_DEBUG((LM_DEBUG,
        ACE_TEXT("(%T) SthenoPacket::serialize():serializing header!\n")));*/
    serializeHeader(outputStream);

    //ACE_DEBUG((LM_DEBUG,ACE_TEXT("(%t|%T)SthenoPacket::serialize():serialized header len=%lu!\n", outputStream.total_length());
    serializeBody(outputStream);
    //ACE_DEBUG((LM_DEBUG,ACE_TEXT("(%t|%T)SthenoPacket::serialize():serialized body!len=%lu\n", outputStream.total_length());
}
Esempio n. 14
0
UInt8 DeltaThetaVector::serialize(UInt8* pBuf, UInt8 size)
{
  UInt8 ret = 0;

  if (size >= DELTA_THETA_VECTOR_STATIC_SIZE)
  {
    serializeHeader(pBuf, size);
    putFloat32(&pBuf[DELTA_THETA_VECTOR_X_OFFSET], m_x);
    putFloat32(&pBuf[DELTA_THETA_VECTOR_Y_OFFSET], m_y);
    putFloat32(&pBuf[DELTA_THETA_VECTOR_Z_OFFSET], m_z);

    ret = m_fieldLength;
  }

  return ret;
}
Esempio n. 15
0
    uint16_t
    Packet::serialize(const Message* msg, uint8_t* bfr, uint16_t size)
    {
      unsigned total = msg->getSerializationSize();
      if (total > DUNE_IMC_CONST_MAX_SIZE)
        throw InvalidMessageSize(total);

      uint16_t n = total;
      uint8_t* ptr = bfr;

      if (size < n)
        throw BufferTooShort();

      ptr += serializeHeader(msg, bfr, size);
      msg->serializeFields(ptr);

      uint16_t crc = Algorithms::CRC16::compute(bfr, n - DUNE_IMC_CONST_FOOTER_SIZE);
      IMC::serialize(crc, (bfr + (n - DUNE_IMC_CONST_FOOTER_SIZE)));

      return n;
    }
Esempio n. 16
0
		/**
		 * The object is serialized using the messageCallack.
		 * @note This function may return immediately.
		 */
		 virtual BareMessage * isend(const void * object, const void * user_ptr = nullptr ){
			uint64_t msg_size = headerSize() + messageCallback->serializeMessageLen(object);
			char * payload = (char*) malloc(msg_size);

			assert(payload);

			uint64_t pos = 0;

			// memset(payload, 255, msg_size);

			serializeHeader(payload, pos, msg_size);
			assert(headerSize() == pos);

			messageCallback->serializeMessage(object, payload, pos);
			assert(pos == msg_size);

			BareMessage * msg = new BareMessage(payload, msg_size, user_ptr);

			isend(msg);
			return msg;
		}		
ssize_t TimeServicePacketHeader::serializePacket(uint8_t* data,
                                                 uint32_t length) {
    ssize_t ret, tmp;

    ret = serializeHeader(data, length);
    if (ret < 0)
        return ret;

    data += ret;
    length -= ret;

    switch (packetType) {
        case TIME_PACKET_WHO_IS_MASTER_REQUEST:
            tmp =((WhoIsMasterRequestPacket*)(this))->serializePacket(data,
                                                                      length);
            break;
        case TIME_PACKET_WHO_IS_MASTER_RESPONSE:
            tmp =((WhoIsMasterResponsePacket*)(this))->serializePacket(data,
                                                                       length);
            break;
        case TIME_PACKET_SYNC_REQUEST:
            tmp =((SyncRequestPacket*)(this))->serializePacket(data, length);
            break;
        case TIME_PACKET_SYNC_RESPONSE:
            tmp =((SyncResponsePacket*)(this))->serializePacket(data, length);
            break;
        case TIME_PACKET_MASTER_ANNOUNCEMENT:
            tmp =((MasterAnnouncementPacket*)(this))->serializePacket(data,
                                                                      length);
            break;
        default:
            return -1;
    }

    if (tmp < 0)
        return tmp;

    return ret + tmp;
}
Esempio n. 18
0
void UDP_Socket::serializeAndSend(char* message)
{
	for (int i = 0; i < REPEAT_SENDS; i++)
	{
		int headerLength = serializeHeader(mSendingPacket);
		printf("htonLength: %d \n headerSize: %d\n", headerLength, serializedPacketHeaderSize);
		int sendingBufferSize = addPacketData(mSendingPacket, message, headerLength);
		int sent_bytes = sendto(socketHandle, sendingBuffer, sendingBufferSize, 0, (sockaddr*)&destination, sizeof(sockaddr_in));
		printf("Sent_bytes: %d\n", sent_bytes);
#if PLATFORM == WINDOWS
		if (DEBUG)
		{
			//Check if there is an error on the send call.
			if (sent_bytes == SOCKET_ERROR)
			{
				//Print the error.
				printf("Sendto has failed with error: %d\n", WSAGetLastError());
				Sleep(1000);
			}
		}
#endif
	}
}
void FTDataPrebindReplyPacket::serialize(OutputStream& outputStream) THROW(SerializationException&) {
    UInt bodySize = getBodySerializationSize();
    m_packetHeader->setMessageSize(bodySize);
    serializeHeader(outputStream);
    serializeBody(outputStream);
}