00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 #include "jaus/mobility/list/deleteelement.h" 00041 00042 using namespace JAUS; 00043 00052 DeleteElement::DeleteElement(const Address& dest, const Address& src) : Message(DELETE_ELEMENT, dest, src) 00053 { 00054 mRequestID = 0; 00055 } 00056 00057 00063 DeleteElement::DeleteElement(const DeleteElement& message) : Message(DELETE_ELEMENT) 00064 { 00065 mRequestID = 0; 00066 *this = message; 00067 } 00068 00069 00075 DeleteElement::~DeleteElement() 00076 { 00077 } 00078 00079 00091 int DeleteElement::WriteMessageBody(Packet& packet) const 00092 { 00093 int expected = BYTE_SIZE*2; 00094 int written = 0; 00095 00096 written += packet.Write(mRequestID); 00097 written += packet.WriteByte( (Byte)mElementUIDs.size() ); 00098 00099 List::const_iterator element; 00100 00101 for(element = mElementUIDs.begin(); 00102 element != mElementUIDs.end(); 00103 element++) 00104 { 00105 expected += USHORT_SIZE; 00106 written += packet.Write((*element)); 00107 } 00108 00109 return expected == written ? written : -1; 00110 } 00111 00112 00124 int DeleteElement::ReadMessageBody(const Packet& packet) 00125 { 00126 int expected = BYTE_SIZE*2; 00127 int read = 0; 00128 int tRead = 0; 00129 00130 Byte count = 0; 00131 UShort EUID = 0; 00132 00133 read += packet.Read(mRequestID); 00134 read += packet.Read(count); 00135 00136 for(UShort e = 0; e < count; e++) 00137 { 00138 expected += USHORT_SIZE; 00139 if((tRead = packet.Read(EUID)) > 0) 00140 { 00141 read += tRead; 00142 mElementUIDs.push_back(EUID); 00143 } 00144 } 00145 00146 return expected == read ? read : -1; 00147 } 00148 00149 00155 void DeleteElement::ClearMessageBody() 00156 { 00157 mRequestID = 0; 00158 mElementUIDs.clear(); 00159 } 00160 00161 00169 int DeleteElement::RunTestCase() const 00170 { 00171 int result = 0; 00172 00173 Packet packet; 00174 00175 DeleteElement msg1, msg2; 00176 msg1.GetElementList()->push_back(34); 00177 msg1.GetElementList()->push_back(43); 00178 00179 if((msg1.WriteMessageBody(packet) != -1) && 00180 (msg2.ReadMessageBody(packet) != -1)) 00181 { 00182 if(*msg1.GetElementList() == *msg2.GetElementList()) 00183 { 00184 result = 1; 00185 } 00186 } 00187 00188 return result; 00189 } 00190 00191 00197 DeleteElement& DeleteElement::operator=(const DeleteElement& message) 00198 { 00199 if(this != &message) 00200 { 00201 CopyHeaderData(&message); 00202 mRequestID = message.mRequestID; 00203 mElementUIDs = message.mElementUIDs; 00204 } 00205 return *this; 00206 } 00207 00208 00209 /* End of File */