fixed up tlv serialisers:

- Added RsTvlUnit: public RsTlvItem, which handles some of the infrstructure.
 - made TlvSize() SetTlv() and print() const.
 - split rstlvtypes into its bits and cleaned up header files.
 - added templated RsTlvList, imilar to cyrils id one.
 - removed GXS_GEN_TESTNET
 - cleanedup rsserviceids.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7215 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2014-03-29 15:34:37 +00:00
parent 1042744685
commit 600639db51
86 changed files with 2464 additions and 2444 deletions

View File

@ -27,8 +27,10 @@
*/
#include <string>
#include <retroshare/rstypes.h>
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvkeys.h"
#include "serialiser/rsgxsitems.h"

View File

@ -8,7 +8,7 @@ TARGET = retroshare
# This should be disabled for releases until further notice.
CONFIG += gxs debug
#CONFIG += dsdv
CONFIG += dsdv
profiling {
QMAKE_CXXFLAGS -= -fomit-frame-pointer
@ -399,12 +399,18 @@ HEADERS += serialiser/rsbaseserial.h \
serialiser/rsstatusitems.h \
serialiser/rstlvaddrs.h \
serialiser/rstlvbase.h \
serialiser/rstlvitem.h \
serialiser/rstlvidset.h \
serialiser/rstlvfileitem.h \
serialiser/rstlvimage.h \
serialiser/rstlvstring.h \
serialiser/rstlvbinary.h \
serialiser/rstlvkeys.h \
serialiser/rstlvkvwide.h \
serialiser/rstlvtypes.h \
serialiser/rstlvkeyvalue.h \
serialiser/rstlvgenericparam.h \
serialiser/rstlvgenericmap.h \
serialiser/rstlvgenericmap.inl \
serialiser/rstlvlist.h \
serialiser/rstlvmaps.h \
serialiser/rstlvutil.h \
serialiser/rstlvbanlist.h \
@ -541,11 +547,14 @@ SOURCES += serialiser/rsbaseserial.cc \
serialiser/rsstatusitems.cc \
serialiser/rstlvaddrs.cc \
serialiser/rstlvbase.cc \
serialiser/rstlvitem.cc \
serialiser/rstlvidset.cc \
serialiser/rstlvfileitem.cc \
serialiser/rstlvimage.cc \
serialiser/rstlvstring.cc \
serialiser/rstlvbinary.cc \
serialiser/rstlvkeys.cc \
serialiser/rstlvkvwide.cc \
serialiser/rstlvtypes.cc \
serialiser/rstlvkeyvalue.cc \
serialiser/rstlvgenericparam.cc \
serialiser/rstlvutil.cc \
serialiser/rstlvbanlist.cc \
@ -640,8 +649,6 @@ SOURCES += zeroconf/p3zcnatassist.cc \
gxs {
DEFINES *= RS_ENABLE_GXS
DEFINES *= SQLITE_HAS_CODEC
DEFINES *= GXS_DEV_TESTNET
DEFINES *= GXS_ENABLE_SYNC_MSGS
HEADERS += serialiser/rsnxsitems.h \

View File

@ -2,10 +2,16 @@
#include "pluginmanager.h"
#include <dirent.h>
#if 0
#include <serialiser/rsserial.h>
#include <serialiser/rstlvbase.h>
#include <serialiser/rstlvtypes.h>
#endif
#include <serialiser/rspluginitems.h>
#include <rsserver/p3face.h>
#include <util/rsdir.h>
#include <util/folderiterator.h>

View File

@ -164,7 +164,8 @@ void pqiIpAddrList::extractFromTlv(const RsTlvIpAddrSet &tlvAddrs)
{
std::list<RsTlvIpAddressInfo>::const_iterator it;
for(it = tlvAddrs.addrs.begin(); it != tlvAddrs.addrs.end() ; ++it)
//for(it = tlvAddrs.addrs.begin(); it != tlvAddrs.addrs.end() ; ++it)
for(it = tlvAddrs.mList.begin(); it != tlvAddrs.mList.end() ; ++it)
{
pqiIpAddress addr;
addr.mAddr = it->addr.addr;
@ -186,7 +187,8 @@ void pqiIpAddrList::loadTlv(RsTlvIpAddrSet &tlvAddrs) const
addr.seenTime = it->mSeenTime;
addr.source = it->mSrc;
tlvAddrs.addrs.push_back(addr);
//tlvAddrs.addrs.push_back(addr);
tlvAddrs.mList.push_back(addr);
}
}

View File

@ -96,9 +96,9 @@ void RsServer::rsGlobalShutDown()
if(mGxsChannels) mGxsChannels->join();
if(mGxsIdService) mGxsIdService->join();
if(mPosted) mPosted->join();
//if(mPhoto) mPhoto->join();
if(mWiki) mWiki->join();
if(mWire) mWire->join();
//if(mPhoto) mPhoto->join();
//if(mWire) mWire->join();
#endif
AuthGPG::exit();

View File

@ -1300,29 +1300,9 @@ int RsServer::StartupRetroShare()
#ifdef RS_ENABLE_GXS
// The idea is that if priorGxsDir is non
// empty and matches an exist directory location
// the given ssl user id then this directory is cleaned
// and deleted
std::string priorGxsDir = "./" + mLinkMgr->getOwnId().toStdString() + "/";
std::string currGxsDir = rsAccounts.PathAccountDirectory() + "/GXS_phase2";
std::string currGxsDir = rsAccounts.PathAccountDirectory() + "/gxs";
currGxsDir += "_FINALTESTS";
#ifdef GXS_DEV_TESTNET // Different Directory for testing.
currGxsDir += "_TESTNET10";
#endif
if(!priorGxsDir.empty())
RsDirUtil::checkDirectory(priorGxsDir);
std::set<std::string> filesToKeep;
bool cleanUpSuccess = RsDirUtil::cleanupDirectory(priorGxsDir, filesToKeep);
if(!cleanUpSuccess)
std::cerr << "RsInit::StartupRetroShare() Clean up of Old Gxs Dir Failed!";
else
rmdir(priorGxsDir.c_str());
// TODO: temporary to store GXS service data, remove
RsDirUtil::checkCreateDirectory(currGxsDir);
RsNxsNetMgr* nxsMgr = new RsNxsNetMgrImpl(serviceCtrl);
@ -1330,23 +1310,19 @@ int RsServer::StartupRetroShare()
/**** Identity service ****/
RsGeneralDataService* gxsid_ds = new RsDataService(currGxsDir + "/", "gxsid_db",
RS_SERVICE_GXSV2_TYPE_GXSID, NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
gxsid_ds->resetDataStore();
#endif
RS_SERVICE_GXS_TYPE_GXSID, NULL, RsInitConfig::gxs_passwd);
// init gxs services
mGxsIdService = new p3IdService(gxsid_ds, NULL);
RsGeneralDataService* gxscircles_ds = new RsDataService(currGxsDir + "/", "gxscircles_db",
RS_SERVICE_GXSV2_TYPE_GXSCIRCLE, NULL, RsInitConfig::gxs_passwd);
RS_SERVICE_GXS_TYPE_GXSCIRCLE, NULL, RsInitConfig::gxs_passwd);
mGxsCircles = new p3GxsCircles(gxscircles_ds, NULL, mGxsIdService);
// create GXS ID service
RsGxsNetService* gxsid_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_GXSID, gxsid_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_GXSID, gxsid_ds, nxsMgr,
mGxsIdService, mGxsIdService->getServiceInfo(),
mGxsIdService, mGxsCircles,
false); // don't synchronise group automatic (need explicit group request)
@ -1355,54 +1331,29 @@ int RsServer::StartupRetroShare()
/**** GxsCircle service ****/
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
gxscircles_ds->resetDataStore();
#endif
// init gxs services
mGxsCircles = new p3GxsCircles(gxscircles_ds, NULL, mGxsIdService);
// create GXS Circle service
RsGxsNetService* gxscircles_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_GXSCIRCLE, gxscircles_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_GXSCIRCLE, gxscircles_ds, nxsMgr,
mGxsCircles, mGxsCircles->getServiceInfo(),
mGxsIdService, mGxsCircles);
/**** Photo service ****/
RsGeneralDataService* photo_ds = new RsDataService(currGxsDir + "/", "photoV2_db",
RS_SERVICE_GXSV2_TYPE_PHOTO, NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
photo_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
// init gxs services
mPhoto = new p3PhotoService(photo_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* photo_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_PHOTO, photo_ds, nxsMgr,
mPhoto, mPhoto->getServiceInfo(),
mGxsIdService, mGxsCircles);
/**** Posted GXS service ****/
RsGeneralDataService* posted_ds = new RsDataService(currGxsDir + "/", "posted_db",
RS_SERVICE_GXSV2_TYPE_POSTED,
RS_SERVICE_GXS_TYPE_POSTED,
NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
posted_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
mPosted = new p3Posted(posted_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* posted_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_POSTED, posted_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_POSTED, posted_ds, nxsMgr,
mPosted, mPosted->getServiceInfo(),
mGxsIdService, mGxsCircles);
@ -1410,56 +1361,29 @@ int RsServer::StartupRetroShare()
RsGeneralDataService* wiki_ds = new RsDataService(currGxsDir + "/", "wiki_db",
RS_SERVICE_GXSV2_TYPE_WIKI,
RS_SERVICE_GXS_TYPE_WIKI,
NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
wiki_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
mWiki = new p3Wiki(wiki_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* wiki_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_WIKI, wiki_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_WIKI, wiki_ds, nxsMgr,
mWiki, mWiki->getServiceInfo(),
mGxsIdService, mGxsCircles);
/**** Wire GXS service ****/
RsGeneralDataService* wire_ds = new RsDataService(currGxsDir + "/", "wire_db",
RS_SERVICE_GXSV2_TYPE_WIRE,
NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
wire_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
mWire = new p3Wire(wire_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* wire_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_WIRE, wire_ds, nxsMgr,
mWire, mWire->getServiceInfo(),
mGxsIdService, mGxsCircles);
/**** Forum GXS service ****/
RsGeneralDataService* gxsforums_ds = new RsDataService(currGxsDir + "/", "gxsforums_db",
RS_SERVICE_GXSV2_TYPE_FORUMS, NULL, RsInitConfig::gxs_passwd);
RS_SERVICE_GXS_TYPE_FORUMS, NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
gxsforums_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
mGxsForums = new p3GxsForums(gxsforums_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* gxsforums_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_FORUMS, gxsforums_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_FORUMS, gxsforums_ds, nxsMgr,
mGxsForums, mGxsForums->getServiceInfo(),
mGxsIdService, mGxsCircles);
@ -1467,28 +1391,55 @@ int RsServer::StartupRetroShare()
/**** Channel GXS service ****/
RsGeneralDataService* gxschannels_ds = new RsDataService(currGxsDir + "/", "gxschannels_db",
RS_SERVICE_GXSV2_TYPE_CHANNELS, NULL, RsInitConfig::gxs_passwd);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
gxschannels_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing
#endif
RS_SERVICE_GXS_TYPE_CHANNELS, NULL, RsInitConfig::gxs_passwd);
mGxsChannels = new p3GxsChannels(gxschannels_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* gxschannels_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_CHANNELS, gxschannels_ds, nxsMgr,
RS_SERVICE_GXS_TYPE_CHANNELS, gxschannels_ds, nxsMgr,
mGxsChannels, mGxsChannels->getServiceInfo(),
mGxsIdService, mGxsCircles);
#if 0 // PHOTO IS DISABLED FOR THE MOMENT
/**** Photo service ****/
RsGeneralDataService* photo_ds = new RsDataService(currGxsDir + "/", "photoV2_db",
RS_SERVICE_GXS_TYPE_PHOTO, NULL, RsInitConfig::gxs_passwd);
// init gxs services
mPhoto = new p3PhotoService(photo_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* photo_ns = new RsGxsNetService(
RS_SERVICE_GXS_TYPE_PHOTO, photo_ds, nxsMgr,
mPhoto, mPhoto->getServiceInfo(),
mGxsIdService, mGxsCircles);
#endif
#if 0 // WIRE IS DISABLED FOR THE MOMENT
/**** Wire GXS service ****/
RsGeneralDataService* wire_ds = new RsDataService(currGxsDir + "/", "wire_db",
RS_SERVICE_GXS_TYPE_WIRE,
NULL, RsInitConfig::gxs_passwd);
mWire = new p3Wire(wire_ds, NULL, mGxsIdService);
// create GXS photo service
RsGxsNetService* wire_ns = new RsGxsNetService(
RS_SERVICE_GXS_TYPE_WIRE, wire_ds, nxsMgr,
mWire, mWire->getServiceInfo(),
mGxsIdService, mGxsCircles);
#endif
// now add to p3service
pqih->addService(gxsid_ns, true);
pqih->addService(gxscircles_ns, true);
pqih->addService(photo_ns, true);
pqih->addService(posted_ns, true);
pqih->addService(wiki_ns, true);
pqih->addService(gxsforums_ns, true);
pqih->addService(gxschannels_ns, true);
//pqih->addService(photo_ns, true);
// remove pword from memory
RsInitConfig::gxs_passwd = "";
@ -1652,9 +1603,9 @@ int RsServer::StartupRetroShare()
mConfigMgr->addConfiguration("gxschannels.cfg", gxschannels_ns);
mConfigMgr->addConfiguration("gxscircles.cfg", gxscircles_ns);
mConfigMgr->addConfiguration("posted.cfg", posted_ns);
mConfigMgr->addConfiguration("wire.cfg", wire_ns);
mConfigMgr->addConfiguration("wiki.cfg", wiki_ns);
mConfigMgr->addConfiguration("photo.cfg", photo_ns);
//mConfigMgr->addConfiguration("photo.cfg", photo_ns);
//mConfigMgr->addConfiguration("wire.cfg", wire_ns);
#endif
mPluginsManager->addConfigurations(mConfigMgr) ;
@ -1763,31 +1714,33 @@ int RsServer::StartupRetroShare()
rsGxsCircles = mGxsCircles;
rsWiki = mWiki;
rsPosted = mPosted;
rsPhoto = mPhoto;
rsGxsForums = mGxsForums;
rsGxsChannels = mGxsChannels;
rsWire = mWire;
//rsPhoto = mPhoto;
//rsWire = mWire;
/*** start up GXS core runner ***/
createThread(*mGxsIdService);
createThread(*mGxsCircles);
createThread(*mPhoto);
createThread(*mPosted);
createThread(*mWiki);
createThread(*mWire);
createThread(*mGxsForums);
createThread(*mGxsChannels);
//createThread(*mPhoto);
//createThread(*mWire);
// cores ready start up GXS net servers
createThread(*gxsid_ns);
createThread(*gxscircles_ns);
createThread(*photo_ns);
createThread(*posted_ns);
createThread(*wiki_ns);
createThread(*wire_ns);
createThread(*gxsforums_ns);
createThread(*gxschannels_ns);
//createThread(*photo_ns);
//createThread(*wire_ns);
#endif // RS_ENABLE_GXS
ftserver->StartupThreads();

View File

@ -30,7 +30,6 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvbanlist.h"
#define RS_PKT_SUBTYPE_BANLIST_ITEM 0x01

View File

@ -31,9 +31,16 @@
#include "retroshare/rstypes.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvidset.h"
#include "serialiser/rstlvfileitem.h"
#include "serialiser/rstlvkeyvalue.h"
#include "serialiser/rstlvaddrs.h"
#if 0
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvaddrs.h"
#endif
class RsGroupInfo;

View File

@ -24,14 +24,16 @@
*
*/
#include "serialiser/rsbaseserial.h"
#include "serialiser/rsdiscovery2items.h"
#include "serialiser/rsbaseserial.h"
#if 0
#include "serialiser/rsserviceids.h"
#include "serialiser/rsdiscovery2items.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#endif
/***
* #define RSSERIAL_DEBUG 1

View File

@ -29,10 +29,9 @@
#define RS_DISC_ITEMS_H
#include "serialiser/rsserial.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvidset.h"
#include "serialiser/rstlvaddrs.h"
#include "serialiser/rsserviceids.h"
#include "serialiser/rsconfigitems.h"
const uint8_t RS_PKT_SUBTYPE_DISC_PGP_LIST = 0x01;
const uint8_t RS_PKT_SUBTYPE_DISC_PGP_CERT = 0x02;

View File

@ -31,7 +31,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvbinary.h"
#include "serialiser/rstlvdsdv.h"
/**************************************************************************/

View File

@ -29,9 +29,11 @@
#include "retroshare/rstypes.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvfileitem.h"
#include "serialiser/rsserviceids.h"
const uint8_t RS_PKT_SUBTYPE_FT_DATA_REQUEST = 0x01;
const uint8_t RS_PKT_SUBTYPE_FT_DATA = 0x02;
const uint8_t RS_PKT_SUBTYPE_FT_CHUNK_MAP_REQUEST = 0x04;

View File

@ -89,7 +89,7 @@ RsItem* RsGxsChannelSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_CHANNELS != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_CHANNELS != getRsItemService(rstype)))
{
#ifdef GXSCHANNEL_DEBUG
std::cerr << "RsGxsChannelSerialiser::deserialise() ERROR Wrong Type" << std::endl;
@ -255,7 +255,7 @@ RsGxsChannelGroupItem* RsGxsChannelSerialiser::deserialiseGxsChannelGroupItem(vo
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_CHANNELS != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_CHANNELS != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSCHANNEL_GROUP_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSCHANNEL_DEBUG
@ -478,7 +478,7 @@ RsGxsChannelPostItem* RsGxsChannelSerialiser::deserialiseGxsChannelPostItem(void
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_CHANNELS != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_CHANNELS != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSCHANNEL_POST_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSCHANNEL_DEBUG

View File

@ -30,7 +30,9 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvfileitem.h"
#include "serialiser/rstlvimage.h"
#include "serialiser/rsgxscommentitems.h"
@ -47,7 +49,7 @@ class RsGxsChannelGroupItem : public RsGxsGrpItem
public:
RsGxsChannelGroupItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_CHANNELS,
RsGxsChannelGroupItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_CHANNELS,
RS_PKT_SUBTYPE_GXSCHANNEL_GROUP_ITEM) { return;}
virtual ~RsGxsChannelGroupItem() { return;}
@ -66,7 +68,7 @@ class RsGxsChannelPostItem : public RsGxsMsgItem
{
public:
RsGxsChannelPostItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_CHANNELS,
RsGxsChannelPostItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_CHANNELS,
RS_PKT_SUBTYPE_GXSCHANNEL_POST_ITEM) {return; }
virtual ~RsGxsChannelPostItem() { return;}
void clear();
@ -88,7 +90,7 @@ class RsGxsChannelSerialiser : public RsGxsCommentSerialiser
public:
RsGxsChannelSerialiser()
:RsGxsCommentSerialiser(RS_SERVICE_GXSV2_TYPE_CHANNELS)
:RsGxsCommentSerialiser(RS_SERVICE_GXS_TYPE_CHANNELS)
{ return; }
virtual ~RsGxsChannelSerialiser() { return; }

View File

@ -74,7 +74,7 @@ RsItem* RsGxsCircleSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_GXSCIRCLE != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -277,7 +277,7 @@ RsGxsCircleGroupItem* RsGxsCircleSerialiser::deserialiseGxsCircleGroupItem(void
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_GXSCIRCLE != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSCIRCLE_GROUP_ITEM != getRsItemSubType(rstype)))
{
#ifdef CIRCLE_DEBUG
@ -427,7 +427,7 @@ RsGxsCircleMsgItem* RsGxsCircleSerialiser::deserialiseGxsCircleMsgItem(void *dat
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_GXSCIRCLE != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSCIRCLE_MSG_ITEM != getRsItemSubType(rstype)))
{
#ifdef CIRCLE_DEBUG

View File

@ -30,7 +30,8 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvstring.h"
#include "rsgxsitems.h"
#include "retroshare/rsgxscircles.h"
@ -47,7 +48,7 @@ class RsGxsCircleGroupItem : public RsGxsGrpItem
public:
RsGxsCircleGroupItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE,
RsGxsCircleGroupItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_GXSCIRCLE,
RS_PKT_SUBTYPE_GXSCIRCLE_GROUP_ITEM),
pgpIdSet(GXSCIRCLE_PGPIDSET),
gxsIdSet(GXSCIRCLE_GXSIDSET),
@ -70,7 +71,7 @@ class RsGxsCircleMsgItem : public RsGxsMsgItem
{
public:
RsGxsCircleMsgItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE,
RsGxsCircleMsgItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_GXSCIRCLE,
RS_PKT_SUBTYPE_GXSCIRCLE_MSG_ITEM) {return; }
virtual ~RsGxsCircleMsgItem() { return;}
void clear();
@ -83,7 +84,7 @@ class RsGxsCircleSerialiser : public RsSerialType
public:
RsGxsCircleSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_GXSCIRCLE)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_GXSCIRCLE)
{ return; }
virtual ~RsGxsCircleSerialiser() { return; }

View File

@ -30,7 +30,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"

View File

@ -76,7 +76,7 @@ RsItem* RsGxsForumSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_FORUMS != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_FORUMS != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -198,7 +198,7 @@ RsGxsForumGroupItem* RsGxsForumSerialiser::deserialiseGxsForumGroupItem(void *da
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_FORUMS != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_FORUMS != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSFORUM_GROUP_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSFORUM_DEBUG
@ -346,7 +346,7 @@ RsGxsForumMsgItem* RsGxsForumSerialiser::deserialiseGxsForumMsgItem(void *data,
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_FORUMS != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_FORUMS != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSFORUM_MESSAGE_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSFORUM_DEBUG

View File

@ -30,7 +30,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"
#include "retroshare/rsgxsforums.h"
@ -43,7 +43,7 @@ class RsGxsForumGroupItem : public RsGxsGrpItem
public:
RsGxsForumGroupItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_FORUMS,
RsGxsForumGroupItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_FORUMS,
RS_PKT_SUBTYPE_GXSFORUM_GROUP_ITEM) { return;}
virtual ~RsGxsForumGroupItem() { return;}
@ -58,7 +58,7 @@ class RsGxsForumMsgItem : public RsGxsMsgItem
{
public:
RsGxsForumMsgItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_FORUMS,
RsGxsForumMsgItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_FORUMS,
RS_PKT_SUBTYPE_GXSFORUM_MESSAGE_ITEM) {return; }
virtual ~RsGxsForumMsgItem() { return;}
void clear();
@ -72,7 +72,7 @@ class RsGxsForumSerialiser : public RsSerialType
public:
RsGxsForumSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_FORUMS)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_FORUMS)
{ return; }
virtual ~RsGxsForumSerialiser() { return; }

View File

@ -28,6 +28,7 @@
#include "rsgxsiditems.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rsbaseserial.h"
#include "serialiser/rstlvstring.h"
#define GXSID_DEBUG 1
@ -91,7 +92,7 @@ RsItem* RsGxsIdSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSID != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_GXSID != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -236,7 +237,7 @@ RsGxsIdGroupItem* RsGxsIdSerialiser::deserialiseGxsIdGroupItem(void *data, uint3
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSID_GROUP_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG
@ -394,7 +395,7 @@ RsGxsIdOpinionItem* RsGxsIdSerialiser::deserialiseGxsIdOpinionItem(void *data, u
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSID_OPINION_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG
@ -536,7 +537,7 @@ RsGxsIdCommentItem* RsGxsIdSerialiser::deserialiseGxsIdCommentItem(void *data, u
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_GXSID != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_GXSID_COMMENT_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG

View File

@ -30,7 +30,6 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"
#include "retroshare/rsidentity.h"
@ -44,7 +43,7 @@ class RsGxsIdGroupItem : public RsGxsGrpItem
public:
RsGxsIdGroupItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_GXSID,
RsGxsIdGroupItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_GXSID,
RS_PKT_SUBTYPE_GXSID_GROUP_ITEM) { return;}
virtual ~RsGxsIdGroupItem() { return;}
@ -60,7 +59,7 @@ class RsGxsIdOpinionItem : public RsGxsMsgItem
{
public:
RsGxsIdOpinionItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_GXSID,
RsGxsIdOpinionItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_GXSID,
RS_PKT_SUBTYPE_GXSID_OPINION_ITEM) {return; }
virtual ~RsGxsIdOpinionItem() { return;}
void clear();
@ -72,7 +71,7 @@ class RsGxsIdCommentItem : public RsGxsMsgItem
{
public:
RsGxsIdCommentItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_GXSID,
RsGxsIdCommentItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_GXSID,
RS_PKT_SUBTYPE_GXSID_COMMENT_ITEM) { return; }
virtual ~RsGxsIdCommentItem() { return; }
void clear();
@ -87,7 +86,7 @@ class RsGxsIdSerialiser : public RsSerialType
public:
RsGxsIdSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_GXSID)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_GXSID)
{ return; }
virtual ~RsGxsIdSerialiser() { return; }

View File

@ -28,8 +28,8 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvkeys.h"
//#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvkeys.h"
#include "retroshare/rsgxsifacetypes.h"
std::ostream &operator<<(std::ostream &out, const RsGroupMetaData &meta);

View File

@ -23,8 +23,8 @@
*
*/
#include "serialiser/rsbaseserial.h"
#include "serialiser/rsgxsrecognitems.h"
#include "serialiser/rsbaseserial.h"
/***
#define RSSERIAL_DEBUG 1

View File

@ -30,9 +30,14 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvkeys.h"
#include "serialiser/rstlvidset.h"
#if 0
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvkeys.h"
#endif
#include "retroshare/rsgxsifacetypes.h"

View File

@ -30,7 +30,6 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "retroshare/rsgxsifacetypes.h"
#define RS_PKT_SUBTYPE_GXSREPUTATION_CONFIG_ITEM 0x01
@ -44,7 +43,7 @@ class RsGxsReputationConfigItem: public RsItem
{
public:
RsGxsReputationConfigItem()
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_REPUTATION,
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_REPUTATION,
RS_PKT_SUBTYPE_GXSREPUTATION_CONFIG_ITEM)
{
setPriorityLevel(QOS_PRIORITY_RS_GXSREPUTATION_ITEM);
@ -64,7 +63,7 @@ class RsGxsReputationSetItem: public RsItem
{
public:
RsGxsReputationSetItem()
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_REPUTATION,
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_REPUTATION,
RS_PKT_SUBTYPE_GXSREPUTATION_SET_ITEM)
{
setPriorityLevel(QOS_PRIORITY_RS_GXSREPUTATION_ITEM);
@ -86,7 +85,7 @@ class RsGxsReputationUpdateItem: public RsItem
{
public:
RsGxsReputationUpdateItem()
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_REPUTATION,
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_REPUTATION,
RS_PKT_SUBTYPE_GXSREPUTATION_UPDATE_ITEM)
{
setPriorityLevel(QOS_PRIORITY_RS_GXSREPUTATION_ITEM);
@ -105,7 +104,7 @@ class RsGxsReputationRequestItem: public RsItem
{
public:
RsGxsReputationRequestItem()
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_REPUTATION,
:RsItem(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_REPUTATION,
RS_PKT_SUBTYPE_GXSREPUTATION_REQUEST_ITEM)
{
setPriorityLevel(QOS_PRIORITY_RS_GXSREPUTATION_ITEM);
@ -124,7 +123,7 @@ class RsGxsReputationSerialiser: public RsSerialType
{
public:
RsGxsReputationSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_REPUTATION)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_REPUTATION)
{ return; }
virtual ~RsGxsReputationSerialiser()
{ return; }

View File

@ -27,13 +27,16 @@
*/
#include <map>
#if 0
#include <map>
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvkeys.h"
#endif
#include "gxs/rsgxsdata.h"

View File

@ -31,7 +31,14 @@
#include "retroshare/rstypes.h"
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvidset.h"
#include "serialiser/rstlvfileitem.h"
#if 0
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvfileitem.h"
#endif
/**************************************************************************/

View File

@ -32,7 +32,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvkeys.h"
#include "gxs/rsgxsdata.h"

View File

@ -25,8 +25,9 @@
#include <iostream>
#include "rsphotoitems.h"
#include "serialiser/rsphotoitems.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvbinary.h"
#include "serialiser/rsbaseserial.h"
#define GXS_PHOTO_SERIAL_DEBUG
@ -98,7 +99,7 @@ RsItem* RsGxsPhotoSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_PHOTO != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_PHOTO != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -200,7 +201,7 @@ bool RsGxsPhotoSerialiser::serialiseGxsPhotoAlbumItem(RsGxsPhotoAlbumItem* item,
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_DATE, item->album.mWhen);
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_LOCATION, item->album.mWhere);
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_PIC_TYPE, item->album.mThumbnail.type);
RsTlvBinaryData b(RS_SERVICE_GXSV2_TYPE_PHOTO); // TODO, need something more persisitent
RsTlvBinaryData b(RS_SERVICE_GXS_TYPE_PHOTO); // TODO, need something more persisitent
b.setBinData(item->album.mThumbnail.data, item->album.mThumbnail.size);
ok &= b.SetTlv(data, tlvsize, &offset);
@ -238,7 +239,7 @@ RsGxsPhotoAlbumItem* RsGxsPhotoSerialiser::deserialiseGxsPhotoAlbumItem(void* da
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_PHOTO_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXS_PHOTO_SERIAL_DEBUG
@ -275,7 +276,7 @@ RsGxsPhotoAlbumItem* RsGxsPhotoSerialiser::deserialiseGxsPhotoAlbumItem(void* da
ok &= GetTlvString(data, rssize, &offset, TLV_TYPE_STR_LOCATION, item->album.mWhere);
ok &= GetTlvString(data, rssize, &offset, TLV_TYPE_STR_PIC_TYPE, item->album.mThumbnail.type);
RsTlvBinaryData b(RS_SERVICE_GXSV2_TYPE_PHOTO); // TODO, need something more persisitent
RsTlvBinaryData b(RS_SERVICE_GXS_TYPE_PHOTO); // TODO, need something more persisitent
ok &= b.GetTlv(data, rssize, &offset);
item->album.mThumbnail.data = (uint8_t*)b.bin_data;
item->album.mThumbnail.size = b.bin_len;
@ -365,7 +366,7 @@ bool RsGxsPhotoSerialiser::serialiseGxsPhotoPhotoItem(RsGxsPhotoPhotoItem* item,
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_DATE, item->photo.mWhen);
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_LOCATION, item->photo.mWhere);
ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_PIC_TYPE, item->photo.mThumbnail.type);
RsTlvBinaryData b(RS_SERVICE_GXSV2_TYPE_PHOTO); // TODO, need something more persisitent
RsTlvBinaryData b(RS_SERVICE_GXS_TYPE_PHOTO); // TODO, need something more persisitent
b.setBinData(item->photo.mThumbnail.data, item->photo.mThumbnail.size);
ok &= b.SetTlv(data, tlvsize, &offset);
@ -403,7 +404,7 @@ RsGxsPhotoPhotoItem* RsGxsPhotoSerialiser::deserialiseGxsPhotoPhotoItem(void* da
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_PHOTO_SHOW_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXS_PHOTO_SERIAL_DEBUG
@ -439,7 +440,7 @@ RsGxsPhotoPhotoItem* RsGxsPhotoSerialiser::deserialiseGxsPhotoPhotoItem(void* da
ok &= GetTlvString(data, rssize, &offset, TLV_TYPE_STR_LOCATION, item->photo.mWhere);
ok &= GetTlvString(data, rssize, &offset, TLV_TYPE_STR_PIC_TYPE, item->photo.mThumbnail.type);
RsTlvBinaryData b(RS_SERVICE_GXSV2_TYPE_PHOTO); // TODO, need something more persisitent
RsTlvBinaryData b(RS_SERVICE_GXS_TYPE_PHOTO); // TODO, need something more persisitent
ok &= b.GetTlv(data, rssize, &offset);
item->photo.mThumbnail.data = (uint8_t*)(b.bin_data);
item->photo.mThumbnail.size = b.bin_len;
@ -534,7 +535,7 @@ RsGxsPhotoCommentItem * RsGxsPhotoSerialiser::deserialiseGxsPhotoCommentItem(
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_PHOTO != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_PHOTO_COMMENT_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXS_PHOTO_SERIAL_DEBUG

View File

@ -30,7 +30,6 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"
#include "retroshare/rsphoto.h"
@ -44,7 +43,7 @@ class RsGxsPhotoAlbumItem : public RsGxsGrpItem
public:
RsGxsPhotoAlbumItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_PHOTO,
RsGxsPhotoAlbumItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_PHOTO,
RS_PKT_SUBTYPE_PHOTO_ITEM) { return;}
virtual ~RsGxsPhotoAlbumItem() { return;}
@ -59,7 +58,7 @@ class RsGxsPhotoPhotoItem : public RsGxsMsgItem
{
public:
RsGxsPhotoPhotoItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_PHOTO,
RsGxsPhotoPhotoItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_PHOTO,
RS_PKT_SUBTYPE_PHOTO_SHOW_ITEM) {return; }
virtual ~RsGxsPhotoPhotoItem() { return;}
void clear();
@ -71,7 +70,7 @@ class RsGxsPhotoCommentItem : public RsGxsMsgItem
{
public:
RsGxsPhotoCommentItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_PHOTO,
RsGxsPhotoCommentItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_PHOTO,
RS_PKT_SUBTYPE_PHOTO_COMMENT_ITEM) { return; }
virtual ~RsGxsPhotoCommentItem() { return; }
void clear();
@ -86,7 +85,7 @@ class RsGxsPhotoSerialiser : public RsSerialType
public:
RsGxsPhotoSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_PHOTO)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_PHOTO)
{ return; }
virtual ~RsGxsPhotoSerialiser() { return; }

View File

@ -27,11 +27,14 @@
#pragma once
#include "serialiser/rsserial.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rsconfigitems.h"
#include "serialiser/rsbaseserial.h"
#if 0
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#endif
const uint8_t RS_PKT_CLASS_PLUGIN_SUBTYPE_HASHSET = 0x01 ;
class RsPluginItem: public RsItem

View File

@ -87,7 +87,7 @@ RsItem* RsGxsPostedSerialiser::deserialise(void *data, uint32_t *size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_POSTED != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_POSTED != getRsItemService(rstype)))
{
std::cerr << "RsGxsPostedSerialiser::deserialise() ERROR Wrong Type";
std::cerr << std::endl;
@ -207,7 +207,7 @@ RsGxsPostedPostItem* RsGxsPostedSerialiser::deserialiseGxsPostedPostItem(void *d
uint32_t offset = 0;
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_POSTED != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_POSTED != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_POSTED_POST_ITEM != getRsItemSubType(rstype)))
{
std::cerr << "RsGxsPostedSerialiser::deserialiseGxsPostedPostItem() FAIL wrong type" << std::endl;
@ -347,7 +347,7 @@ RsGxsPostedGroupItem* RsGxsPostedSerialiser::deserialiseGxsPostedGroupItem(void
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_POSTED != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_POSTED != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_POSTED_GRP_ITEM != getRsItemSubType(rstype)))
{
std::cerr << "RsGxsPostedSerialiser::deserialiseGxsPostedGroupItem() FAIL wrong type" << std::endl;

View File

@ -3,7 +3,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "serialiser/rsgxscommentitems.h"
@ -16,7 +16,7 @@ const uint8_t RS_PKT_SUBTYPE_POSTED_POST_ITEM = 0x03;
class RsGxsPostedGroupItem : public RsGxsGrpItem
{
public:
RsGxsPostedGroupItem() : RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_POSTED,
RsGxsPostedGroupItem() : RsGxsGrpItem(RS_SERVICE_GXS_TYPE_POSTED,
RS_PKT_SUBTYPE_POSTED_GRP_ITEM) { return; }
virtual ~RsGxsPostedGroupItem() { return; }
@ -29,7 +29,7 @@ public:
class RsGxsPostedPostItem : public RsGxsMsgItem
{
public:
RsGxsPostedPostItem() : RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_POSTED,
RsGxsPostedPostItem() : RsGxsMsgItem(RS_SERVICE_GXS_TYPE_POSTED,
RS_PKT_SUBTYPE_POSTED_POST_ITEM) {return ; }
virtual ~RsGxsPostedPostItem() { return; }
@ -45,7 +45,7 @@ class RsGxsPostedSerialiser : public RsGxsCommentSerialiser
public:
RsGxsPostedSerialiser()
:RsGxsCommentSerialiser(RS_SERVICE_GXSV2_TYPE_POSTED)
:RsGxsCommentSerialiser(RS_SERVICE_GXS_TYPE_POSTED)
{ return; }
virtual ~RsGxsPostedSerialiser() { return; }

View File

@ -26,7 +26,7 @@
#include "serialiser/rsbaseserial.h"
#include "serialiser/rsrttitems.h"
#include "serialiser/rstlvbase.h"
//#include "serialiser/rstlvbase.h"
/***
#define RSSERIAL_DEBUG 1

View File

@ -30,7 +30,6 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
/**************************************************************************/

View File

@ -50,27 +50,43 @@ const uint16_t RS_SERVICE_TYPE_HEARTBEAT = 0x0016;
const uint16_t RS_SERVICE_TYPE_FILE_TRANSFER = 0x0017;
const uint16_t RS_SERVICE_TYPE_GROUTER = 0x0018;
/* BanList Still Testing at the moment - Service Only */
const uint16_t RS_SERVICE_TYPE_BANLIST = 0x0101;
const uint16_t RS_SERVICE_TYPE_SERVICEINFO = 0x0020;
/* Bandwidth Control */
const uint16_t RS_SERVICE_TYPE_BWCTRL = 0x0021;
const uint16_t RS_SERVICE_TYPE_SERVICEINFO = 0x0201;
// Non essential services.
const uint16_t RS_SERVICE_TYPE_BANLIST = 0x0101;
const uint16_t RS_SERVICE_TYPE_STATUS = 0x0102;
/* Caches based on p3distrib (Cache Only)
* Unfortunately, noone changed the DUMMY IDS... so we are stuck with them!
*/
const uint16_t RS_SERVICE_TYPE_DISTRIB = 0xf110;
const uint16_t RS_SERVICE_TYPE_FORUM = 0xf120;
const uint16_t RS_SERVICE_TYPE_CHANNEL = 0xf130;
const uint16_t RS_SERVICE_TYPE_CHANNEL_SOCKET = 0xf140;
/* New Cache Services */
/* Rs Network Exchange Service */
const uint16_t RS_SERVICE_TYPE_NXS = 0x0200;
const uint16_t RS_SERVICE_GXS_TYPE_GXSID = 0x0211;
const uint16_t RS_SERVICE_GXS_TYPE_PHOTO = 0x0212;
const uint16_t RS_SERVICE_GXS_TYPE_WIKI = 0x0213;
const uint16_t RS_SERVICE_GXS_TYPE_WIRE = 0x0214;
const uint16_t RS_SERVICE_GXS_TYPE_FORUMS = 0x0215;
const uint16_t RS_SERVICE_GXS_TYPE_POSTED = 0x0216;
const uint16_t RS_SERVICE_GXS_TYPE_CHANNELS = 0x0217;
const uint16_t RS_SERVICE_GXS_TYPE_GXSCIRCLE = 0x0218;
// not gxs, but used with identities.
const uint16_t RS_SERVICE_GXS_TYPE_REPUTATION = 0x0219;
const uint16_t RS_SERVICE_TYPE_GXS_RECOGN = 0x0220;
// Experimental Services.
/* DSDV Testing at the moment - Service Only */
const uint16_t RS_SERVICE_TYPE_DSDV = 0x1010;
/* Latency RTT Measurements */
const uint16_t RS_SERVICE_TYPE_RTT = 0x1011;
/* Status - Service only */
const uint16_t RS_SERVICE_TYPE_STATUS = 0xf020;
/***************** IDS ALLOCATED FOR PLUGINS ******************/
// 2000+
const uint16_t RS_SERVICE_TYPE_PLUGIN_ARADO_ID = 0x0401;
const uint16_t RS_SERVICE_TYPE_PLUGIN_QCHESS_ID = 0x0402;
const uint16_t RS_SERVICE_TYPE_PLUGIN_FEEDREADER = 0x0403;
const uint16_t RS_SERVICE_TYPE_PLUGIN_ARADO_ID = 0x2001;
const uint16_t RS_SERVICE_TYPE_PLUGIN_QCHESS_ID = 0x2002;
const uint16_t RS_SERVICE_TYPE_PLUGIN_FEEDREADER = 0x2003;
/****************** BELOW ARE ONLY THEORETICAL (CAN BE CHANGED) *****/
@ -93,82 +109,36 @@ const uint16_t RS_SERVICE_TYPE_PLUGIN_FEEDREADER = 0x0403;
*/
/*! for Qblog service (Cache Only) */
const uint16_t RS_SERVICE_TYPE_QBLOG = 0xf010;
//const uint16_t RS_SERVICE_TYPE_QBLOG = 0xf010;
/* TEST VOIP - Service only */
// NOT SURE WHATS HAPPENING WITH THIS ONE?
// SHOULD BE DEFINED IN PLUGIN SECTION!
//const uint16_t RS_SERVICE_TYPE_VOIP = 0xf011;
/* Status - Service only */
//const uint16_t RS_SERVICE_TYPE_STATUS = 0xf020;
/* Proxy - Service only */
const uint16_t RS_SERVICE_TYPE_PROXY = 0xf030;
/* DSDV Testing at the moment - Service Only */
const uint16_t RS_SERVICE_TYPE_DSDV = 0xf050;
/* Latency RTT Measurements */
const uint16_t RS_SERVICE_TYPE_RTT = 0xf051;
/* Bandwidth Testing at the moment - Service Only */
const uint16_t RS_SERVICE_TYPE_BWCTRL = 0xf060;
//const uint16_t RS_SERVICE_TYPE_DISTRIB = 0xf110;
//const uint16_t RS_SERVICE_TYPE_FORUM = 0xf120;
//const uint16_t RS_SERVICE_TYPE_CHANNEL = 0xf130;
//const uint16_t RS_SERVICE_TYPE_CHANNEL_SOCKET = 0xf140;
//const uint16_t RS_SERVICE_TYPE_PROXY = 0xf030;
/* Games/External Apps - Service Only */
const uint16_t RS_SERVICE_TYPE_GAME_LAUNCHER = 0xf200;
const uint16_t RS_SERVICE_TYPE_PORT = 0xf201;
//const uint16_t RS_SERVICE_TYPE_GAME_LAUNCHER = 0xf200;
//const uint16_t RS_SERVICE_TYPE_PORT = 0xf201;
/* Example Games (NOT USED YET!) */
/* Board Games */
const uint16_t RS_SERVICE_TYPE_GAME_QTCHESS = 0xf211;
const uint16_t RS_SERVICE_TYPE_GAME_QGO = 0xf212;
//const uint16_t RS_SERVICE_TYPE_GAME_QTCHESS = 0xf211;
//const uint16_t RS_SERVICE_TYPE_GAME_QGO = 0xf212;
/* Card Games */
const uint16_t RS_SERVICE_TYPE_GAME_BIGTWO = 0xf213;
const uint16_t RS_SERVICE_TYPE_GAME_POKER = 0xf214;
/* New Cache Services */
/* Rs Network Exchange Service */
const uint16_t RS_SERVICE_TYPE_NXS = 0xf300;
const uint16_t RS_SERVICE_GXSV2_TYPE_GXSID = 0xf311;
const uint16_t RS_SERVICE_GXSV2_TYPE_GXSCIRCLE = 0xf312;
const uint16_t RS_SERVICE_GXSV2_TYPE_PHOTO = 0xf313;
const uint16_t RS_SERVICE_GXSV2_TYPE_WIKI = 0xf314;
const uint16_t RS_SERVICE_GXSV2_TYPE_WIRE = 0xf315;
const uint16_t RS_SERVICE_GXSV2_TYPE_FORUMS = 0xf316;
const uint16_t RS_SERVICE_GXSV2_TYPE_POSTED = 0xf317;
const uint16_t RS_SERVICE_GXSV2_TYPE_CHANNELS = 0xf318;
const uint16_t RS_SERVICE_GXSV2_TYPE_REPUTATION = 0xf319;
const uint16_t RS_SERVICE_GXSV3_TYPE_GXSID = 0xf321;
const uint16_t RS_SERVICE_GXSV3_TYPE_PHOTO = 0xf322;
const uint16_t RS_SERVICE_GXSV3_TYPE_WIKI = 0xf323;
const uint16_t RS_SERVICE_GXSV3_TYPE_WIRE = 0xf324;
const uint16_t RS_SERVICE_GXSV3_TYPE_FORUMS = 0xf325;
const uint16_t RS_SERVICE_GXSV3_TYPE_POSTED = 0xf326;
const uint16_t RS_SERVICE_GXSV3_TYPE_CHANNELS = 0xf327;
const uint16_t RS_SERVICE_GXSV3_TYPE_GXSCIRCLE = 0xf328;
const uint16_t RS_SERVICE_GXSV3_TYPE_REPUTATION = 0xf329;
const uint16_t RS_SERVICE_TYPE_GXS_RECOGN = 0xf331;
//const uint16_t RS_SERVICE_TYPE_GAME_BIGTWO = 0xf213;
//const uint16_t RS_SERVICE_TYPE_GAME_POKER = 0xf214;
/***************** IDS ALLOCATED FOR PLUGINS ******************/
const uint16_t RS_SERVICE_TYPE_PLUGIN_ARADO_TEST_ID1 = 0xf401;
const uint16_t RS_SERVICE_TYPE_PLUGIN_QCHESS_TEST_ID1 = 0xf402;
//const uint16_t RS_SERVICE_TYPE_PLUGIN_ARADO_TEST_ID1 = 0xf401;
//const uint16_t RS_SERVICE_TYPE_PLUGIN_QCHESS_TEST_ID1 = 0xf402;
// test
const uint16_t RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM = 0xf403;
//const uint16_t RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM = 0xf403;
#endif /* RS_SERVICE_IDS_H */

View File

@ -36,7 +36,7 @@
/***** RsServiceInfo ****/
template<>
std::ostream &RsTlvParamRef<RsServiceInfo>::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvParamRef<RsServiceInfo>::print(std::ostream &out, uint16_t indent) const
{
out << "RsServiceInfo: " << mParam.mServiceType << " name " << mParam.mServiceName;
out << std::endl;
@ -47,7 +47,7 @@ std::ostream &RsTlvParamRef<RsServiceInfo>::print(std::ostream &out, uint16_t in
}
template<>
uint32_t RsTlvParamRef<RsServiceInfo>::TlvSize()
uint32_t RsTlvParamRef<RsServiceInfo>::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + 4 for size */
@ -66,7 +66,7 @@ void RsTlvParamRef<RsServiceInfo>::TlvClear()
}
template<>
bool RsTlvParamRef<RsServiceInfo>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<RsServiceInfo>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();

View File

@ -24,15 +24,17 @@
*
*/
#include "rstlvaddrs.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvaddrs.h"
#include "serialiser/rsbaseserial.h"
#include "rstlvbase.h"
#if 0
#include "rstlvtypes.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <iomanip>
#include <iostream>
#endif
/************************************* RsTlvIpAddress ************************************/
@ -49,7 +51,7 @@ void RsTlvIpAddress::TlvClear()
sockaddr_storage_clear(addr);
}
uint32_t RsTlvIpAddress::TlvSize()
uint32_t RsTlvIpAddress::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE;
switch(addr.ss_family)
@ -67,7 +69,7 @@ uint32_t RsTlvIpAddress::TlvSize()
return s;
}
bool RsTlvIpAddress::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddress::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -101,7 +103,7 @@ bool RsTlvIpAddress::SetTlv(void *data, uint32_t size, uint32_t *offset) /* ser
}
bool RsTlvIpAddress::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddress::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -163,7 +165,7 @@ bool RsTlvIpAddress::GetTlv(void *data, uint32_t size, uint32_t *offset) /* ser
}
std::ostream &RsTlvIpAddress::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvIpAddress::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvIpAddress", indent);
uint16_t int_Indent = indent + 2;
@ -194,7 +196,7 @@ void RsTlvIpAddressInfo::TlvClear()
source = 0;
}
uint32_t RsTlvIpAddressInfo::TlvSize()
uint32_t RsTlvIpAddressInfo::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + IpAddr + 8 for time & 4 for size */
@ -206,7 +208,7 @@ uint32_t RsTlvIpAddressInfo::TlvSize()
}
bool RsTlvIpAddressInfo::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddressInfo::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -231,7 +233,7 @@ bool RsTlvIpAddressInfo::SetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
bool RsTlvIpAddressInfo::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddressInfo::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -279,7 +281,7 @@ bool RsTlvIpAddressInfo::GetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
std::ostream &RsTlvIpAddressInfo::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvIpAddressInfo::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvIpAddressInfo", indent);
uint16_t int_Indent = indent + 2;
@ -300,7 +302,7 @@ std::ostream &RsTlvIpAddressInfo::print(std::ostream &out, uint16_t indent)
#if 0
/************************************* RsTlvIpAddrSet ************************************/
void RsTlvIpAddrSet::TlvClear()
@ -308,7 +310,7 @@ void RsTlvIpAddrSet::TlvClear()
addrs.clear();
}
uint32_t RsTlvIpAddrSet::TlvSize()
uint32_t RsTlvIpAddrSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
@ -327,7 +329,7 @@ uint32_t RsTlvIpAddrSet::TlvSize()
return s;
}
bool RsTlvIpAddrSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddrSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -355,7 +357,7 @@ return ok;
}
bool RsTlvIpAddrSet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvIpAddrSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -427,7 +429,7 @@ bool RsTlvIpAddrSet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* ser
}
// prints out contents of RsTlvIpAddrSet
std::ostream &RsTlvIpAddrSet::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvIpAddrSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvIpAddrSet", indent);
uint16_t int_Indent = indent + 2;
@ -443,3 +445,4 @@ std::ostream &RsTlvIpAddrSet::print(std::ostream &out, uint16_t indent)
/************************************* RsTlvIpAddressInfo ************************************/
#endif

View File

@ -1,5 +1,4 @@
#ifndef RS_TLV_ADDRS_TYPES_H
#define RS_TLV_ADDRS_TYPES_H
#pragma once
/*
* libretroshare/src/serialiser: rstlvaddrs.h
@ -30,20 +29,22 @@
* These are the Compound TLV structures that must be (un)packed.
******************************************************************/
#include <map>
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#include "util/rsnet.h"
#include <list>
#include "serialiser/rstlvlist.h"
class RsTlvIpAddress: public RsTlvItem
{
public:
RsTlvIpAddress();
virtual ~RsTlvIpAddress() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
struct sockaddr_storage addr; // Mandatory :
};
@ -54,17 +55,20 @@ class RsTlvIpAddressInfo: public RsTlvItem
public:
RsTlvIpAddressInfo();
virtual ~RsTlvIpAddressInfo() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
RsTlvIpAddress addr; // Mandatory :
uint64_t seenTime; // Mandatory :
uint32_t source; // Mandatory :
};
typedef t_RsTlvList<RsTlvIpAddressInfo,TLV_TYPE_ADDRESS_SET> RsTlvIpAddrSet;
#if 0
class RsTlvIpAddrSet: public RsTlvItem
{
public:
@ -78,7 +82,6 @@ virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvIpAddressInfo> addrs; // Mandatory :
};
#endif

View File

@ -24,15 +24,10 @@
*
*/
#include "rstlvbanlist.h"
#include "serialiser/rstlvbanlist.h"
#include "serialiser/rstlvbase.h"
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <iomanip>
#include <iostream>
#include "serialiser/rsbaseserial.h"
/************************************* RsTlvBanListEntry ************************************/
@ -51,7 +46,7 @@ void RsTlvBanListEntry::TlvClear()
age = 0;
}
uint32_t RsTlvBanListEntry::TlvSize()
uint32_t RsTlvBanListEntry::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE;
@ -64,7 +59,7 @@ uint32_t RsTlvBanListEntry::TlvSize()
}
bool RsTlvBanListEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvBanListEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -89,7 +84,7 @@ bool RsTlvBanListEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
bool RsTlvBanListEntry::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvBanListEntry::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -137,7 +132,7 @@ bool RsTlvBanListEntry::GetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
std::ostream &RsTlvBanListEntry::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvBanListEntry::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvBanListEntry", indent);
uint16_t int_Indent = indent + 2;
@ -163,151 +158,3 @@ std::ostream &RsTlvBanListEntry::print(std::ostream &out, uint16_t indent)
}
/************************************* RsTlvBanList ************************************/
RsTlvBanList::RsTlvBanList()
{
}
void RsTlvBanList::TlvClear()
{
entries.clear();
}
uint32_t RsTlvBanList::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
std::list<RsTlvBanListEntry>::iterator it;
if(!entries.empty())
{
for(it = entries.begin(); it != entries.end() ; ++it)
s += it->TlvSize();
}
return s;
}
bool RsTlvBanList::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_BAN_LIST , tlvsize);
if(!entries.empty())
{
std::list<RsTlvBanListEntry>::iterator it;
for(it = entries.begin(); it != entries.end() ; ++it)
ok &= it->SetTlv(data, size, offset);
}
return ok;
}
bool RsTlvBanList::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_BAN_LIST) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_BAN_ENTRY:
{
RsTlvBanListEntry entry;
ok &= entry.GetTlv(data, size, offset);
if (ok)
{
entries.push_back(entry);
}
}
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
break;
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvBanList::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
// prints out contents of RsTlvBanList
std::ostream &RsTlvBanList::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvBanList", indent);
uint16_t int_Indent = indent + 2;
std::list<RsTlvBanListEntry>::iterator it;
for(it = entries.begin(); it != entries.end() ; ++it)
it->print(out, int_Indent);
printEnd(out, "RsTlvBanList", indent);
return out;
}
/************************************* RsTlvBanList ************************************/

View File

@ -1,5 +1,4 @@
#ifndef RS_TLV_BANLIST_TYPES_H
#define RS_TLV_BANLIST_TYPES_H
#pragma once
/*
* libretroshare/src/serialiser: rstlvbanlist.h
@ -30,10 +29,10 @@
* These are the Compound TLV structures that must be (un)packed.
******************************************************************/
#include <map>
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvaddrs.h"
#include "util/rsnet.h"
#include "serialiser/rstlvlist.h"
#include "serialiser/rstlvbase.h"
#define RSDSDV_MAX_ROUTE_TABLE 1000
@ -42,11 +41,11 @@ class RsTlvBanListEntry: public RsTlvItem
public:
RsTlvBanListEntry();
virtual ~RsTlvBanListEntry() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
RsTlvIpAddress addr;
uint32_t level;
@ -54,20 +53,8 @@ virtual std::ostream &print(std::ostream &out, uint16_t indent);
uint32_t age;
};
class RsTlvBanList: public RsTlvItem
{
public:
RsTlvBanList();
virtual ~RsTlvBanList() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvBanListEntry> entries;
};
typedef t_RsTlvList<RsTlvBanListEntry,TLV_TYPE_BAN_LIST> RsTlvBanList;
#endif

View File

@ -1,5 +1,4 @@
#ifndef RS_TLV_BASE_H
#define RS_TLV_BASE_H
#pragma once
/*
* libretroshare/src/serialiser: rstlvbase.h
@ -62,11 +61,11 @@
*
******************************************************************/
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <string>
#include "util/rsnet.h"
/* 0b 0000 0000 0001 XXXX UInt8 */
/* 0b 0000 0000 0010 XXXX UInt16 */
/* 0b 0000 0000 0011 XXXX UInt32 */
@ -105,11 +104,6 @@ const uint32_t TLV_HEADER_LEN_SIZE = 4;
const uint32_t TLV_HEADER_SIZE = TLV_HEADER_TYPE_SIZE + TLV_HEADER_LEN_SIZE;
/* TLV HEADER SIZE (Reference) *******************************/
const uint16_t TLV_TYPE_UINT8_SERID = 0x0010;
const uint16_t TLV_TYPE_UINT16_SERID = 0x0020;
const uint16_t TLV_TYPE_UINT32_SIZE = 0x0030;
const uint16_t TLV_TYPE_UINT32_POP = 0x0031;
const uint16_t TLV_TYPE_UINT32_AGE = 0x0032;
@ -141,22 +135,6 @@ const uint16_t TLV_TYPE_STR_CERT_SSL = 0x005e;
const uint16_t TLV_TYPE_STR_VERSION = 0x005f;
const uint16_t TLV_TYPE_STR_PARAM = 0x0054; /* same as VALUE ---- TO FIX */
/* Wide Chars (4 bytes per char) for internationalisation */
const uint16_t TLV_TYPE_WSTR_PEERID = 0x0060;
const uint16_t TLV_TYPE_WSTR_NAME = 0x0061;
const uint16_t TLV_TYPE_WSTR_PATH = 0x0062;
const uint16_t TLV_TYPE_WSTR_KEY = 0x0063;
const uint16_t TLV_TYPE_WSTR_VALUE = 0x0064;
const uint16_t TLV_TYPE_WSTR_COMMENT = 0x0065;
const uint16_t TLV_TYPE_WSTR_TITLE = 0x0066;
const uint16_t TLV_TYPE_WSTR_MSG = 0x0067;
const uint16_t TLV_TYPE_WSTR_SUBJECT = 0x0068;
const uint16_t TLV_TYPE_WSTR_LINK = 0x0069;
const uint16_t TLV_TYPE_WSTR_GENID = 0x006a;
/* Hashs are always strings */
const uint16_t TLV_TYPE_STR_HASH_SHA1 = 0x0070;
const uint16_t TLV_TYPE_STR_HASH_ED2K = 0x0071;
@ -178,8 +156,6 @@ const uint16_t TLV_TYPE_STR_PARENTID = 0x00a2;
const uint16_t TLV_TYPE_STR_THREADID = 0x00a3;
const uint16_t TLV_TYPE_STR_KEYID = 0x00a4;
const uint16_t TLV_TYPE_WSTR_CATEGORY = 0x00b0;
/* even MORE string Ids for GXS services */
const uint16_t TLV_TYPE_STR_CAPTION = 0x00b1;
@ -220,9 +196,7 @@ const uint16_t TLV_TYPE_FILESET = 0x1001;
const uint16_t TLV_TYPE_FILEDATA = 0x1002;
const uint16_t TLV_TYPE_KEYVALUE = 0x1010;
const uint16_t TLV_TYPE_WKEYVALUE = 0x1012;
const uint16_t TLV_TYPE_KEYVALUESET = 0x1011;
const uint16_t TLV_TYPE_WKEYVALUESET = 0x1013;
const uint16_t TLV_TYPE_STRINGSET = 0x1020; /* dummy non-existant */
const uint16_t TLV_TYPE_PEERSET = 0x1021;
@ -255,6 +229,7 @@ const uint16_t TLV_TYPE_BAN_ENTRY = 0x1090;
const uint16_t TLV_TYPE_BAN_LIST = 0x1091;
const uint32_t RSTLV_IMAGE_TYPE_PNG = 0x0001;
const uint32_t RSTLV_IMAGE_TYPE_JPG = 0x0002;
@ -317,4 +292,3 @@ above(SetTlvbinData) is partially implemented
bool GetTlvBinData(void* data, uint32_t size, uint32_t* offset, uint16_t type, void* data_bin, uint32_t len_tlv)
*************************************/
#endif

View File

@ -0,0 +1,213 @@
/*
* libretroshare/src/serialiser: rstlvbinary.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "serialiser/rstlvbinary.h"
#include "serialiser/rstlvbase.h"
#include <stdlib.h>
#include <sstream>
#include <iomanip>
#define TLV_DEBUG 1
/*!********************************** RsTlvFileBinaryData **********************************/
RsTlvBinaryData::RsTlvBinaryData(uint16_t t)
:tlvtype(t), bin_len(0), bin_data(NULL)
{
return;
}
RsTlvBinaryData::RsTlvBinaryData(const RsTlvBinaryData &b)
: tlvtype(b.tlvtype), bin_len(0) , bin_data(NULL) {
setBinData(b.bin_data, b.bin_len);
}
RsTlvBinaryData::~RsTlvBinaryData()
{
TlvClear();
}
void RsTlvBinaryData::operator =(const RsTlvBinaryData& b){
setBinData(b.bin_data, b.bin_len);
tlvtype = b.tlvtype;
}
/// used to allocate memory andinitialize binary data member
bool RsTlvBinaryData::setBinData(const void *data, uint32_t size)
{
/* ready to load */
TlvClear();
/* get mandatory */
/* the rest of the TLV size binary data */
bin_len = size;
if (bin_len == 0)
{
bin_data = NULL;
return true;
}
bin_data = malloc(bin_len);
memcpy(bin_data, data, bin_len);
return true;
}
void RsTlvBinaryData::TlvClear()
{
if (bin_data)
{
free(bin_data);
}
TlvShallowClear();
}
void RsTlvBinaryData::TlvShallowClear()
{
bin_data = NULL;
bin_len = 0;
}
uint32_t RsTlvBinaryData::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
if (bin_data != NULL)
s += bin_len; // len is the size of data
return s;
}
bool RsTlvBinaryData::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, tlvtype, tlvsize);
/* add mandatory data */
// Warning: this is actually not an error if bin_len=0, as it does not
// corrupt the packet structure. We thus still return true in this case.
//
if (bin_data != NULL && bin_len > 0)
{
memcpy(&(((uint8_t *) data)[*offset]), bin_data, bin_len);
*offset += bin_len;
}
return ok;
}
bool RsTlvBinaryData::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
{
return false; /* not enough space to get the header */
}
uint16_t tlvtype_in = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvsize < TLV_HEADER_SIZE)
{
return false; /* bad tlv size */
}
if (tlvtype != tlvtype_in) /* check type */
return false;
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
bool ok = setBinData(&(((uint8_t *) data)[*offset]), tlvsize - TLV_HEADER_SIZE);
(*offset) += bin_len;
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvBinaryData::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
std::ostream &RsTlvBinaryData::print(std::ostream &out, uint16_t indent) const
{
uint16_t int_Indent = indent + 2;
uint32_t i;
std::ostringstream sout;
printIndent(sout, indent);
sout << "RsTlvBinaryData: Type: " << tlvtype << " Size: " << bin_len;
sout << std::hex;
for(i = 0; i < bin_len; i++)
{
if (i % 16 == 0)
{
sout << std::endl;
printIndent(sout, int_Indent);
}
sout << std::setw(2) << std::setfill('0')
<< (int) (((unsigned char *) bin_data)[i]) << ":";
}
sout << std::endl;
out << sout.str();
printEnd(out, "RsTlvBinaryData", indent);
return out;
}

View File

@ -0,0 +1,63 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvbinary.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvitem.h"
class RsTlvBinaryData: public RsTlvItem
{
public:
RsTlvBinaryData(uint16_t t);
RsTlvBinaryData(const RsTlvBinaryData& b); // as per rule of three
void operator=(const RsTlvBinaryData& b); // as per rule of three
virtual ~RsTlvBinaryData(); // as per rule of three
virtual uint32_t TlvSize() const;
virtual void TlvClear(); /*! Initialize fields to empty legal values ( "0", "", etc) */
virtual void TlvShallowClear(); /*! Don't delete the binary data */
/// Serialise.
/*! Serialise Tlv to buffer(*data) of 'size' bytes starting at *offset */
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
/// Deserialise.
/*! Deserialise Tlv buffer(*data) of 'size' bytes starting at *offset */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const; /*! Error/Debug util function */
bool setBinData(const void *data, uint32_t size);
uint16_t tlvtype; /// set/checked against TLV input
uint32_t bin_len; /// size of malloc'ed data (not serialised)
void *bin_data; /// mandatory
};

View File

@ -25,14 +25,7 @@
*/
#include "rstlvdsdv.h"
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <iomanip>
#include <iostream>
/************************************* RsTlvDsdvEndPoint ************************************/
@ -50,7 +43,7 @@ void RsTlvDsdvEndPoint::TlvClear()
serviceId.clear();
}
uint32_t RsTlvDsdvEndPoint::TlvSize()
uint32_t RsTlvDsdvEndPoint::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + 4 + str + str */
@ -62,7 +55,7 @@ uint32_t RsTlvDsdvEndPoint::TlvSize()
}
bool RsTlvDsdvEndPoint::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvDsdvEndPoint::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -86,7 +79,7 @@ bool RsTlvDsdvEndPoint::SetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
bool RsTlvDsdvEndPoint::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvDsdvEndPoint::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -133,7 +126,7 @@ bool RsTlvDsdvEndPoint::GetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
std::ostream &RsTlvDsdvEndPoint::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvDsdvEndPoint::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvDsdvEndPoint", indent);
uint16_t int_Indent = indent + 2;
@ -170,7 +163,7 @@ void RsTlvDsdvEntry::TlvClear()
distance = 0;
}
uint32_t RsTlvDsdvEntry::TlvSize()
uint32_t RsTlvDsdvEntry::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + EndPoint.Size + 4 + 4 */
@ -182,7 +175,7 @@ uint32_t RsTlvDsdvEntry::TlvSize()
}
bool RsTlvDsdvEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvDsdvEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -207,7 +200,7 @@ bool RsTlvDsdvEntry::SetTlv(void *data, uint32_t size, uint32_t *offset) /* ser
}
bool RsTlvDsdvEntry::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvDsdvEntry::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -255,7 +248,7 @@ bool RsTlvDsdvEntry::GetTlv(void *data, uint32_t size, uint32_t *offset) /* ser
}
std::ostream &RsTlvDsdvEntry::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvDsdvEntry::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvDsdvEntry", indent);
uint16_t int_Indent = indent + 2;
@ -277,6 +270,7 @@ std::ostream &RsTlvDsdvEntry::print(std::ostream &out, uint16_t indent)
/************************************* RsTlvDsdvEntrySet ************************************/
#if 0
RsTlvDsdvEntrySet::RsTlvDsdvEntrySet()
{
@ -420,6 +414,6 @@ std::ostream &RsTlvDsdvEntrySet::print(std::ostream &out, uint16_t indent)
}
/************************************* RsTlvIpAddressInfo ************************************/
#endif

View File

@ -1,5 +1,4 @@
#ifndef RS_TLV_DSDV_TYPES_H
#define RS_TLV_DSDV_TYPES_H
#pragma once
/*
* libretroshare/src/serialiser: rstlvdsdv.h
@ -30,9 +29,9 @@
* These are the Compound TLV structures that must be (un)packed.
******************************************************************/
#include <map>
#include "serialiser/rstlvtypes.h"
#include "util/rsnet.h"
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvlist.h"
#define RSDSDV_MAX_ROUTE_TABLE 1000
@ -41,11 +40,11 @@ class RsTlvDsdvEndPoint: public RsTlvItem
public:
RsTlvDsdvEndPoint();
virtual ~RsTlvDsdvEndPoint() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint32_t idType;
std::string anonChunk;
@ -57,17 +56,20 @@ class RsTlvDsdvEntry: public RsTlvItem
public:
RsTlvDsdvEntry();
virtual ~RsTlvDsdvEntry() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
RsTlvDsdvEndPoint endPoint;
uint32_t sequence;
uint32_t distance;
};
typedef t_RsTlvList<RsTlvDsdvEntry,TLV_TYPE_DSDV_ENTRY_SET> RsTlvDsdvEntrySet;
#if 0
class RsTlvDsdvEntrySet: public RsTlvItem
{
public:
@ -82,6 +84,5 @@ virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvDsdvEntry> entries;
};
#endif

View File

@ -24,11 +24,15 @@
*
*/
#include "serialiser/rstlvfileitem.h"
#include "serialiser/rsbaseserial.h"
#if 0
#include <iostream>
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rsbaseserial.h"
#endif
/***
* #define TLV_FI_DEBUG 1
@ -52,7 +56,7 @@ void RsTlvFileItem::TlvClear()
hashset.TlvClear();
}
uint32_t RsTlvFileItem::TlvSize()
uint32_t RsTlvFileItem::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
s += 8; /* filesize */
@ -119,7 +123,7 @@ uint32_t RsTlvFileItem::TlvSize()
}
/* serialise the data to the buffer */
bool RsTlvFileItem::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvFileItem::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -342,7 +346,7 @@ bool RsTlvFileItem::GetTlv(void *data, uint32_t size, uint32_t *offset)
/* print it out */
std::ostream &RsTlvFileItem::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvFileItem::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvFileItem", indent);
uint16_t int_Indent = indent + 2;
@ -401,13 +405,13 @@ void RsTlvFileSet::TlvClear()
items.clear();
}
uint32_t RsTlvFileSet::TlvSize()
uint32_t RsTlvFileSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* first determine the total size of RstlvFileItems in list */
std::list<RsTlvFileItem>::iterator it;
std::list<RsTlvFileItem>::const_iterator it;
for(it = items.begin(); it != items.end() ; ++it)
{
@ -427,7 +431,7 @@ uint32_t RsTlvFileSet::TlvSize()
/* serialize data to the buffer */
bool RsTlvFileSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvFileSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -442,7 +446,7 @@ bool RsTlvFileSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* se
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_FILESET, tlvsize);
/* add mandatory parts first */
std::list<RsTlvFileItem>::iterator it;
std::list<RsTlvFileItem>::const_iterator it;
for(it = items.begin(); it != items.end() ; ++it)
{
@ -542,7 +546,7 @@ bool RsTlvFileSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
/* print it out */
std::ostream &RsTlvFileSet::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvFileSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvFileSet", indent);
uint16_t int_Indent = indent + 2;
@ -550,7 +554,7 @@ std::ostream &RsTlvFileSet::print(std::ostream &out, uint16_t indent)
printIndent(out, int_Indent);
out << "Mandatory:" << std::endl;
std::list<RsTlvFileItem>::iterator it;
std::list<RsTlvFileItem>::const_iterator it;
for(it = items.begin(); it != items.end() ; ++it)
{
@ -595,7 +599,7 @@ void RsTlvFileData::TlvClear()
}
uint32_t RsTlvFileData::TlvSize()
uint32_t RsTlvFileData::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
@ -608,7 +612,7 @@ uint32_t RsTlvFileData::TlvSize()
}
bool RsTlvFileData::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvFileData::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -633,7 +637,7 @@ bool RsTlvFileData::SetTlv(void *data, uint32_t size, uint32_t *offset) /* seria
}
bool RsTlvFileData::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvFileData::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
{
@ -684,7 +688,7 @@ bool RsTlvFileData::GetTlv(void *data, uint32_t size, uint32_t *offset) /* seria
}
/* print it out */
std::ostream &RsTlvFileData::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvFileData::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvFileData", indent);
uint16_t int_Indent = indent + 2;

View File

@ -0,0 +1,93 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvfileitem.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvidset.h"
#include "serialiser/rstlvbinary.h"
class RsTlvFileItem: public RsTlvItem
{
public:
RsTlvFileItem();
virtual ~RsTlvFileItem() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint64_t filesize; /// Mandatory: size of file to be downloaded
RsFileHash hash; /// Mandatory: to find file
std::string name; /// Optional: name of file
std::string path; /// Optional: path on host computer
uint32_t pop; /// Optional: Popularity of file
uint32_t age; /// Optional: age of file
// For chunk hashing.
uint32_t piecesize; /// Optional: bytes/piece for hashset.
RsTlvHashSet hashset; /// Optional: chunk hashes.
};
class RsTlvFileSet: public RsTlvItem
{
public:
RsTlvFileSet() { return; }
virtual ~RsTlvFileSet() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::list<RsTlvFileItem> items; /// Mandatory
std::string title; /// Optional: title of file set
std::string comment; /// Optional: comments for file
};
class RsTlvFileData: public RsTlvItem
{
public:
RsTlvFileData();
virtual ~RsTlvFileData() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
RsTlvFileItem file; /// Mandatory: file information
uint64_t file_offset; /// Mandatory: where to start in bin data
RsTlvBinaryData binData; /// Mandatory: serialised file info
};

View File

@ -26,13 +26,16 @@
*
*/
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvgenericparam.h"
#if 0
#include <map>
#include <stdlib.h>
#include <stdint.h>
#include "serialiser/rstlvgenericparam.h"
#endif
/*********************************** RsTlvGenericPairRef ***********************************/
@ -46,11 +49,11 @@ class RsTlvGenericPairRef: public RsTlvItem
mValueType(value_type), mKey(k), mValue(v) { return; }
virtual ~RsTlvGenericPairRef() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint16_t mPairType;
uint16_t mKeyType;
@ -72,11 +75,11 @@ class RsTlvGenericMapRef: public RsTlvItem
mKeyType(key_type), mValueType(value_type), mRefMap(refmap) { return; }
virtual ~RsTlvGenericMapRef() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint16_t mMapType;
uint16_t mPairType;

View File

@ -24,17 +24,9 @@
*
*/
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rstlvgenericmap.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <sstream>
#include <iomanip>
#include <iostream>
#define TLV_DEBUG 1
// Must be different - as this is inline in headers.
#define TLV_GENERICMAP_DEBUG 1
/*********************************** RsTlvGenericPairRef ***********************************/
@ -48,7 +40,7 @@ void RsTlvGenericPairRef<K, V>::TlvClear()
}
template<class K, class V>
uint32_t RsTlvGenericPairRef<K, V>::TlvSize()
uint32_t RsTlvGenericPairRef<K, V>::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
RsTlvParamRef<K> key(mKeyType, mKey);
@ -61,7 +53,7 @@ uint32_t RsTlvGenericPairRef<K, V>::TlvSize()
}
template<class K, class V>
bool RsTlvGenericPairRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvGenericPairRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -94,7 +86,7 @@ bool RsTlvGenericPairRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *off
}
template<class K, class V>
bool RsTlvGenericPairRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvGenericPairRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -130,7 +122,7 @@ bool RsTlvGenericPairRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *off
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
#ifdef TLV_GENERICMAP_DEBUG
std::cerr << "RsTlvGenericPairRef::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
@ -141,7 +133,7 @@ bool RsTlvGenericPairRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *off
}
template<class K, class V>
std::ostream &RsTlvGenericPairRef<K, V>::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvGenericPairRef<K, V>::print(std::ostream &out, uint16_t indent) const
{
//printBase(out, "RsTlvGenericPairRef", indent);
uint16_t int_Indent = indent + 2;
@ -178,7 +170,7 @@ void RsTlvGenericMapRef<K, V>::TlvClear()
}
template<class K, class V>
uint32_t RsTlvGenericMapRef<K, V>::TlvSize()
uint32_t RsTlvGenericMapRef<K, V>::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
@ -193,7 +185,7 @@ uint32_t RsTlvGenericMapRef<K, V>::TlvSize()
}
template<class K, class V>
bool RsTlvGenericMapRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvGenericMapRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -225,7 +217,7 @@ bool RsTlvGenericMapRef<K, V>::SetTlv(void *data, uint32_t size, uint32_t *offs
}
template<class K, class V>
bool RsTlvGenericMapRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvGenericMapRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -283,7 +275,7 @@ bool RsTlvGenericMapRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offs
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
#ifdef TLV_GENERICMAP_DEBUG
std::cerr << "RsTlvGenericMapRef::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
@ -294,7 +286,7 @@ bool RsTlvGenericMapRef<K, V>::GetTlv(void *data, uint32_t size, uint32_t *offs
}
template<class K, class V>
std::ostream &RsTlvGenericMapRef<K, V>::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvGenericMapRef<K, V>::print(std::ostream &out, uint16_t indent) const
{
//printBase(out, "RsTlvGenericMapRef", indent);
uint16_t int_Indent = indent + 2;
@ -313,13 +305,3 @@ std::ostream &RsTlvGenericMapRef<K, V>::print(std::ostream &out, uint16_t indent
return out;
}
// declare likely combinations.
//template class RsTlvGenericMapRef<uint32_t, uint32_t>;
//template class RsTlvGenericMapRef<uint32_t, std::string>;
//template class RsTlvGenericMapRef<std::string, uint32_t>;
//template class RsTlvGenericMapRef<std::string, std::string>;

View File

@ -24,21 +24,15 @@
*
*/
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rstlvgenericmap.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <sstream>
#include <iomanip>
#include "serialiser/rstlvgenericparam.h"
#include "serialiser/rstlvbase.h"
#include <iostream>
#define TLV_DEBUG 1
/* generic print */
template<class T>
std::ostream & RsTlvParamRef<T>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<T>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << " Param: " << mParam;
@ -48,7 +42,7 @@ std::ostream & RsTlvParamRef<T>::print(std::ostream &out, uint16_t indent)
/***** uint16_t ****/
template<>
uint32_t RsTlvParamRef<uint16_t>::TlvSize()
uint32_t RsTlvParamRef<uint16_t>::TlvSize() const
{
return GetTlvUInt16Size();
}
@ -60,7 +54,7 @@ void RsTlvParamRef<uint16_t>::TlvClear()
}
template<>
bool RsTlvParamRef<uint16_t>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<uint16_t>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
uint16_t param = mParam;
return SetTlvUInt16(data, size, offset, mParamType, mParam);
@ -76,7 +70,7 @@ bool RsTlvParamRef<uint16_t>::GetTlv(void *data, uint32_t size, uint32_t *offset
}
template<>
std::ostream & RsTlvParamRef<uint16_t>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<uint16_t>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << "Param: " << mParam;
@ -87,7 +81,7 @@ std::ostream & RsTlvParamRef<uint16_t>::print(std::ostream &out, uint16_t indent
/***** const uint16_t ****/
template<>
uint32_t RsTlvParamRef<const uint16_t>::TlvSize()
uint32_t RsTlvParamRef<const uint16_t>::TlvSize() const
{
return GetTlvUInt16Size();
}
@ -100,7 +94,7 @@ void RsTlvParamRef<const uint16_t>::TlvClear()
template<>
bool RsTlvParamRef<const uint16_t>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<const uint16_t>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
return SetTlvUInt16(data, size, offset, mParamType, mParam);
}
@ -113,17 +107,16 @@ bool RsTlvParamRef<const uint16_t>::GetTlv(void *data, uint32_t size, uint32_t *
template<>
std::ostream & RsTlvParamRef<const uint16_t>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<const uint16_t>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << "Param: " << mParam;
return out;
}
/***** uint32_t ****/
template<>
uint32_t RsTlvParamRef<uint32_t>::TlvSize()
uint32_t RsTlvParamRef<uint32_t>::TlvSize() const
{
return GetTlvUInt32Size();
}
@ -135,7 +128,7 @@ void RsTlvParamRef<uint32_t>::TlvClear()
}
template<>
bool RsTlvParamRef<uint32_t>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<uint32_t>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
return SetTlvUInt32(data, size, offset, mParamType, mParam);
}
@ -147,7 +140,7 @@ bool RsTlvParamRef<uint32_t>::GetTlv(void *data, uint32_t size, uint32_t *offset
}
template<>
std::ostream & RsTlvParamRef<uint32_t>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<uint32_t>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << "Param: " << mParam;
@ -158,7 +151,7 @@ std::ostream & RsTlvParamRef<uint32_t>::print(std::ostream &out, uint16_t indent
/***** const uint32_t ****/
template<>
uint32_t RsTlvParamRef<const uint32_t>::TlvSize()
uint32_t RsTlvParamRef<const uint32_t>::TlvSize() const
{
return GetTlvUInt32Size();
}
@ -170,7 +163,7 @@ void RsTlvParamRef<const uint32_t>::TlvClear()
}
template<>
bool RsTlvParamRef<const uint32_t>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<const uint32_t>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
return SetTlvUInt32(data, size, offset, mParamType, mParam);
}
@ -183,7 +176,7 @@ bool RsTlvParamRef<const uint32_t>::GetTlv(void *data, uint32_t size, uint32_t *
}
template<>
std::ostream & RsTlvParamRef<const uint32_t>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<const uint32_t>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << "Param: " << mParam;
@ -193,7 +186,7 @@ std::ostream & RsTlvParamRef<const uint32_t>::print(std::ostream &out, uint16_t
/***** std::string ****/
template<>
uint32_t RsTlvParamRef<std::string>::TlvSize()
uint32_t RsTlvParamRef<std::string>::TlvSize() const
{
return GetTlvStringSize(mParam);
}
@ -205,7 +198,7 @@ void RsTlvParamRef<std::string>::TlvClear()
}
template<>
bool RsTlvParamRef<std::string>::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvParamRef<std::string>::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
return SetTlvString(data, size, offset, mParamType, mParam);
}
@ -217,7 +210,7 @@ bool RsTlvParamRef<std::string>::GetTlv(void *data, uint32_t size, uint32_t *off
}
template<>
std::ostream & RsTlvParamRef<std::string>::print(std::ostream &out, uint16_t indent)
std::ostream & RsTlvParamRef<std::string>::print(std::ostream &out, uint16_t indent) const
{
printIndent(out, indent);
out << "Type: " << mParamType << "Param: " << mParam;

View File

@ -26,11 +26,14 @@
*
*/
#include "serialiser/rstlvtypes.h"
#include "serialiser/rstlvitem.h"
#if 0
#include <map>
#include <stdlib.h>
#include <stdint.h>
#endif
/**** TLV *****
@ -44,11 +47,11 @@ class RsTlvParamRef: public RsTlvItem
public:
RsTlvParamRef(uint16_t param_type, T &p): mParamType(param_type), mParam(p) {}
virtual ~RsTlvParamRef() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint16_t mParamType;
T &mParam;

View File

@ -0,0 +1,181 @@
/*
* libretroshare/src/serialiser: rstlvtypes.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvidset.h"
#if 0
#include "rstlvbase.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <sstream>
#include <iomanip>
#include <iostream>
#endif
#define TLV_DEBUG 1
/************************************* Service Id Set ************************************/
void RsTlvServiceIdSet::TlvClear()
{
ids.clear();
}
uint32_t RsTlvServiceIdSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<uint32_t>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (*it > 0)
s += GetTlvUInt32Size();
}
return s;
}
bool RsTlvServiceIdSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_SERVICESET , tlvsize);
/* determine the total size of ids strings in list */
std::list<uint32_t>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (*it > 0)
ok &= SetTlvUInt32(data, tlvend, offset, TLV_TYPE_UINT32_SERID, *it);
}
return ok;
}
bool RsTlvServiceIdSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_SERVICESET) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_UINT32_SERID)
{
uint32_t newIds;
ok &= GetTlvUInt32(data, tlvend, offset, TLV_TYPE_UINT32_SERID, &newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvServiceIdSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvServiceSet contents
std::ostream &RsTlvServiceIdSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvServiceIdSet", indent);
uint16_t int_Indent = indent + 2;
std::list<uint32_t>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvServiceIdSet", indent);
return out;
}

View File

@ -0,0 +1,133 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvidset.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvitem.h"
#include <retroshare/rstypes.h>
#include <retroshare/rsgxsifacetypes.h>
#include <list>
template<class ID_CLASS,uint32_t TLV_TYPE> class t_RsTlvIdSet: public RsTlvItem
{
public:
t_RsTlvIdSet() {}
virtual ~t_RsTlvIdSet() {}
virtual uint32_t TlvSize() const { return ID_CLASS::SIZE_IN_BYTES * ids.size() + TLV_HEADER_SIZE; }
virtual void TlvClear(){ ids.clear() ; }
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const
{ /* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok = ok && SetTlvBase(data, tlvend, offset, TLV_TYPE, tlvsize);
for(typename std::list<ID_CLASS>::const_iterator it(ids.begin());it!=ids.end();++it)
ok = ok && (*it).serialise(data,size,*offset) ;
return ok ;
}
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
while(*offset + ID_CLASS::SIZE_IN_BYTES <= tlvend)
{
ID_CLASS id ;
ok = ok && id.deserialise(data,size,*offset) ;
ids.push_back(id) ;
}
if(*offset != tlvend)
std::cerr << "(EE) deserialisaiton error in " << __PRETTY_FUNCTION__ << std::endl;
return *offset == tlvend ;
}
virtual std::ostream &print(std::ostream &out, uint16_t /* indent */) const
{
std::cerr << __PRETTY_FUNCTION__ << ": not implemented" << std::endl;
return out ;
}
virtual std::ostream &printHex(std::ostream &out, uint16_t /* indent */) const /* SPECIAL One */
{
std::cerr << __PRETTY_FUNCTION__ << ": not implemented" << std::endl;
return out ;
}
std::list<ID_CLASS> ids ;
};
typedef t_RsTlvIdSet<RsPeerId,TLV_TYPE_PEERSET> RsTlvPeerIdSet ;
typedef t_RsTlvIdSet<RsPgpId,TLV_TYPE_PGPIDSET> RsTlvPgpIdSet ;
typedef t_RsTlvIdSet<Sha1CheckSum,TLV_TYPE_HASHSET> RsTlvHashSet ;
typedef t_RsTlvIdSet<RsGxsId,TLV_TYPE_GXSIDSET> RsTlvGxsIdSet ;
class RsTlvServiceIdSet: public RsTlvItem
{
public:
RsTlvServiceIdSet() { return; }
virtual ~RsTlvServiceIdSet() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::list<uint32_t> ids; /* Mandatory */
};

View File

@ -1,6 +1,6 @@
/*
* libretroshare/src/serialiser: rstlvfileitem.cc
* libretroshare/src/serialiser: rstlvimage.cc
*
* RetroShare Serialiser.
*
@ -24,11 +24,14 @@
*
*/
#include "serialiser/rstlvimage.h"
#if 0
#include <iostream>
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "serialiser/rsbaseserial.h"
#endif
/***
* #define TLV_IMG_DEBUG 1
@ -49,7 +52,7 @@ void RsTlvImage::TlvClear()
}
uint32_t RsTlvImage::TlvSize()
uint32_t RsTlvImage::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
@ -61,7 +64,7 @@ uint32_t RsTlvImage::TlvSize()
}
bool RsTlvImage::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvImage::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
#ifdef TLV_IMG_DEBUG
std::cerr << "RsTlvImage::SetTlv()" << std::endl;
@ -108,7 +111,7 @@ bool RsTlvImage::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialis
}
bool RsTlvImage::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvImage::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
#ifdef TLV_IMG_DEBUG
std::cerr << "RsTlvImage::GetTlv()" << std::endl;
@ -176,7 +179,7 @@ bool RsTlvImage::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialis
}
/* print it out */
std::ostream &RsTlvImage::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvImage::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvImage", indent);
uint16_t int_Indent = indent + 2;

View File

@ -0,0 +1,55 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvimage.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvbinary.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rsbaseserial.h"
class RsTlvImage: public RsTlvItem
{
public:
RsTlvImage();
RsTlvImage(const RsTlvImage& );
virtual ~RsTlvImage() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint32_t image_type; // Mandatory:
RsTlvBinaryData binData; // Mandatory: serialised file info
};

View File

@ -0,0 +1,197 @@
/*
* libretroshare/src/serialiser: rstlvtypes.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvitem.h"
#include "rstlvbase.h"
#include <iostream>
#if 0
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <sstream>
#include <iomanip>
#endif
#define TLV_DEBUG 1
void RsTlvItem::TlvShallowClear()
{
TlvClear(); /* unless overloaded! */
}
std::ostream &RsTlvItem::printBase(std::ostream &out, std::string clsName, uint16_t indent) const
{
printIndent(out, indent);
out << "RsTlvItem: " << clsName << " Size: " << TlvSize() << " ***********************";
out << std::endl;
return out;
}
std::ostream &RsTlvItem::printEnd(std::ostream &out, std::string clsName, uint16_t indent) const
{
printIndent(out, indent);
out << "********************** " << clsName << " *********************";
out << std::endl;
return out;
}
std::ostream &printIndent(std::ostream &out, uint16_t indent)
{
for(int i = 0; i < indent; i++)
{
out << " ";
}
return out;
}
RsTlvUnit::RsTlvUnit(const uint16_t tlv_type)
:RsTlvItem(), mTlvType(tlv_type)
{
return;
}
uint32_t RsTlvUnit::TlvSize() const
{
return TLV_HEADER_SIZE + TlvSizeUnit();
}
/* serialise */
bool RsTlvUnit::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvUnit::SetTlv()" << std::endl;
#endif
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvImage::SetTlv() ERROR not enough space" << std::endl;
#endif
return false; /* not enough space */
}
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_IMAGE , tlvsize);
if (!ok)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvUnit::SetTlv() ERROR Setting base" << std::endl;
#endif
return false;
}
ok &= SetTlvUnit(data, tlvend, offset);
#ifdef TLV_DEBUG
if (!ok)
std::cerr << "RsTlvUnit::SetTlv() ERROR in SetTlvUnit" << std::endl;
#endif
return ok;
}
/* deserialise */
bool RsTlvUnit::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvUnit::GetTlv() ERROR not enough size for header";
std::cerr << std::endl;
#endif
return false;
}
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint16_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
{
#ifdef TLV_IMG_DEBUG
std::cerr << "RsTlvImage::GetTlv() ERROR no space";
std::cerr << std::endl;
#endif
return false; /* not enough space */
}
if (tlvtype != mTlvType) /* check type */
{
#ifdef TLV_IMG_DEBUG
std::cerr << "RsTlvImage::GetTlv() ERROR wrong type";
std::cerr << std::endl;
#endif
return false;
}
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* extract components */
ok &= GetTlvUnit(data, tlvend, offset);
#ifdef TLV_IMG_DEBUG
if (!ok)
{
std::cerr << "RsTlvUnit::GetTlv() ERROR GetTlvUnit() NOK";
std::cerr << std::endl;
}
#endif
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvUnit::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}

View File

@ -0,0 +1,82 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvitem.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include <iosfwd>
#include <string>
#include <inttypes.h>
//! A base class for all tlv items
/*! This class is provided to allow the serialisation and deserialization of compund
tlv items
*/
class RsTlvItem
{
public:
RsTlvItem() { return; }
virtual ~RsTlvItem() { return; }
virtual uint32_t TlvSize() const = 0;
virtual void TlvClear() = 0;
virtual void TlvShallowClear(); /*! Don't delete allocated data */
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const = 0; /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset) = 0; /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent) const = 0;
std::ostream &printBase(std::ostream &out, std::string clsName, uint16_t indent) const;
std::ostream &printEnd(std::ostream &out, std::string clsName, uint16_t indent) const;
};
std::ostream &printIndent(std::ostream &out, uint16_t indent);
class RsTlvUnit: public RsTlvItem
{
public:
RsTlvUnit(uint16_t tlv_type);
virtual ~RsTlvUnit() { return; }
virtual uint32_t TlvSize() const;
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual uint16_t TlvType() const { return mTlvType; }
// These Functions need to be implemented.
//virtual void TlvClear() = 0;
//virtual std::ostream &print(std::ostream &out, uint16_t indent) = 0 const;
virtual uint32_t TlvSizeUnit() const = 0;
virtual bool SetTlvUnit(void *data, uint32_t size, uint32_t *offset) const = 0;
virtual bool GetTlvUnit(void *data, uint32_t size, uint32_t *offset) = 0;
private:
uint16_t mTlvType;
};

View File

