 |
Eclipse SUMO - Simulation of Urban MObility
|
Go to the documentation of this file.
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
std::string hexDump() const
Dump storage content as series of hex values.
virtual double readDouble()
void init()
Used in constructors to initialize local variables.
virtual void writeUnsignedByte(int)
virtual std::vector< std::string > readStringList()
virtual void writePacket(unsigned char *packet, int length)
StorageType::const_iterator end() const
void readByEndianess(unsigned char *array, int size)
Read size elements into array according to endianess.
virtual unsigned char readChar()
void writeByEndianess(const unsigned char *begin, unsigned int size)
Write size elements of array begin according to endianess.
virtual void writeByte(int)
virtual int readUnsignedByte()
virtual void writeInt(int)
virtual void writeChar(unsigned char)
virtual unsigned int position() const
virtual std::string readString()
Storage()
Standard Constructor.
virtual void writeStorage(tcpip::Storage &store)
virtual void writeStringList(const std::vector< std::string > &s)
virtual void writeFloat(float)
unsigned char readCharUnsafe()
Read a byte without validity check.
virtual void writeShort(int)
virtual void writeString(const std::string &s)
StorageType::const_iterator begin() const
void checkReadSafe(unsigned int num) const
Check if the next num bytes can be read safely.
virtual void writeDoubleList(const std::vector< double > &s)
StorageType::size_type size() const
virtual void writeDouble(double)
StorageType::const_iterator iter_
virtual float readFloat()
virtual std::vector< double > readDoubleList()