43 store.reserve(length);
45 for(
int i = 0; i < length; ++i)
store.push_back(packet[i]);
58 unsigned char *p_a = reinterpret_cast<unsigned char*>(&a);
80 return static_cast<unsigned int>(std::distance(
store.begin(),
iter_));
101 throw std::invalid_argument(
"Storage::readChar(): invalid position");
113 store.push_back(value);
125 int i = static_cast<int>(
readChar());
126 if (i < 128)
return i;
127 else return (i - 256);
137 if (value < -128 || value > 127)
139 throw std::invalid_argument(
"Storage::writeByte(): Invalid value, not in [-128, 127]");
141 writeChar( static_cast<unsigned char>( (value+256) % 256 ) );
152 return static_cast<int>(
readChar());
162 if (value < 0 || value > 255)
164 throw std::invalid_argument(
"Storage::writeUnsignedByte(): Invalid value, not in [0, 255]");
166 writeChar( static_cast<unsigned char>( value ));
179 StorageType::const_iterator
end =
iter_;
180 std::advance(
end, len);
194 writeInt(static_cast<int>(s.length()));
196 store.insert(
store.end(), s.begin(), s.end());
208 std::vector<std::string> tmp;
211 for (
int i = 0; i < len; i++)
226 std::vector<double> tmp;
229 for (
int i = 0; i < len; i++)
244 writeInt(static_cast<int>(s.size()));
245 for (std::vector<std::string>::const_iterator it = s.begin(); it!=s.end() ; it++)
259 writeInt(static_cast<int>(s.size()));
260 for (std::vector<double>::const_iterator it = s.begin(); it!=s.end() ; it++)
278 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
287 if (value < -32768 || value > 32767)
289 throw std::invalid_argument(
"Storage::writeShort(): Invalid value, not in [-32768, 32767]");
292 short svalue = static_cast<short>(value);
293 unsigned char *p_svalue = reinterpret_cast<unsigned char*>(&svalue);
309 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
318 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
334 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
343 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
351 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
360 unsigned char *p_value = reinterpret_cast<unsigned char*>(&value);
369 store.insert(
store.end(), &(packet[0]), &(packet[length]));
377 std::copy(packet.begin(), packet.end(), std::back_inserter(
store));
394 if (std::distance(
iter_,
store.end()) < static_cast<int>(num))
396 std::ostringstream msg;
397 msg <<
"tcpip::Storage::readIsSafe: want to read " << num <<
" bytes from Storage, "
398 <<
"but only " << std::distance(
iter_,
store.end()) <<
" remaining";
399 throw std::invalid_argument(msg.str());
420 store.insert(
store.end(), std::reverse_iterator<const unsigned char *>(
end), std::reverse_iterator<const unsigned char *>(
begin));
431 for (
int i = 0; i <
size; ++i)
436 for (
int i =
size - 1; i >= 0; --i)
445 static const int width = 2;
447 std::ostringstream dump;
450 dump.setf(std::ostream::hex | std::ostream::showbase | std::ostream::internal);
453 for(StorageType::const_iterator it =
store.begin(); it !=
store.end(); ++it)
456 if (it !=
store.begin())
458 dump << std::setw(width) << static_cast<int>(*it);
466 #endif // BUILD_TCPIP