@ -25,13 +25,9 @@
*/
#include "rstlvkeys.h"
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <iomanip>
#include <iostream>
#define TLV_DEBUG 1
@ -65,7 +61,7 @@ void RsTlvSecurityKey::ShallowClear()
}
uint32_t RsTlvSecurityKey::TlvSize()
uint32_t RsTlvSecurityKey::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + 4 for size */
@ -81,7 +77,7 @@ uint32_t RsTlvSecurityKey::TlvSize()
}
bool RsTlvSecurityKey::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvSecurityKey::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -114,7 +110,7 @@ bool RsTlvSecurityKey::SetTlv(void *data, uint32_t size, uint32_t *offset) /* s
}
bool RsTlvSecurityKey::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvSecurityKey::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -180,11 +176,10 @@ bool RsTlvSecurityKey::GetTlv(void *data, uint32_t size, uint32_t *offset) /* s
}
return ok;
}
std::ostream &RsTlvSecurityKey::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvSecurityKey::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvSecurityKey", indent);
uint16_t int_Indent = indent + 2;
@ -224,12 +219,12 @@ void RsTlvSecurityKeySet::TlvClear()
keys.clear(); //empty list
}
uint32_t RsTlvSecurityKeySet::TlvSize()
uint32_t RsTlvSecurityKeySet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
std::map<std::string, RsTlvSecurityKey>::iterator it;
std::map<std::string, RsTlvSecurityKey>::const_iterator it;
s += GetTlvStringSize(groupId);
@ -244,7 +239,7 @@ uint32_t RsTlvSecurityKeySet::TlvSize()
return s;
}
bool RsTlvSecurityKeySet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvSecurityKeySet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -269,7 +264,7 @@ bool RsTlvSecurityKeySet::SetTlv(void *data, uint32_t size, uint32_t *offset) /
if(!keys.empty())
{
std::map<std::string, RsTlvSecurityKey>::iterator it;
std::map<std::string, RsTlvSecurityKey>::const_iterator it;
for(it = keys.begin(); it != keys.end() ; ++it)
ok &= (it->second).SetTlv(data, size, offset);
@ -281,7 +276,7 @@ return ok;
}
bool RsTlvSecurityKeySet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvSecurityKeySet::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -357,7 +352,7 @@ bool RsTlvSecurityKeySet::GetTlv(void *data, uint32_t size, uint32_t *offset) /
}
// prints out contents of RsTlvSecurityKeySet
std::ostream &RsTlvSecurityKeySet::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvSecurityKeySet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvSecurityKeySet", indent);
uint16_t int_Indent = indent + 2;
@ -366,7 +361,7 @@ std::ostream &RsTlvSecurityKeySet::print(std::ostream &out, uint16_t indent)
out << "GroupId: " << groupId;
out << std::endl;
std::map<std::string, RsTlvSecurityKey>::iterator it;
std::map<std::string, RsTlvSecurityKey>::const_iterator it;
for(it = keys.begin(); it != keys.end() ; ++it)
(it->second).print(out, int_Indent);
@ -397,7 +392,7 @@ void RsTlvKeySignature::ShallowClear()
signData.bin_len = 0;
}
uint32_t RsTlvKeySignature::TlvSize()
uint32_t RsTlvKeySignature::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header + 4 for size */
@ -407,7 +402,7 @@ uint32_t RsTlvKeySignature::TlvSize()
}
bool RsTlvKeySignature::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvKeySignature::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
@ -445,7 +440,7 @@ bool RsTlvKeySignature::SetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
bool RsTlvKeySignature::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
bool RsTlvKeySignature::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
@ -503,7 +498,7 @@ bool RsTlvKeySignature::GetTlv(void *data, uint32_t size, uint32_t *offset) /*
}
std::ostream &RsTlvKeySignature::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvKeySignature::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvKeySignature", indent);
uint16_t int_Indent = indent + 2;
@ -528,19 +523,19 @@ RsTlvKeySignatureSet::RsTlvKeySignatureSet()
}
std::ostream &RsTlvKeySignatureSet::print(std::ostream &out, uint16_t indent)
std::ostream &RsTlvKeySignatureSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvKeySignatureSet", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
std::map<SignType, RsTlvKeySignature>::iterator mit = keySignSet.begin();
std::map<SignType, RsTlvKeySignature>::const_iterator mit = keySignSet.begin();
for(; mit != keySignSet.end(); mit++)
{
out << "SignType: " << mit->first << std::endl;
RsTlvKeySignature& sign = mit->second;
const RsTlvKeySignature& sign = mit->second;
sign.print(out, indent);
}
@ -555,7 +550,7 @@ void RsTlvKeySignatureSet::TlvClear()
keySignSet.clear();
}
bool RsTlvKeySignatureSet::SetTlv(void *data, uint32_t size, uint32_t *offset)
bool RsTlvKeySignatureSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
@ -579,7 +574,7 @@ bool RsTlvKeySignatureSet::SetTlv(void *data, uint32_t size, uint32_t *offset)
if(!keySignSet.empty())
{
std::map<SignType, RsTlvKeySignature>::iterator it;
std::map<SignType, RsTlvKeySignature>::const_iterator it;
for(it = keySignSet.begin(); it != keySignSet.end() ; ++it)
{
@ -674,10 +669,10 @@ bool RsTlvKeySignatureSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
return ok;
}
uint32_t RsTlvKeySignatureSet::TlvSize()
uint32_t RsTlvKeySignatureSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; // header size
std::map<SignType, RsTlvKeySignature>::iterator it;
std::map<SignType, RsTlvKeySignature>::const_iterator it;
for(it = keySignSet.begin(); it != keySignSet.end() ; ++it)
{

View File

@ -1,5 +1,4 @@
#ifndef RS_TLV_KEY_TYPES_H
#define RS_TLV_KEY_TYPES_H
#pragma once
/*
* libretroshare/src/serialiser: rstlvkeys.h
@ -30,8 +29,10 @@
* These are the Compound TLV structures that must be (un)packed.
******************************************************************/
#include "serialiser/rstlvitem.h"
#include "serialiser/rstlvbinary.h"
#include <map>
#include "serialiser/rstlvtypes.h"
const uint32_t RSTLV_KEY_TYPE_MASK = 0x000f;
const uint32_t RSTLV_KEY_DISTRIB_MASK = 0x00f0;
@ -49,11 +50,11 @@ class RsTlvSecurityKey: public RsTlvItem
public:
RsTlvSecurityKey();
virtual ~RsTlvSecurityKey() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
/* clears KeyData - but doesn't delete - to transfer ownership */
void ShallowClear();
@ -70,11 +71,11 @@ class RsTlvSecurityKeySet: public RsTlvItem
public:
RsTlvSecurityKeySet() { return; }
virtual ~RsTlvSecurityKeySet() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::string groupId; // Mandatory :
std::map<std::string, RsTlvSecurityKey> keys; // Mandatory :
@ -86,11 +87,11 @@ class RsTlvKeySignature: public RsTlvItem
public:
RsTlvKeySignature();
virtual ~RsTlvKeySignature() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
void ShallowClear(); /* clears signData - but doesn't delete */
@ -106,15 +107,13 @@ class RsTlvKeySignatureSet : public RsTlvItem
public:
RsTlvKeySignatureSet();
virtual ~RsTlvKeySignatureSet() { return; }
virtual uint32_t TlvSize();
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::map<SignType, RsTlvKeySignature> keySignSet; // mandatory
};
#endif

View File

@ -1,291 +1,301 @@
/*
* libretroshare/src/serialiser: rstlvkvwide.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvbase.h"
#include "rstlvkvwide.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <iomanip>
#include <iostream>
void RsTlvKeyValueWide::TlvClear()
{
wKey.clear();
wValue.clear();
}
uint32_t RsTlvKeyValueWide::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header size */
s += GetTlvWideStringSize(wKey);
s += GetTlvWideStringSize(wValue);
return s;
}
std::ostream &RsTlvKeyValueWide::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvKeyValueWide", indent);
uint16_t int_Indent = indent + 2;
std::string cnv_str(wKey.begin(), wKey.end()); // to convert to string
printIndent(out, int_Indent);
out << "wKey:" << cnv_str;
cnv_str.clear();
cnv_str.assign(wValue.begin(), wValue.end());
printIndent(out, int_Indent);
out << "wValue:" << cnv_str;
out << std::endl;
printEnd(out, "RsTlvKeyValuewide", indent);
return out;
}
bool RsTlvKeyValueWide::SetTlv(void *data, uint32_t size, uint32_t *offset)
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_WKEYVALUE, tlvsize);
/* now optional ones */
if (wKey.length() > 0)
ok &= SetTlvWideString(data, tlvend, offset, TLV_TYPE_WSTR_KEY, wKey); // no base tlv type for title?
if (wValue.length() > 0)
ok &= SetTlvWideString(data, tlvend, offset, TLV_TYPE_WSTR_VALUE, wValue); // no base tlv type for comment?
return ok;
}
bool RsTlvKeyValueWide::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint16_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_WKEYVALUE ) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_WSTR_KEY:
ok &= GetTlvWideString(data, tlvend, offset, TLV_TYPE_WSTR_KEY, wKey);
break;
case TLV_TYPE_WSTR_VALUE:
ok &= GetTlvWideString(data, tlvend, offset, TLV_TYPE_WSTR_VALUE, wValue);
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvKeyValueWide::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/******************************************* Wide Key Value set *************************************/
void RsTlvKeyValueWideSet::TlvClear()
{
wPairs.clear();
}
uint32_t RsTlvKeyValueWideSet::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header size */
std::list<RsTlvKeyValueWide>::iterator it;
for(it = wPairs.begin(); it != wPairs.end(); it++)
{
s += it->TlvSize();
}
return s;
}
std::ostream &RsTlvKeyValueWideSet::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvKeyValueWide", indent);
uint16_t int_Indent = indent + 2;
std::list<RsTlvKeyValueWide>::iterator it;
for(it = wPairs.begin(); it != wPairs.end(); it++)
{
it->print(out, int_Indent);
}
printEnd(out, "RsTlvKeyValuewide", indent);
return out;
}
bool RsTlvKeyValueWideSet::SetTlv(void *data, uint32_t size, uint32_t* offset)
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_WKEYVALUESET, tlvsize);
std::list<RsTlvKeyValueWide>::iterator it;
for(it = wPairs.begin(); it != wPairs.end(); it++)
{
ok &= it->SetTlv(data, size, offset);
}
return ok;
}
bool RsTlvKeyValueWideSet::GetTlv(void *data, uint32_t size, uint32_t* offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint16_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_WKEYVALUESET) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_WKEYVALUE:
{
RsTlvKeyValueWide kv;
ok &= kv.GetTlv(data, size, offset);
if (ok)
{
wPairs.push_back(kv);
}
}
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
break;
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvBinaryData::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/*
* libretroshare/src/serialiser: rstlvtypes.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvkeyvalue.h"
#include "rstlvbase.h"
#define TLV_DEBUG 1
void RsTlvKeyValue::TlvClear()
{
key = "";
value = "";
}
uint32_t RsTlvKeyValue::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* now add comment and title length of this tlv object */
if (key.length() > 0)
s += GetTlvStringSize(key);
if (value.length() > 0)
s += GetTlvStringSize(value);
return s;
}
bool RsTlvKeyValue::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_KEYVALUE, tlvsize);
/* now optional ones */
if (key.length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_KEY, key); // no base tlv type for title?
if (value.length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_VALUE, value); // no base tlv type for comment?
return ok;
}
bool RsTlvKeyValue::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_KEYVALUE) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_STR_KEY:
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_KEY, key);
break;
case TLV_TYPE_STR_VALUE:
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_VALUE, value);
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvKeyValue::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
std::ostream &RsTlvKeyValue::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvKeyValue", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "Key:" << key;
printIndent(out, int_Indent);
out << "Value:" << value;
out << std::endl;
printEnd(out, "RsTlvKeyValue", indent);
return out;
}
/************************************* RsTlvKeyValueSet ************************************/
void RsTlvKeyValueSet::TlvClear()
{
pairs.clear(); //empty list
}
uint32_t RsTlvKeyValueSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
std::list<RsTlvKeyValue>::const_iterator it;
if(!pairs.empty())
{
for(it = pairs.begin(); it != pairs.end() ; ++it)
s += it->TlvSize();
}
return s;
}
bool RsTlvKeyValueSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_KEYVALUESET , tlvsize);
if(!pairs.empty())
{
std::list<RsTlvKeyValue>::const_iterator it;
for(it = pairs.begin(); it != pairs.end() ; ++it)
ok &= it->SetTlv(data, size, offset);
}
return ok;
}
bool RsTlvKeyValueSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_KEYVALUESET) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_KEYVALUE:
{
RsTlvKeyValue kv;
ok &= kv.GetTlv(data, size, offset);
if (ok)
{
pairs.push_back(kv);
}
}
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
break;
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvKeyValueSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// prints out contents of RsTlvKeyValueSet
std::ostream &RsTlvKeyValueSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvKeyValue", indent);
std::list<RsTlvKeyValue>::const_iterator it;
for(it = pairs.begin(); it != pairs.end() ; ++it)
it->print(out, indent);
printEnd(out, "RsTlvKeyValue", indent);
return out;
}

View File

@ -0,0 +1,66 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvkeyvalue.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvitem.h"
#include <list>
class RsTlvKeyValue: public RsTlvItem
{
public:
RsTlvKeyValue() { return; }
RsTlvKeyValue(const std::string& k,const std::string& v): key(k),value(v) {}
virtual ~RsTlvKeyValue() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::string key; /// Mandatory : For use in hash tables
std::string value; /// Mandatory : For use in hash tables
};
class RsTlvKeyValueSet: public RsTlvItem
{
public:
RsTlvKeyValueSet() { return; }
virtual ~RsTlvKeyValueSet() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
std::list<RsTlvKeyValue> pairs; /// For use in hash tables
};

View File

@ -1,66 +0,0 @@
#ifndef RSTLVKVWIDE_H_
#define RSTLVKVWIDE_H_
/*
* libretroshare/src/serialiser: rstlvkvwide.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvtypes.h"
class RsTlvKeyValueWide: public RsTlvItem
{
public:
RsTlvKeyValueWide() { return;}
virtual ~RsTlvKeyValueWide() { return;}
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset);
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::wstring wKey;
std::wstring wValue;
};
class RsTlvKeyValueWideSet : public RsTlvItem
{
public:
RsTlvKeyValueWideSet() { return;}
virtual ~RsTlvKeyValueWideSet() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset);
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvKeyValueWide> wPairs;
};
#endif /*RSTLVKVWIDE_H_*/

View File

@ -0,0 +1,129 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvlist.h
*
* RetroShare Serialiser.
*
* Copyright 2014 by Robert Fernie
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvitem.h"
#include <list>
template<class TLV_CLASS,uint32_t TLV_TYPE> class t_RsTlvList: public RsTlvItem
{
public:
t_RsTlvList() {}
virtual ~t_RsTlvList() {}
virtual uint32_t TlvSize() const
{
uint32_t size = TLV_HEADER_SIZE;
typename std::list<TLV_CLASS>::const_iterator it;
for(it = mList.begin();it != mList.end(); ++it)
{
size += it->TlvSize();
}
return size;
}
virtual void TlvClear(){ mList.clear(); }
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE, tlvsize);
typename std::list<TLV_CLASS>::const_iterator it;
for(it = mList.begin();it != mList.end(); ++it)
{
ok &= it->SetTlv(data,tlvsize,offset) ;
}
return ok ;
}
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV : 2 (type) + 4 (len) */
while(ok && ((*offset) + 6 < tlvend))
{
TLV_CLASS item;
ok &= item.GetTlv(data,size,offset);
if (ok)
{
mList.push_back(item);
}
}
if(*offset != tlvend)
{
std::cerr << "(EE) deserialisation error in " << __PRETTY_FUNCTION__ << std::endl;
}
return *offset == tlvend ;
}
virtual std::ostream &print(std::ostream &out, uint16_t indent) const
{
printBase(out, "Template TlvList", indent);
typename std::list<TLV_CLASS>::const_iterator it;
for(it = mList.begin();it != mList.end(); ++it)
{
it->print(out, indent + 2) ;
}
printEnd(out, "Template TlvList", indent);
return out ;
}
std::list<TLV_CLASS> mList;
};

View File

@ -26,8 +26,11 @@
*
*/
#if 0
#include "serialiser/rstlvgenericmaps.h"
#endif
class RsTlvOpinionMapRef: public RsTlvGenericMapRef<std::string, uint32_t>
{

View File

@ -0,0 +1,376 @@
/*
* libretroshare/src/serialiser: rstlvstring.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "serialiser/rstlvstring.h"
#include "serialiser/rstlvbase.h"
#include "util/rsprint.h"
#include <iostream>
#define TLV_DEBUG 1
/************************************* Peer Id Set ************************************/
RsTlvStringSet::RsTlvStringSet(uint16_t type) :mType(type)
{
}
bool RsTlvStringSet::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, mType , tlvsize);
/* determine the total size of ids strings in list */
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, *it);
}
return ok;
}
void RsTlvStringSet::TlvClear()
{
ids.clear();
}
uint32_t RsTlvStringSet::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
s += GetTlvStringSize(*it);
}
return s;
}
bool RsTlvStringSet::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != mType) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_STR_GENID)
{
std::string newIds;
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvPeerIdSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSet::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvStringSet", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvStringSet", indent);
return out;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSet::printHex(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvStringSet", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id: 0x" << RsUtil::BinToHex(*it);
out << std::endl;
}
printEnd(out, "RsTlvStringSet", indent);
return out;
}
/************************************* String Set Ref ************************************/
/* This is exactly the same as StringSet, but it uses an alternative list.
*/
RsTlvStringSetRef::RsTlvStringSetRef(uint16_t type, std::list<std::string> &refids)
:mType(type), ids(refids)
{
}
void RsTlvStringSetRef::TlvClear()
{
ids.clear();
}
uint32_t RsTlvStringSetRef::TlvSize() const
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
s += GetTlvStringSize(*it);
}
return s;
}
bool RsTlvStringSetRef::SetTlv(void *data, uint32_t size, uint32_t *offset) const
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, mType , tlvsize);
/* determine the total size of ids strings in list */
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, *it);
}
return ok;
}
bool RsTlvStringSetRef::GetTlv(void *data, uint32_t size, uint32_t *offset)
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != mType) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_STR_GENID)
{
std::string newIds;
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvPeerIdSetRef::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSetRef::print(std::ostream &out, uint16_t indent) const
{
printBase(out, "RsTlvStringSetRef", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::const_iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvStringSetRef", indent);
return out;
}

View File

@ -0,0 +1,68 @@
#pragma once
/*
* libretroshare/src/serialiser: rstlvstring.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include "serialiser/rstlvitem.h"
#include <list>
class RsTlvStringSet: public RsTlvItem
{
public:
RsTlvStringSet(uint16_t type);
virtual ~RsTlvStringSet() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
virtual std::ostream &printHex(std::ostream &out, uint16_t indent) const;
uint16_t mType;
std::list<std::string> ids; /* Mandatory */
};
class RsTlvStringSetRef: public RsTlvItem
{
public:
RsTlvStringSetRef(uint16_t type, std::list<std::string> &refids);
virtual ~RsTlvStringSetRef() { return; }
virtual uint32_t TlvSize() const;
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const;
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent) const;
uint16_t mType;
std::list<std::string> &ids; /* Mandatory */
};

View File

@ -1,997 +0,0 @@
/*
* libretroshare/src/serialiser: rstlvtypes.cc
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
#include "rstlvbase.h"
#include "rstlvtypes.h"
#include "rsbaseserial.h"
#include "util/rsprint.h"
#include <ostream>
#include <sstream>
#include <iomanip>
#include <iostream>
#define TLV_DEBUG 1
void RsTlvItem::TlvShallowClear()
{
TlvClear(); /* unless overloaded! */
}
std::ostream &RsTlvItem::printBase(std::ostream &out, std::string clsName, uint16_t indent)
{
printIndent(out, indent);
out << "RsTlvItem: " << clsName << " Size: " << TlvSize() << " ***********************";
out << std::endl;
return out;
}
std::ostream &RsTlvItem::printEnd(std::ostream &out, std::string clsName, uint16_t indent)
{
printIndent(out, indent);
out << "********************** " << clsName << " *********************";
out << std::endl;
return out;
}
std::ostream &printIndent(std::ostream &out, uint16_t indent)
{
for(int i = 0; i < indent; i++)
{
out << " ";
}
return out;
}
/*!********************************** RsTlvFileBinaryData **********************************/
RsTlvBinaryData::RsTlvBinaryData(uint16_t t)
:tlvtype(t), bin_len(0), bin_data(NULL)
{
return;
}
RsTlvBinaryData::RsTlvBinaryData(const RsTlvBinaryData &b)
: tlvtype(b.tlvtype), bin_len(0) , bin_data(NULL) {
setBinData(b.bin_data, b.bin_len);
}
RsTlvBinaryData::~RsTlvBinaryData()
{
TlvClear();
}
void RsTlvBinaryData::operator =(const RsTlvBinaryData& b){
setBinData(b.bin_data, b.bin_len);
tlvtype = b.tlvtype;
}
/// used to allocate memory andinitialize binary data member
bool RsTlvBinaryData::setBinData(const void *data, uint32_t size)
{
/* ready to load */
TlvClear();
/* get mandatory */
/* the rest of the TLV size binary data */
bin_len = size;
if (bin_len == 0)
{
bin_data = NULL;
return true;
}
bin_data = malloc(bin_len);
memcpy(bin_data, data, bin_len);
return true;
}
void RsTlvBinaryData::TlvClear()
{
if (bin_data)
{
free(bin_data);
}
TlvShallowClear();
}
void RsTlvBinaryData::TlvShallowClear()
{
bin_data = NULL;
bin_len = 0;
}
uint32_t RsTlvBinaryData::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
if (bin_data != NULL)
s += bin_len; // len is the size of data
return s;
}
bool RsTlvBinaryData::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, tlvtype, tlvsize);
/* add mandatory data */
// Warning: this is actually not an error if bin_len=0, as it does not
// corrupt the packet structure. We thus still return true in this case.
//
if (bin_data != NULL && bin_len > 0)
{
memcpy(&(((uint8_t *) data)[*offset]), bin_data, bin_len);
*offset += bin_len;
}
return ok;
}
bool RsTlvBinaryData::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
{
return false; /* not enough space to get the header */
}
uint16_t tlvtype_in = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvsize < TLV_HEADER_SIZE)
{
return false; /* bad tlv size */
}
if (tlvtype != tlvtype_in) /* check type */
return false;
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
bool ok = setBinData(&(((uint8_t *) data)[*offset]), tlvsize - TLV_HEADER_SIZE);
(*offset) += bin_len;
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvBinaryData::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
std::ostream &RsTlvBinaryData::print(std::ostream &out, uint16_t indent)
{
uint16_t int_Indent = indent + 2;
uint32_t i;
std::ostringstream sout;
printIndent(sout, indent);
sout << "RsTlvBinaryData: Type: " << tlvtype << " Size: " << bin_len;
sout << std::hex;
for(i = 0; i < bin_len; i++)
{
if (i % 16 == 0)
{
sout << std::endl;
printIndent(sout, int_Indent);
}
sout << std::setw(2) << std::setfill('0')
<< (int) (((unsigned char *) bin_data)[i]) << ":";
}
sout << std::endl;
out << sout.str();
printEnd(out, "RsTlvBinaryData", indent);
return out;
}
/************************************* Peer Id Set ************************************/
RsTlvStringSet::RsTlvStringSet(uint16_t type) :mType(type)
{
}
bool RsTlvStringSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, mType , tlvsize);
/* determine the total size of ids strings in list */
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, *it);
}
return ok;
}
void RsTlvStringSet::TlvClear()
{
ids.clear();
}
uint32_t RsTlvStringSet::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
s += GetTlvStringSize(*it);
}
return s;
}
bool RsTlvStringSet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != mType) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_STR_GENID)
{
std::string newIds;
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvPeerIdSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSet::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvStringSet", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvStringSet", indent);
return out;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSet::printHex(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvStringSet", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id: 0x" << RsUtil::BinToHex(*it);
out << std::endl;
}
printEnd(out, "RsTlvStringSet", indent);
return out;
}
/************************************* String Set Ref ************************************/
/* This is exactly the same as StringSet, but it uses an alternative list.
*/
RsTlvStringSetRef::RsTlvStringSetRef(uint16_t type, std::list<std::string> &refids)
:mType(type), ids(refids)
{
}
void RsTlvStringSetRef::TlvClear()
{
ids.clear();
}
uint32_t RsTlvStringSetRef::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
s += GetTlvStringSize(*it);
}
return s;
}
bool RsTlvStringSetRef::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, mType , tlvsize);
/* determine the total size of ids strings in list */
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (it->length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, *it);
}
return ok;
}
bool RsTlvStringSetRef::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != mType) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_STR_GENID)
{
std::string newIds;
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_GENID, newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvPeerIdSetRef::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvStringSet contents
std::ostream &RsTlvStringSetRef::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvStringSetRef", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "type:" << mType;
out << std::endl;
std::list<std::string>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvStringSetRef", indent);
return out;
}
/************************************* Service Id Set ************************************/
void RsTlvServiceIdSet::TlvClear()
{
ids.clear();
}
uint32_t RsTlvServiceIdSet::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* determine the total size of ids strings in list */
std::list<uint32_t>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (*it > 0)
s += GetTlvUInt32Size();
}
return s;
}
bool RsTlvServiceIdSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_SERVICESET , tlvsize);
/* determine the total size of ids strings in list */
std::list<uint32_t>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
if (*it > 0)
ok &= SetTlvUInt32(data, tlvend, offset, TLV_TYPE_UINT32_SERID, *it);
}
return ok;
}
bool RsTlvServiceIdSet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_SERVICESET) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
if (tlvsubtype == TLV_TYPE_UINT32_SERID)
{
uint32_t newIds;
ok &= GetTlvUInt32(data, tlvend, offset, TLV_TYPE_UINT32_SERID, &newIds);
if(ok)
{
ids.push_back(newIds);
}
}
else
{
/* Step past unknown TLV TYPE */
ok &= SkipUnknownTlv(data, tlvend, offset);
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvServiceIdSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// print to screen RsTlvServiceSet contents
std::ostream &RsTlvServiceIdSet::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvServiceIdSet", indent);
uint16_t int_Indent = indent + 2;
std::list<uint32_t>::iterator it;
for(it = ids.begin(); it != ids.end() ; ++it)
{
printIndent(out, int_Indent);
out << "id:" << *it;
out << std::endl;
}
printEnd(out, "RsTlvServiceIdSet", indent);
return out;
}
/************************************* RsTlvKeyValue ************************************/
void RsTlvKeyValue::TlvClear()
{
key = "";
value = "";
}
uint32_t RsTlvKeyValue::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
/* now add comment and title length of this tlv object */
if (key.length() > 0)
s += GetTlvStringSize(key);
if (value.length() > 0)
s += GetTlvStringSize(value);
return s;
}
bool RsTlvKeyValue::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_KEYVALUE, tlvsize);
/* now optional ones */
if (key.length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_KEY, key); // no base tlv type for title?
if (value.length() > 0)
ok &= SetTlvString(data, tlvend, offset, TLV_TYPE_STR_VALUE, value); // no base tlv type for comment?
return ok;
}
bool RsTlvKeyValue::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_KEYVALUE) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_STR_KEY:
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_KEY, key);
break;
case TLV_TYPE_STR_VALUE:
ok &= GetTlvString(data, tlvend, offset, TLV_TYPE_STR_VALUE, value);
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
{
break;
}
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvKeyValue::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
std::ostream &RsTlvKeyValue::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvKeyValue", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "Key:" << key;
printIndent(out, int_Indent);
out << "Value:" << value;
out << std::endl;
printEnd(out, "RsTlvKeyValue", indent);
return out;
}
/************************************* RsTlvKeyValueSet ************************************/
void RsTlvKeyValueSet::TlvClear()
{
pairs.clear(); //empty list
}
uint32_t RsTlvKeyValueSet::TlvSize()
{
uint32_t s = TLV_HEADER_SIZE; /* header */
std::list<RsTlvKeyValue>::iterator it;
if(!pairs.empty())
{
for(it = pairs.begin(); it != pairs.end() ; ++it)
s += it->TlvSize();
}
return s;
}
bool RsTlvKeyValueSet::SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
/* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok &= SetTlvBase(data, tlvend, offset, TLV_TYPE_KEYVALUESET , tlvsize);
if(!pairs.empty())
{
std::list<RsTlvKeyValue>::iterator it;
for(it = pairs.begin(); it != pairs.end() ; ++it)
ok &= it->SetTlv(data, size, offset);
}
return ok;
}
bool RsTlvKeyValueSet::GetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE_KEYVALUESET) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
/* while there is TLV */
while((*offset) + 2 < tlvend)
{
/* get the next type */
uint16_t tlvsubtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
switch(tlvsubtype)
{
case TLV_TYPE_KEYVALUE:
{
RsTlvKeyValue kv;
ok &= kv.GetTlv(data, size, offset);
if (ok)
{
pairs.push_back(kv);
}
}
break;
default:
ok &= SkipUnknownTlv(data, tlvend, offset);
break;
}
if (!ok)
break;
}
/***************************************************************************
* NB: extra components could be added (for future expansion of the type).
* or be present (if this code is reading an extended version).
*
* We must chew up the extra characters to conform with TLV specifications
***************************************************************************/
if (*offset != tlvend)
{
#ifdef TLV_DEBUG
std::cerr << "RsTlvKeyValueSet::GetTlv() Warning extra bytes at end of item";
std::cerr << std::endl;
#endif
*offset = tlvend;
}
return ok;
}
/// prints out contents of RsTlvKeyValueSet
std::ostream &RsTlvKeyValueSet::print(std::ostream &out, uint16_t indent)
{
printBase(out, "RsTlvKeyValue", indent);
std::list<RsTlvKeyValue>::iterator it;
for(it = pairs.begin(); it != pairs.end() ; ++it)
it->print(out, indent);
printEnd(out, "RsTlvKeyValue", indent);
return out;
}

View File

@ -1,350 +0,0 @@
#ifndef RS_TLV_COMPOUND_TYPES_H
#define RS_TLV_COMPOUND_TYPES_H
/*
* libretroshare/src/serialiser: rstlvtypes.h
*
* RetroShare Serialiser.
*
* Copyright 2007-2008 by Robert Fernie, Chris Parker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License Version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to "retroshare@lunamutt.com".
*
*/
/*******************************************************************
* These are the Compound TLV structures that must be (un)packed.
*
******************************************************************/
#include <string>
#include <list>
#include <map>
#include <stdlib.h>
#include <stdint.h>
#include <retroshare/rstypes.h>
#include <serialiser/rstlvtypes.h>
#include <serialiser/rstlvbase.h>
#include <serialiser/rsbaseserial.h>
#include <retroshare/rsgxsifacetypes.h>
//! A base class for all tlv items
/*! This class is provided to allow the serialisation and deserialization of compund
tlv items
*/
class RsTlvItem
{
public:
RsTlvItem() { return; }
virtual ~RsTlvItem() { return; }
virtual uint32_t TlvSize() = 0;
virtual void TlvClear() = 0;
virtual void TlvShallowClear(); /*! Don't delete allocated data */
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) = 0; /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset) = 0; /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent) = 0;
std::ostream &printBase(std::ostream &out, std::string clsName, uint16_t indent);
std::ostream &printEnd(std::ostream &out, std::string clsName, uint16_t indent);
};
std::ostream &printIndent(std::ostream &out, uint16_t indent);
//! GENERIC Binary Data TLV
/*! Use to serialise and deserialise binary data, usually included in other compound tlvs
*/
class RsTlvBinaryData: public RsTlvItem
{
public:
RsTlvBinaryData(uint16_t t);
RsTlvBinaryData(const RsTlvBinaryData& b); // as per rule of three
void operator=(const RsTlvBinaryData& b); // as per rule of three
virtual ~RsTlvBinaryData(); // as per rule of three
virtual uint32_t TlvSize();
virtual void TlvClear(); /*! Initialize fields to empty legal values ( "0", "", etc) */
virtual void TlvShallowClear(); /*! Don't delete the binary data */
/// Serialise.
/*! Serialise Tlv to buffer(*data) of 'size' bytes starting at *offset */
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset);
/// Deserialise.
/*! Deserialise Tlv buffer(*data) of 'size' bytes starting at *offset */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset);
virtual std::ostream &print(std::ostream &out, uint16_t indent); /*! Error/Debug util function */
bool setBinData(const void *data, uint32_t size);
uint16_t tlvtype; /// set/checked against TLV input
uint32_t bin_len; /// size of malloc'ed data (not serialised)
void *bin_data; /// mandatory
};
/**** MORE TLV *****
*
*
*/
class RsTlvStringSet: public RsTlvItem
{
public:
RsTlvStringSet(uint16_t type);
virtual ~RsTlvStringSet() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
virtual std::ostream &printHex(std::ostream &out, uint16_t indent); /* SPECIAL One */
uint16_t mType;
std::list<std::string> ids; /* Mandatory */
};
template<class ID_CLASS,uint32_t TLV_TYPE> class t_RsTlvIdSet: public RsTlvItem
{
public:
t_RsTlvIdSet() {}
virtual ~t_RsTlvIdSet() {}
virtual uint32_t TlvSize() { return ID_CLASS::SIZE_IN_BYTES * ids.size() + TLV_HEADER_SIZE; }
virtual void TlvClear(){ ids.clear() ; }
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) /* serialise */
{ /* must check sizes */
uint32_t tlvsize = TlvSize();
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend)
return false; /* not enough space */
bool ok = true;
/* start at data[offset] */
ok = ok && SetTlvBase(data, tlvend, offset, TLV_TYPE, tlvsize);
for(typename std::list<ID_CLASS>::const_iterator it(ids.begin());it!=ids.end();++it)
ok = ok && (*it).serialise(data,size,*offset) ;
return ok ;
}
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset) /* deserialise */
{
if (size < *offset + TLV_HEADER_SIZE)
return false;
uint16_t tlvtype = GetTlvType( &(((uint8_t *) data)[*offset]) );
uint32_t tlvsize = GetTlvSize( &(((uint8_t *) data)[*offset]) );
uint32_t tlvend = *offset + tlvsize;
if (size < tlvend) /* check size */
return false; /* not enough space */
if (tlvtype != TLV_TYPE) /* check type */
return false;
bool ok = true;
/* ready to load */
TlvClear();
/* skip the header */
(*offset) += TLV_HEADER_SIZE;
while(*offset + ID_CLASS::SIZE_IN_BYTES <= tlvend)
{
ID_CLASS id ;
ok = ok && id.deserialise(data,size,*offset) ;
ids.push_back(id) ;
}
if(*offset != tlvend)
std::cerr << "(EE) deserialisaiton error in " << __PRETTY_FUNCTION__ << std::endl;
return *offset == tlvend ;
}
virtual std::ostream &print(std::ostream &out, uint16_t /* indent */)
{
std::cerr << __PRETTY_FUNCTION__ << ": not implemented" << std::endl;
return out ;
}
virtual std::ostream &printHex(std::ostream &out, uint16_t /* indent */) /* SPECIAL One */
{
std::cerr << __PRETTY_FUNCTION__ << ": not implemented" << std::endl;
return out ;
}
std::list<ID_CLASS> ids ;
};
typedef t_RsTlvIdSet<RsPeerId,TLV_TYPE_PEERSET> RsTlvPeerIdSet ;
typedef t_RsTlvIdSet<RsPgpId,TLV_TYPE_PGPIDSET> RsTlvPgpIdSet ;
typedef t_RsTlvIdSet<Sha1CheckSum,TLV_TYPE_HASHSET> RsTlvHashSet ;
typedef t_RsTlvIdSet<RsGxsId,TLV_TYPE_GXSIDSET> RsTlvGxsIdSet ;
class RsTlvServiceIdSet: public RsTlvItem
{
public:
RsTlvServiceIdSet() { return; }
virtual ~RsTlvServiceIdSet() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<uint32_t> ids; /* Mandatory */
};
class RsTlvStringSetRef: public RsTlvItem
{
public:
RsTlvStringSetRef(uint16_t type, std::list<std::string> &refids);
virtual ~RsTlvStringSetRef() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
uint16_t mType;
std::list<std::string> &ids; /* Mandatory */
};
/**** MORE TLV *****
*
* File Items/Data.
*
*/
class RsTlvFileItem: public RsTlvItem
{
public:
RsTlvFileItem();
virtual ~RsTlvFileItem() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
uint64_t filesize; /// Mandatory: size of file to be downloaded
RsFileHash hash; /// Mandatory: to find file
std::string name; /// Optional: name of file
std::string path; /// Optional: path on host computer
uint32_t pop; /// Optional: Popularity of file
uint32_t age; /// Optional: age of file
// For chunk hashing.
uint32_t piecesize; /// Optional: bytes/piece for hashset.
RsTlvHashSet hashset; /// Optional: chunk hashes.
};
class RsTlvFileSet: public RsTlvItem
{
public:
RsTlvFileSet() { return; }
virtual ~RsTlvFileSet() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvFileItem> items; /// Mandatory
std::string title; /// Optional: title of file set
std::string comment; /// Optional: comments for file
};
class RsTlvFileData: public RsTlvItem
{
public:
RsTlvFileData();
virtual ~RsTlvFileData() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
RsTlvFileItem file; /// Mandatory: file information
uint64_t file_offset; /// Mandatory: where to start in bin data
RsTlvBinaryData binData; /// Mandatory: serialised file info
};
/**** MORE TLV *****
* Key/Value + Set used for Generic Configuration Parameters.
*
*/
class RsTlvKeyValue: public RsTlvItem
{
public:
RsTlvKeyValue() { return; }
RsTlvKeyValue(const std::string& k,const std::string& v): key(k),value(v) {}
virtual ~RsTlvKeyValue() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::string key; /// Mandatory : For use in hash tables
std::string value; /// Mandatory : For use in hash tables
};
class RsTlvKeyValueSet: public RsTlvItem
{
public:
RsTlvKeyValueSet() { return; }
virtual ~RsTlvKeyValueSet() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
std::list<RsTlvKeyValue> pairs; /// For use in hash tables
};
class RsTlvImage: public RsTlvItem
{
public:
RsTlvImage();
RsTlvImage(const RsTlvImage& );
virtual ~RsTlvImage() { return; }
virtual uint32_t TlvSize();
virtual void TlvClear();
virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset); /* serialise */
virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); /* deserialise */
virtual std::ostream &print(std::ostream &out, uint16_t indent);
uint32_t image_type; // Mandatory:
RsTlvBinaryData binData; // Mandatory: serialised file info
};
#endif

View File

