mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-14 20:12:29 -04:00
cleaned the hierarchy of serialization classes
This commit is contained in:
parent
77e809ea4b
commit
9c610a736d
48 changed files with 382 additions and 326 deletions
|
@ -26,6 +26,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "serialiser/rsserial.h"
|
||||
//#include "serialiser/rstlvtypes.h"
|
||||
|
|
|
@ -28,7 +28,10 @@
|
|||
|
||||
#include <map>
|
||||
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
|
||||
#include "serialiser/rsserial.h"
|
||||
#include "serialiser/rstlvkeys.h"
|
||||
#include "serialiser/rstlvidset.h"
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "serialiser/rsserial.h"
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
|
||||
const uint8_t RS_PKT_SUBTYPE_HEARTBEAT_PULSE = 0x01;
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include <openssl/ssl.h>
|
||||
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
#include "serialiser/rsserial.h"
|
||||
#include "serialiser/rstlvbase.h"
|
||||
#include "serialiser/rstlvitem.h"
|
||||
|
|
|
@ -25,11 +25,14 @@
|
|||
*/
|
||||
|
||||
#include "serialiser/rsbaseserial.h"
|
||||
#include "serialiser/rsserial.h"
|
||||
|
||||
#include "util/rsthreads.h"
|
||||
#include "util/rsstring.h"
|
||||
#include "util/rsprint.h"
|
||||
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
|
|
@ -34,9 +34,6 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "util/rsmemory.h"
|
||||
#include "retroshare/rstypes.h"
|
||||
|
||||
/*******************************************************************
|
||||
* This is the Top-Level serialiser/deserialise,
|
||||
*
|
||||
|
@ -59,9 +56,6 @@
|
|||
* 8 bits: SubType
|
||||
******************************************************************/
|
||||
|
||||
#include <util/smallobject.h>
|
||||
#include "rsitems/itempriorities.h"
|
||||
|
||||
const uint8_t RS_PKT_VERSION1 = 0x01;
|
||||
const uint8_t RS_PKT_VERSION_SERVICE = 0x02;
|
||||
|
||||
|
@ -70,74 +64,7 @@ const uint8_t RS_PKT_CLASS_CONFIG = 0x02;
|
|||
|
||||
const uint8_t RS_PKT_SUBTYPE_DEFAULT = 0x01; /* if only one subtype */
|
||||
|
||||
class SerializeContext ;
|
||||
|
||||
class RsItem: public RsMemoryManagement::SmallObject
|
||||
{
|
||||
public:
|
||||
RsItem(uint32_t t);
|
||||
RsItem(uint8_t ver, uint8_t cls, uint8_t t, uint8_t subtype);
|
||||
#ifdef DO_STATISTICS
|
||||
void *operator new(size_t s) ;
|
||||
void operator delete(void *,size_t s) ;
|
||||
#endif
|
||||
|
||||
virtual ~RsItem();
|
||||
virtual void clear() = 0;
|
||||
virtual std::ostream &print(std::ostream &out, uint16_t indent = 0)
|
||||
{
|
||||
std::cerr << "(EE) RsItem::print() called by an item using new serialization classes, but not derived! " << std::endl;
|
||||
#warning This method should normally call serial_process(PRINT,ctx)
|
||||
return out;
|
||||
}
|
||||
void print_string(std::string &out, uint16_t indent = 0);
|
||||
|
||||
/* source / destination id */
|
||||
const RsPeerId& PeerId() const { return peerId; }
|
||||
void PeerId(const RsPeerId& id) { peerId = id; }
|
||||
|
||||
/* complete id */
|
||||
uint32_t PacketId() const;
|
||||
|
||||
/* id parts */
|
||||
uint8_t PacketVersion();
|
||||
uint8_t PacketClass();
|
||||
uint8_t PacketType();
|
||||
uint8_t PacketSubType() const;
|
||||
|
||||
/* For Service Packets */
|
||||
RsItem(uint8_t ver, uint16_t service, uint8_t subtype);
|
||||
uint16_t PacketService() const; /* combined Packet class/type (mid 16bits) */
|
||||
void setPacketService(uint16_t service);
|
||||
|
||||
inline uint8_t priority_level() const { return _priority_level ;}
|
||||
inline void setPriorityLevel(uint8_t l) { _priority_level = l ;}
|
||||
|
||||
/**
|
||||
* @brief serialize this object to the given buffer
|
||||
* @param Job to do: serialise or deserialize.
|
||||
* @param data Chunk of memory were to dump the serialized data
|
||||
* @param size Size of memory chunk
|
||||
* @param offset Readed to determine at witch offset start writing data,
|
||||
* written to inform caller were written data ends, the updated value
|
||||
* is usually passed by the caller to serialize of another
|
||||
* RsSerializable so it can write on the same chunk of memory just
|
||||
* after where this RsSerializable has been serialized.
|
||||
* @return true if serialization successed, false otherwise
|
||||
*/
|
||||
typedef enum { SIZE_ESTIMATE = 0x01, SERIALIZE = 0x02, DESERIALIZE = 0x03, PRINT=0x04 } SerializeJob ;
|
||||
|
||||
virtual void serial_process(SerializeJob /* j */,SerializeContext& /* ctx */)
|
||||
{
|
||||
std::cerr << "(EE) RsItem::serial_process() called by an item using new serialization classes, but not derived! " << std::endl;
|
||||
}
|
||||
|
||||
protected:
|
||||
uint32_t type;
|
||||
RsPeerId peerId;
|
||||
uint8_t _priority_level ;
|
||||
};
|
||||
|
||||
class RsItem ;
|
||||
|
||||
class RsSerialType
|
||||
{
|
||||
|
@ -201,23 +128,4 @@ std::ostream &printRsItemEnd(std::ostream &o, std::string n, uint16_t i);
|
|||
std::ostream &printIndent(std::ostream &out, uint16_t indent);
|
||||
/* Wrapper class for data that is serialised somewhere else */
|
||||
|
||||
class RsRawItem: public RsItem
|
||||
{
|
||||
public:
|
||||
RsRawItem(uint32_t t, uint32_t size) : RsItem(t), len(size)
|
||||
{ data = rs_malloc(len); }
|
||||
virtual ~RsRawItem() { free(data); }
|
||||
|
||||
uint32_t getRawLength() { return len; }
|
||||
void * getRawData() { return data; }
|
||||
|
||||
virtual void clear() {}
|
||||
virtual std::ostream &print(std::ostream &out, uint16_t indent = 0);
|
||||
|
||||
private:
|
||||
void *data;
|
||||
uint32_t len;
|
||||
};
|
||||
|
||||
|
||||
#endif /* RS_BASE_SERIALISER_H */
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
#include <map>
|
||||
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
|
||||
#include "serialiser/rsserial.h"
|
||||
#include "serialiser/rstlvbase.h"
|
||||
#include "serialiser/rstlvgenericmap.h"
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "rsitems/rsitem.h"
|
||||
#include "rsserviceserialiser.h"
|
||||
|
||||
uint32_t RsServiceSerialiser::size(RsItem *i)
|
||||
|
|
|
@ -27,7 +27,8 @@
|
|||
*/
|
||||
|
||||
#include "rsitems/rsserviceids.h"
|
||||
#include "serialiser/rsserial.h"
|
||||
#include "rsitems/itempriorities.h"
|
||||
#include "rsitems/rsitem.h"
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue