// SMsgDirG2ModifyService::Unpack // Virtual method from SmallMessage. Extracts data from message buffer. void SMsgDirG2ModifyService::Unpack(void) { WTRACE("SMsgDirG2ModifyService::Unpack"); SetKeyType(KT_SERVICE); SetExtended((GetMessageType() != WONMsg::DirG2ModifyService), (GetMessageType() == WONMsg::DirG2ModifyServiceEx)); SMsgDirG2UpdateExtendBase::Unpack(); if ((GetServiceType() != WONMsg::SmallDirServerG2) || ((GetMessageType() != WONMsg::DirG2ModifyService) && (GetMessageType() != WONMsg::DirG2ModifyServiceEx) && (GetMessageType() != WONMsg::DirG2ModifyServiceExObsolete))) { WDBG_AH("SMsgDirG2ModifyService::Unpack Not a DirG2ModifyService(Ex) message!"); throw WONMsg::BadMsgException(*this, __LINE__, __FILE__, "Not a DirG2ModifyService(Ex) message."); } mEntityFlags = ReadByte(); UnpackKey(*this); ReadWString(mNewName); unsigned char aLen = ReadByte(); WDBG_LL("SMsgDirG2ModifyService::Unpack Read New Addr len=" << aLen); if (aLen > 0) mNewNetAddress.assign(reinterpret_cast<const unsigned char*>(ReadBytes(aLen)), aLen); ReadWString(mNewDisplayName); mNewLifespan = ReadLong(); UnpackExtended(); UnpackPeerData(); }
// SMsgDirG2ClearDataObjects::Unpack // Virtual method from SmallMessage. Extracts data from message buffer. void SMsgDirG2ClearDataObjects::Unpack(void) { WTRACE("SMsgDirG2ClearDataObjects::Unpack"); mClearTypes.clear(); mKeyType = (GetMessageType() == WONMsg::DirG2ServiceClearDataObjects ? KT_SERVICE : KT_DIRECTORY); SMsgDirG2UpdateBase::Unpack(); if ((GetServiceType() != WONMsg::SmallDirServerG2) || ((GetMessageType() != WONMsg::DirG2DirectoryClearDataObjects) && (GetMessageType() != WONMsg::DirG2ServiceClearDataObjects))) { WDBG_AH("SMsgDirG2ClearDataObjects::Unpack Not a DirG2ClearDataObjects message!"); throw WONMsg::BadMsgException(*this, __LINE__, __FILE__, "Not a DirG2ClearDataObjects message."); } UnpackKey(*this); unsigned short aCt = ReadShort(); WDBG_LL("SMsgDirG2ClearDataObjects::Unpack Reading " << aCt << " entries."); for (int i=0; i < aCt; i++) { DataObject anObj; unsigned char aLen = ReadByte(); if (aLen > 0) anObj.GetDataType().assign(reinterpret_cast<const unsigned char*>(ReadBytes(aLen)), aLen); mClearTypes.insert(anObj); } UnpackPeerData(); }
// TMsgDirRenewDirectory::Unpack // Virtual method from TMessage. Extracts data from message buffer. void TMsgDirRenewDirectory::Unpack(void) { WTRACE("TMsgDirRenewDirectory::Unpack"); TMsgDirDirectoryBase::Unpack(); if ((GetServiceType() != WONMsg::DirServer) || (GetMessageType() != WONMsg::DirRenewDirectory)) { WDBG_AH("TMsgDirRenewDirectory::Unpack Not a DirRenewDirectory message!"); throw WONMsg::BadMsgException(*this, __LINE__, __FILE__, "Not a DirRenewDirectory message."); } WDBG_LL("TMsgDirRenewDirectory::Unpack Reading message data"); mLifespan = ReadLong(); // Unpack peer data if needed UnpackPeerData(); }
// SMsgDirG2SetDataObjects::Unpack // Virtual method from SmallMessage. Extracts data from message buffer. void SMsgDirG2SetDataObjects::Unpack(void) { WTRACE("SMsgDirG2SetDataObjects::Unpack"); mKeyType = (GetMessageType() == WONMsg::DirG2ServiceSetDataObjects ? KT_SERVICE : KT_DIRECTORY); SetExtended(true, false); SMsgDirG2UpdateExtendBase::Unpack(); if ((GetServiceType() != WONMsg::SmallDirServerG2) || ((GetMessageType() != WONMsg::DirG2DirectorySetDataObjects) && (GetMessageType() != WONMsg::DirG2ServiceSetDataObjects))) { WDBG_AH("SMsgDirG2SetDataObjects::Unpack Not a DirG2SetDataObjects message!"); throw WONMsg::BadMsgException(*this, __LINE__, __FILE__, "Not a DirG2SetDataObjects message."); } mSetMode = static_cast<WONMsg::DirG2DataObjectSetMode>(ReadByte()); UnpackKey(*this); UnpackExtended(); UnpackPeerData(); }
// SMsgDirG2ExplicitSetDataObjects::Unpack // Virtual method from SmallMessage. Extracts data from message buffer. void SMsgDirG2ExplicitSetDataObjects::Unpack(void) { WTRACE("SMsgDirG2ExplicitSetDataObjects::Unpack"); mObjects.clear(); mKeyType = (GetMessageType() == WONMsg::DirG2ServiceExplicitSetDataObjects ? KT_SERVICE : KT_DIRECTORY); SMsgDirG2UpdateBase::Unpack(); if ((GetServiceType() != WONMsg::SmallDirServerG2) || ((GetMessageType() != WONMsg::DirG2DirectoryExplicitSetDataObjects) && (GetMessageType() != WONMsg::DirG2ServiceExplicitSetDataObjects))) { WDBG_AH("SMsgDirG2ExplicitSetDataObjects::Unpack Not a DirG2ExplicitSetDataObjects message!"); throw WONMsg::BadMsgException(*this, __LINE__, __FILE__, "Not a DirG2ExplicitSetDataObjects message."); } UnpackKey(*this); unsigned short aCt = ReadShort(); WDBG_LL("SMsgDirG2ExplicitSetDataObjects::Unpack Reading " << aCt << " objects."); for (int i=0; i < aCt; i++) { ExplicitDOInfo anObj; anObj.mSetMode = static_cast<WONMsg::DirG2DataObjectSetMode>(ReadByte()); unsigned char aTypeLen = ReadByte(); if (aTypeLen > 0) anObj.mData.GetDataType().assign(reinterpret_cast<const unsigned char*>(ReadBytes(aTypeLen)), aTypeLen); unsigned short aDataLen = ReadShort(); if (aDataLen > 0) anObj.mData.GetData().assign(reinterpret_cast<const unsigned char*>(ReadBytes(aDataLen)), aDataLen); mObjects.push_back(anObj); } UnpackPeerData(); }