@ -31,16 +31,23 @@
*
*/
/* print out a packet */
#include <stdlib.h>
#include "serialiser/rstlvutil.h"
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvitem.h"
#include "util/rsstring.h"
#include "util/utest.h"
#include <iostream>
#include <stdlib.h>
#if 0
/* print out a packet */
#include <iomanip>
#include <vector>
#include "serialiser/rstlvbase.h"
#include "serialiser/rstlvtypes.h"
#include "util/utest.h"
#include "util/rsstring.h"
#endif
void displayRawPacket(std::ostream &out, void *data, uint32_t size)
{

View File

@ -29,7 +29,9 @@
/* some utility functions mainly for debugging
*/
#include <inttypes.h>
#include <ostream>
#include <vector>
class RsTlvItem;
@ -37,7 +39,6 @@ class RsTlvItem;
void displayRawPacket(std::ostream &out, void *data, uint32_t size);
int test_SerialiseTlvItem(std::ostream &str, RsTlvItem *in, RsTlvItem *out);
#include <vector>
bool test_StepThroughTlvStack(std::ostream &str, void *data, int size);
int test_CreateTlvStack(std::ostream &str,

View File

@ -84,7 +84,7 @@ RsItem* RsGxsWikiSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIKI != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_WIKI != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -219,7 +219,7 @@ RsGxsWikiCollectionItem* RsGxsWikiSerialiser::deserialiseGxsWikiCollectionItem(v
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_WIKI_COLLECTION_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG
@ -375,7 +375,7 @@ RsGxsWikiSnapshotItem* RsGxsWikiSerialiser::deserialiseGxsWikiSnapshotItem(void
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_WIKI_SNAPSHOT_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG
@ -523,7 +523,7 @@ RsGxsWikiCommentItem* RsGxsWikiSerialiser::deserialiseGxsWikiCommentItem(void *d
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_WIKI != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_WIKI_COMMENT_ITEM != getRsItemSubType(rstype)))
{
#ifdef GXSID_DEBUG

View File

@ -30,7 +30,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"
#include "retroshare/rswiki.h"
@ -44,7 +44,7 @@ class RsGxsWikiCollectionItem : public RsGxsGrpItem
public:
RsGxsWikiCollectionItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_WIKI,
RsGxsWikiCollectionItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_WIKI,
RS_PKT_SUBTYPE_WIKI_COLLECTION_ITEM) { return;}
virtual ~RsGxsWikiCollectionItem() { return;}
@ -59,7 +59,7 @@ class RsGxsWikiSnapshotItem : public RsGxsMsgItem
{
public:
RsGxsWikiSnapshotItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_WIKI,
RsGxsWikiSnapshotItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_WIKI,
RS_PKT_SUBTYPE_WIKI_SNAPSHOT_ITEM) {return; }
virtual ~RsGxsWikiSnapshotItem() { return;}
void clear();
@ -71,7 +71,7 @@ class RsGxsWikiCommentItem : public RsGxsMsgItem
{
public:
RsGxsWikiCommentItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_WIKI,
RsGxsWikiCommentItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_WIKI,
RS_PKT_SUBTYPE_WIKI_COMMENT_ITEM) { return; }
virtual ~RsGxsWikiCommentItem() { return; }
void clear();
@ -85,7 +85,7 @@ class RsGxsWikiSerialiser : public RsSerialType
public:
RsGxsWikiSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_WIKI)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_WIKI)
{ return; }
virtual ~RsGxsWikiSerialiser() { return; }

View File

@ -74,7 +74,7 @@ RsItem* RsGxsWireSerialiser::deserialise(void* data, uint32_t* size)
uint32_t rstype = getRsItemId(data);
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIRE != getRsItemService(rstype)))
(RS_SERVICE_GXS_TYPE_WIRE != getRsItemService(rstype)))
{
return NULL; /* wrong type */
}
@ -196,7 +196,7 @@ RsGxsWireGroupItem* RsGxsWireSerialiser::deserialiseGxsWireGroupItem(void *data,
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIRE != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_WIRE != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_WIRE_GROUP_ITEM != getRsItemSubType(rstype)))
{
#ifdef WIRE_DEBUG
@ -350,7 +350,7 @@ RsGxsWirePulseItem* RsGxsWireSerialiser::deserialiseGxsWirePulseItem(void *data,
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_GXSV2_TYPE_WIRE != getRsItemService(rstype)) ||
(RS_SERVICE_GXS_TYPE_WIRE != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_WIRE_PULSE_ITEM != getRsItemSubType(rstype)))
{
#ifdef WIRE_DEBUG

View File

@ -30,7 +30,7 @@
#include "serialiser/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rstlvtypes.h"
//#include "serialiser/rstlvtypes.h"
#include "rsgxsitems.h"
#include "retroshare/rswire.h"
@ -43,7 +43,7 @@ class RsGxsWireGroupItem : public RsGxsGrpItem
public:
RsGxsWireGroupItem(): RsGxsGrpItem(RS_SERVICE_GXSV2_TYPE_WIRE,
RsGxsWireGroupItem(): RsGxsGrpItem(RS_SERVICE_GXS_TYPE_WIRE,
RS_PKT_SUBTYPE_WIRE_GROUP_ITEM) { return;}
virtual ~RsGxsWireGroupItem() { return;}
@ -58,7 +58,7 @@ class RsGxsWirePulseItem : public RsGxsMsgItem
{
public:
RsGxsWirePulseItem(): RsGxsMsgItem(RS_SERVICE_GXSV2_TYPE_WIRE,
RsGxsWirePulseItem(): RsGxsMsgItem(RS_SERVICE_GXS_TYPE_WIRE,
RS_PKT_SUBTYPE_WIRE_PULSE_ITEM) {return; }
virtual ~RsGxsWirePulseItem() { return;}
void clear();
@ -71,7 +71,7 @@ class RsGxsWireSerialiser : public RsSerialType
public:
RsGxsWireSerialiser()
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXSV2_TYPE_WIRE)
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_GXS_TYPE_WIRE)
{ return; }
virtual ~RsGxsWireSerialiser() { return; }

View File

@ -151,7 +151,8 @@ bool p3BanList::recvBanItem(RsBanListItem *item)
bool updated = false;
std::list<RsTlvBanListEntry>::const_iterator it;
for(it = item->peerList.entries.begin(); it != item->peerList.entries.end(); it++)
//for(it = item->peerList.entries.begin(); it != item->peerList.entries.end(); it++)
for(it = item->peerList.mList.begin(); it != item->peerList.mList.end(); it++)
{
// Order is important!.
updated = (addBanEntry(item->PeerId(), it->addr.addr, it->level,
@ -450,7 +451,8 @@ int p3BanList::sendBanSet(const RsPeerId& peerid)
bi.level = it->second.level;
bi.age = now - it->second.mTs;
item->peerList.entries.push_back(bi);
//item->peerList.entries.push_back(bi);
item->peerList.mList.push_back(bi);
}
}

View File

@ -273,9 +273,11 @@ int p3Dsdv::generateRoutingTable(const RsPeerId &peerId, bool incremental)
entry.sequence = v.mStableRoute.mSequence;
entry.distance = v.mStableRoute.mDistance;
dsdv->routes.entries.push_back(entry);
//dsdv->routes.entries.push_back(entry);
dsdv->routes.mList.push_back(entry);
if (dsdv->routes.entries.size() > RSDSDV_MAX_ROUTE_TABLE)
//if (dsdv->routes.entries.size() > RSDSDV_MAX_ROUTE_TABLE)
if (dsdv->routes.mList.size() > RSDSDV_MAX_ROUTE_TABLE)
{
sendItem(dsdv);
dsdv = new RsDsdvRouteItem();
@ -329,7 +331,8 @@ int p3Dsdv::handleDSDV(RsDsdvRouteItem *dsdv)
#endif
std::list<RsTlvDsdvEntry>::iterator it;
for(it = dsdv->routes.entries.begin(); it != dsdv->routes.entries.end(); it++)
//for(it = dsdv->routes.entries.begin(); it != dsdv->routes.entries.end(); it++)
for(it = dsdv->routes.mList.begin(); it != dsdv->routes.mList.end(); it++)
{
/* check for existing */
RsTlvDsdvEntry &entry = *it;

View File

@ -65,11 +65,11 @@ RsGxsChannels *rsGxsChannels = NULL;
/********************************************************************************/
p3GxsChannels::p3GxsChannels(RsGeneralDataService *gds, RsNetworkExchangeService *nes, RsGixs* gixs)
: RsGenExchange(gds, nes, new RsGxsChannelSerialiser(), RS_SERVICE_GXSV2_TYPE_CHANNELS, gixs, channelsAuthenPolicy()), RsGxsChannels(this), GxsTokenQueue(this)
: RsGenExchange(gds, nes, new RsGxsChannelSerialiser(), RS_SERVICE_GXS_TYPE_CHANNELS, gixs, channelsAuthenPolicy()), RsGxsChannels(this), GxsTokenQueue(this)
{
// For Dummy Msgs.
mGenActive = false;
mCommentService = new p3GxsCommentService(this, RS_SERVICE_GXSV2_TYPE_CHANNELS);
mCommentService = new p3GxsCommentService(this, RS_SERVICE_GXS_TYPE_CHANNELS);
RsTickEvent::schedule_in(CHANNEL_PROCESS, 0);
@ -87,7 +87,7 @@ const uint16_t GXS_CHANNELS_MIN_MINOR_VERSION = 0;
RsServiceInfo p3GxsChannels::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_CHANNELS,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_CHANNELS,
GXS_CHANNELS_APP_NAME,
GXS_CHANNELS_APP_MAJOR_VERSION,
GXS_CHANNELS_APP_MINOR_VERSION,

View File

@ -108,7 +108,7 @@ RsGxsCircles *rsGxsCircles = NULL;
p3GxsCircles::p3GxsCircles(RsGeneralDataService *gds, RsNetworkExchangeService *nes, p3IdService *identities)
: RsGxsCircleExchange(gds, nes, new RsGxsCircleSerialiser(),
RS_SERVICE_GXSV2_TYPE_GXSCIRCLE, identities, circleAuthenPolicy()),
RS_SERVICE_GXS_TYPE_GXSCIRCLE, identities, circleAuthenPolicy()),
RsGxsCircles(this), GxsTokenQueue(this), RsTickEvent(), mIdentities(identities),
mCircleMtx("p3GxsCircles"),
mCircleCache(DEFAULT_MEM_CACHE_SIZE, "GxsCircleCache")
@ -120,12 +120,7 @@ p3GxsCircles::p3GxsCircles(RsGeneralDataService *gds, RsNetworkExchangeService *
RsTickEvent::schedule_now(CIRCLE_EVENT_LOADIDS);
// Dummy Circles.
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
RsTickEvent::schedule_in(CIRCLE_EVENT_DUMMYSTART, CIRCLE_DUMMY_STARTPERIOD);
#endif
// RsTickEvent::schedule_in(CIRCLE_EVENT_DUMMYSTART, CIRCLE_DUMMY_STARTPERIOD);
}
@ -138,7 +133,7 @@ const uint16_t GXS_CIRCLES_MIN_MINOR_VERSION = 0;
RsServiceInfo p3GxsCircles::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_GXSCIRCLE,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_GXSCIRCLE,
GXS_CIRCLES_APP_NAME,
GXS_CIRCLES_APP_MAJOR_VERSION,
GXS_CIRCLES_APP_MINOR_VERSION,

View File

@ -51,7 +51,7 @@ RsGxsForums *rsGxsForums = NULL;
/********************************************************************************/
p3GxsForums::p3GxsForums(RsGeneralDataService *gds, RsNetworkExchangeService *nes, RsGixs* gixs)
: RsGenExchange(gds, nes, new RsGxsForumSerialiser(), RS_SERVICE_GXSV2_TYPE_FORUMS, gixs, forumsAuthenPolicy()), RsGxsForums(this)
: RsGenExchange(gds, nes, new RsGxsForumSerialiser(), RS_SERVICE_GXS_TYPE_FORUMS, gixs, forumsAuthenPolicy()), RsGxsForums(this)
{
// For Dummy Msgs.
mGenActive = false;
@ -70,7 +70,7 @@ const uint16_t GXS_FORUMS_MIN_MINOR_VERSION = 0;
RsServiceInfo p3GxsForums::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_FORUMS,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_FORUMS,
GXS_FORUMS_APP_NAME,
GXS_FORUMS_APP_MAJOR_VERSION,
GXS_FORUMS_APP_MINOR_VERSION,

View File

@ -142,7 +142,7 @@ const uint16_t GXS_REPUTATION_MIN_MINOR_VERSION = 0;
RsServiceInfo p3GxsReputation::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_REPUTATION,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_REPUTATION,
GXS_REPUTATION_APP_NAME,
GXS_REPUTATION_APP_MAJOR_VERSION,
GXS_REPUTATION_APP_MINOR_VERSION,

View File

@ -139,7 +139,7 @@ RsIdentity *rsIdentity = NULL;
/********************************************************************************/
p3IdService::p3IdService(RsGeneralDataService *gds, RsNetworkExchangeService *nes)
: RsGxsIdExchange(gds, nes, new RsGxsIdSerialiser(), RS_SERVICE_GXSV2_TYPE_GXSID, idAuthenPolicy()),
: RsGxsIdExchange(gds, nes, new RsGxsIdSerialiser(), RS_SERVICE_GXS_TYPE_GXSID, idAuthenPolicy()),
RsIdentity(this), GxsTokenQueue(this), RsTickEvent(),
mPublicKeyCache(DEFAULT_MEM_CACHE_SIZE, "GxsIdPublicKeyCache"),
mPrivateKeyCache(DEFAULT_MEM_CACHE_SIZE, "GxsIdPrivateKeyCache"),
@ -153,13 +153,10 @@ p3IdService::p3IdService(RsGeneralDataService *gds, RsNetworkExchangeService *ne
RsTickEvent::schedule_in(GXSID_EVENT_REPUTATION, REPUTATION_PERIOD);
RsTickEvent::schedule_now(GXSID_EVENT_CACHEOWNIDS);
#ifndef GXS_DEV_TESTNET // NO RESET, OR DUMMYDATA for TESTNET
//RsTickEvent::schedule_in(GXSID_EVENT_CACHETEST, CACHETEST_PERIOD);
RsTickEvent::schedule_in(GXSID_EVENT_CACHETEST, CACHETEST_PERIOD);
#ifdef GXSID_GEN_DUMMY_DATA
RsTickEvent::schedule_now(GXSID_EVENT_DUMMYDATA);
#endif
#ifdef GXSID_GEN_DUMMY_DATA
//RsTickEvent::schedule_now(GXSID_EVENT_DUMMYDATA);
#endif
loadRecognKeys();
@ -173,7 +170,7 @@ const uint16_t GXSID_MIN_MINOR_VERSION = 0;
RsServiceInfo p3IdService::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_GXSID,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_GXSID,
GXSID_APP_NAME,
GXSID_APP_MAJOR_VERSION,
GXSID_APP_MINOR_VERSION,
@ -2091,10 +2088,10 @@ RsGenExchange::ServiceCreate_Return p3IdService::service_CreateGroup(RsGxsGrpIte
std::cerr << std::endl;
#ifdef GXSID_GEN_DUMMY_DATA
if (item->group.mMeta.mAuthorId != "")
{
ownId = RsPgpId(item->group.mMeta.mAuthorId);
}
// if (item->group.mMeta.mAuthorId != "")
// {
// ownId = RsPgpId(item->group.mMeta.mAuthorId);
// }
#endif

View File

@ -87,7 +87,7 @@ std::ostream &operator<<(std::ostream &out, const RsPhotoAlbum &album)
}
p3PhotoService::p3PhotoService(RsGeneralDataService* gds, RsNetworkExchangeService* nes, RsGixs* gixs)
: RsGenExchange(gds, nes, new RsGxsPhotoSerialiser(), RS_SERVICE_GXSV2_TYPE_PHOTO, gixs, photoAuthenPolicy()),
: RsGenExchange(gds, nes, new RsGxsPhotoSerialiser(), RS_SERVICE_GXS_TYPE_PHOTO, gixs, photoAuthenPolicy()),
mPhotoMutex(std::string("Photo Mutex"))
{
}
@ -100,7 +100,7 @@ const uint16_t GXS_PHOTO_MIN_MINOR_VERSION = 0;
RsServiceInfo p3PhotoService::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_PHOTO,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_PHOTO,
GXS_PHOTO_APP_NAME,
GXS_PHOTO_APP_MAJOR_VERSION,
GXS_PHOTO_APP_MINOR_VERSION,

View File

@ -39,7 +39,7 @@ RsPosted *rsPosted = NULL;
/********************************************************************************/
p3Posted::p3Posted(RsGeneralDataService *gds, RsNetworkExchangeService *nes, RsGixs* gixs)
:p3PostBase(gds, nes, gixs, new RsGxsPostedSerialiser(), RS_SERVICE_GXSV2_TYPE_POSTED),
:p3PostBase(gds, nes, gixs, new RsGxsPostedSerialiser(), RS_SERVICE_GXS_TYPE_POSTED),
RsPosted(this)
{
return;
@ -54,7 +54,7 @@ const uint16_t GXS_POSTED_MIN_MINOR_VERSION = 0;
RsServiceInfo p3Posted::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_POSTED,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_POSTED,
GXS_POSTED_APP_NAME,
GXS_POSTED_APP_MAJOR_VERSION,
GXS_POSTED_APP_MINOR_VERSION,

View File

@ -43,7 +43,7 @@ RsWiki *rsWiki = NULL;
#define DUMMYTICK_PERIOD 3
p3Wiki::p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes, RsGixs *gixs)
:RsGenExchange(gds, nes, new RsGxsWikiSerialiser(), RS_SERVICE_GXSV2_TYPE_WIKI, gixs, wikiAuthenPolicy()),
:RsGenExchange(gds, nes, new RsGxsWikiSerialiser(), RS_SERVICE_GXS_TYPE_WIKI, gixs, wikiAuthenPolicy()),
RsWiki(this)
{
// Setup of dummy Pages.
@ -65,7 +65,7 @@ const uint16_t GXS_WIKI_MIN_MINOR_VERSION = 0;
RsServiceInfo p3Wiki::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_WIKI,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_WIKI,
GXS_WIKI_APP_NAME,
GXS_WIKI_APP_MAJOR_VERSION,
GXS_WIKI_APP_MINOR_VERSION,

View File

@ -36,7 +36,7 @@ RsWire *rsWire = NULL;
p3Wire::p3Wire(RsGeneralDataService* gds, RsNetworkExchangeService* nes, RsGixs *gixs)
:RsGenExchange(gds, nes, new RsGxsWireSerialiser(), RS_SERVICE_GXSV2_TYPE_WIRE, gixs, wireAuthenPolicy()),
:RsGenExchange(gds, nes, new RsGxsWireSerialiser(), RS_SERVICE_GXS_TYPE_WIRE, gixs, wireAuthenPolicy()),
RsWire(this), mWireMtx("WireMtx")
{
@ -51,7 +51,7 @@ const uint16_t WIRE_MIN_MINOR_VERSION = 0;
RsServiceInfo p3Wire::getServiceInfo()
{
return RsServiceInfo(RS_SERVICE_GXSV2_TYPE_WIRE,
return RsServiceInfo(RS_SERVICE_GXS_TYPE_WIRE,
WIRE_APP_NAME,
WIRE_APP_MAJOR_VERSION,
WIRE_APP_MINOR_VERSION,