|
IBR-DTNSuite 0.6
|
00001 /* 00002 * PlainSerializer.h 00003 * 00004 * Created on: 16.06.2011 00005 * Author: morgenro 00006 */ 00007 00008 #ifndef PLAINSERIALIZER_H_ 00009 #define PLAINSERIALIZER_H_ 00010 00011 #include <ibrdtn/data/Serializer.h> 00012 #include <ibrdtn/data/Bundle.h> 00013 #include <ibrdtn/data/PrimaryBlock.h> 00014 #include <ibrdtn/data/Block.h> 00015 00016 namespace dtn 00017 { 00018 namespace api 00019 { 00020 class PlainSerializer : public dtn::data::Serializer 00021 { 00022 public: 00023 PlainSerializer(std::ostream &stream); 00024 virtual ~PlainSerializer(); 00025 00026 dtn::data::Serializer &operator<<(const dtn::data::Bundle &obj); 00027 dtn::data::Serializer &operator<<(const dtn::data::PrimaryBlock &obj); 00028 dtn::data::Serializer &operator<<(const dtn::data::Block &obj); 00029 00030 size_t getLength(const dtn::data::Bundle &obj); 00031 size_t getLength(const dtn::data::PrimaryBlock &obj) const; 00032 size_t getLength(const dtn::data::Block &obj) const; 00033 00034 private: 00035 std::ostream &_stream; 00036 }; 00037 00038 class PlainDeserializer : public dtn::data::Deserializer 00039 { 00040 public: 00041 PlainDeserializer(std::istream &stream); 00042 virtual ~PlainDeserializer(); 00043 00044 dtn::data::Deserializer &operator>>(dtn::data::Bundle &obj); 00045 dtn::data::Deserializer &operator>>(dtn::data::PrimaryBlock &obj); 00046 dtn::data::Deserializer &operator>>(dtn::data::Block &obj); 00047 00048 private: 00052 dtn::data::Deserializer &operator>>(std::ostream &stream); 00053 00054 std::istream &_stream; 00055 }; 00056 } 00057 } 00058 00059 #endif /* PLAINSERIALIZER_H_ */