Commit Graph

611 Commits

Author SHA1 Message Date
Gioacchino Mazzurco
dd55ddea95
Add more consistency checks to serialization code
As suggested by Cyril
2018-08-28 15:20:41 +02:00
sehraf
c754435944
fix deserialisation and improve PRINT job 2018-08-25 17:10:01 +02:00
sehraf
4d03b906b8
convert values properly to string 2018-08-25 16:51:49 +02:00
Gioacchino Mazzurco
afb92999d8
Enable JSON conversion for RsGxsImage via MemBlockProxy 2018-08-24 00:31:25 +02:00
Gioacchino Mazzurco
3b72f912e4
Improve API
Manually expose /rsFiles/getFileData to stream/preview files
Automatically expose a bunch of methods via JSON API
Implement serial_process for std::pair
2018-08-23 01:39:26 +02:00
Gioacchino Mazzurco
4b6f751b09
Implement JSON API generation for async API calls
Move JSON helpers to util/rsjson.* for better usability
Implement JSON ostream manipulator to print compact and pretty JSON
Use lambdas for API wrappers, integrate better and avoid namespace
  pollution
Removed experimental JSON API for notify client wrapper, notifications
  can be implemented automatically with moderns async API calls
Implement and automatically expose to JSON API
  RsGxsChannels::turtleSearchRequest(
        const std::string& matchString,
        const std::function<void (const RsGxsGroupSummary&)>& multiCallback,
        std::time_t maxWait )
2018-08-16 23:48:21 +02:00
Gioacchino Mazzurco
1bc518041c
Experiment of notification via NotifyClient + JSON API 2018-07-23 14:52:17 +02:00
Gioacchino Mazzurco
130007b578
Merge branch 'master' into jsonapi 2018-07-23 13:44:01 +02:00
csoler
2bab688dec
fixed merge with upstream/master 2018-07-19 23:22:24 +02:00
sehraf
55e99ef0d1
add auto detection of installed rapidjson 2018-07-16 23:22:04 +02:00
csoler
6848a586f3
merged upstream/master 2018-07-08 21:17:48 +02:00
Gioacchino Mazzurco
102558afdf
Merge fixes to serialization from master branch 2018-06-29 00:13:07 +02:00
sehraf
f7625e3526
fix json uint64 2018-06-28 20:25:10 +02:00
Gioacchino Mazzurco
15f39129f1
Complete GxsChannels JSON API with blocking methods
RsGxsIfaceHelper::requestStatus expose it to JSON API
Implemented RsGxsIfaceHelper::waitToken to wait for GXS operations
RsItem::serial_process fix doxygen warning as it's a comment not documentation
RsTypeSerializer add JSON conversion methods for double [de]serialization not
	implemented yet
RsTypeSerializer_PRIVATE_{FROM,TO}_JSON_ARRAY fix doxygen warning as it's a
	comment not documentation
make GxsChannels::ExtraFileHash a bit more reasonable
jsonapi-generator fix unused variable warning if there is no input or output
	paramethers
jsonapi-generator fix generation for inerithed jsonapi methods
Convert to RsSerializable some Gxs structs for the JSON API
2018-06-26 13:20:24 +02:00
Gioacchino Mazzurco
7ad337c8d2
Implement automatic JSON API generation
qmake file add jsonapi-generator target to compile JSON API generator
qmake files add rs_jsonapi CONFIG option to enable/disable JSON API at compile
  time
RsTypeSerializer pass down same serialization flags when creating new context
  for nested objects serial job
RsGxsChannels expose a few methods through JSON API as example
Derive a few GXS types (RsGxsChannelGroup, RsGxsChannelPost, RsGxsFile,
  RsMsgMetaData) from RsSerializables so they can be used for the JSON API
Create RsGenericSerializer::SERIALIZATION_FLAG_YIELDING so JSON objects that
  miss some fields can be still deserialized, this improve API usability
SerializeContext offer friendly constructor with default paramethers
Add restbed 4.6 library as git submodule as most systems doesn't have it yet
Add a bit of documentation about JSON API into jsonapi-generator/README.adoc
Add JsonApiServer class to expose the JSON API via HTTP protocol
2018-06-24 16:28:33 +02:00
Gioacchino Mazzurco
6010104127
Merge commit '9886840b79d617a32764ad52ef4747f5fd999250' 2018-06-09 18:10:22 +02:00
Gioacchino Mazzurco
9886840b79
Provide proper constructor for SerializeContext
Deprecate constructor that depends on deprecated declarations.
2018-06-09 17:59:11 +02:00
csoler
70f09b654c
re-licensed serialiser/ 2018-05-29 21:27:12 +02:00
csoler
8e111c2ee2
added rapidjson-1.1.0 code hard-coded in the source directory to allow everyone to compile without the need to tweak too much. When v1.1.0 is mainstream (espcially on ubuntu) we can revert back to an external dependency 2018-05-02 22:46:27 +02:00
Gioacchino Mazzurco
86ce177228 time_t may be signed in JSON 2018-01-27 19:57:15 +01:00
Gioacchino Mazzurco
ef6681b6f9 Remove outdated documentation 2018-01-27 19:40:39 +01:00
Gioacchino Mazzurco
8b774595d7 Better usage of type traits
Don't need register types for serializationanymore
Don't need casting helpers for serialization
2018-01-27 17:57:33 +01:00
Gioacchino Mazzurco
ba6f2d7e81 Remove default template for to/from_JSON
This way the compiler will complain if a type is added directly to
RsTypeSerializer without specify all needed serial operations
2018-01-26 17:18:05 +01:00
Gioacchino Mazzurco
13d4a2c916 Safer and elgant serial helper macros 2018-01-26 13:43:09 +01:00
Gioacchino Mazzurco
7409de5170 Fix compilation on systems with atipic time_t 2018-01-22 21:53:12 +01:00
Gioacchino Mazzurco
443ffb9f85 Fix some warnings 2018-01-22 15:02:33 +01:00
Gioacchino Mazzurco
9c68bcbca4 Fix some warnings 2018-01-22 14:50:07 +01:00
Gioacchino Mazzurco
04d32d2f44 Remove duplicated include 2018-01-22 12:55:22 +01:00
Gioacchino Mazzurco
b95e3380c0 Fix Android compilation 2018-01-22 11:09:00 +01:00
Gioacchino Mazzurco
9d40d416f6 Better naming for serialization helper macro 2018-01-21 20:27:49 +01:00
Gioacchino Mazzurco
5cdc5aa58d Add automatic JSON serialization/deserialization
Abstract serialization concept to pure virtaul class RsSerializable
  from which every other serializable class must inherit from
Use RapidJSON for JSON manipulation
Add TO_JSON and FROM_JSON SerializeJob
Deprecate unused SerializationFormat
Remove some unused old piece of code
Adjust many lines to max 80 columns for better readability on little
  screens
Clean up documentation and code, remove old cruft
Add copyright notice on edited files that miss it
2018-01-16 03:31:03 +01:00
Phenom
fea9c0a851 Fix CppCheck in rstlvstring.h
/libretroshare/src/serialiser/rstlvstring.h:40: warning:
Cppcheck(noExplicitConstructor): Class 'RsTlvStringSet' has a
constructor with 1 argument that is not explicit.
2017-11-07 21:58:10 +01:00
Phenom
889f23f9d8 Fix CppCheck in rstlvidset.h
/libretroshare/src/serialiser/rstlvidset.h:93: warning:
Cppcheck(unreadVariable): Variable 'ok' is assigned a value that is
never used.
2017-11-07 21:57:39 +01:00
Gioacchino Mazzurco
d89c151a4d Fix typo 2017-09-17 14:41:18 +02:00
Phenom
a0ebddb4eb Fic Gcc warnings:
/libretroshare/src/file_sharing/p3filelists.cc👎 In static member
function ‘static bool p3FileDatabase::convertPointerToEntryIndex(const
void*, p3FileDatabase::EntryIndex&, uint32_t&)’:
/libretroshare/src/file_sharing/p3filelists.cc:624: warning:
dereferencing type-punned pointer will break strict-aliasing rules [-
Wstrict-aliasing]
     e   = EntryIndex(  *reinterpret_cast<uint32_t*>(&p) &
ENTRY_INDEX_BIT_MASK ) ;
/home/phenom/GIT/RetroShare/trunk/libretroshare/src/file_sharing/
p3filelists.cc:625: warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]
     friend_index = (*reinterpret_cast<uint32_t*>(&p)) >>
NB_ENTRY_INDEX_BITS ;

/libretroshare/src/gxstrans/p3gxstransitems.h:29: In file included from
../../../trunk/libretroshare/src/gxstrans/p3gxstransitems.h:29:0,
/libretroshare/src/gxstrans/p3gxstransitems.cc:19: from ../../../trunk/
libretroshare/src/gxstrans/p3gxstransitems.cc:19:
/libretroshare/src/gxstrans/p3gxstransitems.cc👎 In member function
‘virtual void
OutgoingRecord_deprecated::serial_process(RsGenericSerializer::SerializeJob,
RsGenericSerializer::SerializeContext&)’:
/libretroshare/src/serialiser/rstypeserializer.h:61: warning:
dereferencing type-punned pointer will break strict-aliasing rules [-
Wstrict-aliasing]
  RsTypeSerializer::serial_process<T>(j, ctx, reinterpret_cast<T&>(I),
#I);\

/libretroshare/src/gxstrans/p3gxstransitems.cc:51: in expansion of macro
‘RS_REGISTER_SERIAL_MEMBER_TYPED’
  RS_REGISTER_SERIAL_MEMBER_TYPED(clientService, uint16_t);
/libretroshare/src/gxstrans/p3gxstransitems.cc👎 In member function
‘virtual void
OutgoingRecord::serial_process(RsGenericSerializer::SerializeJob,
RsGenericSerializer::SerializeContext&)’:
/libretroshare/src/serialiser/rstypeserializer.h:61: warning:
dereferencing type-punned pointer will break strict-aliasing rules [-
Wstrict-aliasing]
  RsTypeSerializer::serial_process<T>(j, ctx, reinterpret_cast<T&>(I),
#I);\

/libretroshare/src/gxstrans/p3gxstransitems.cc:65: in expansion of macro
‘RS_REGISTER_SERIAL_MEMBER_TYPED’
  RS_REGISTER_SERIAL_MEMBER_TYPED(clientService, uint16_t);
/retroshare-gui/src/gui/common/RsBanListToolButton.cpp👎 In member
function ‘void RsBanListToolButton::applyIp()’:
/retroshare-gui/src/gui/common/RsBanListToolButton.cpp:163: warning:
‘list_type’ may be used uninitialized in this function [-Wmaybe-
uninitialized]
   changed = rsBanList->removeIpRange(addr, masked_bytes, list_type);
2017-09-13 18:37:32 +02:00
Gioacchino Mazzurco
3b1606ceb9 Remove misguiding if 2017-07-24 11:52:23 +02:00
Phenom
903f875d1d Fix clang warning: unused variable 'MAX_SERIALIZED_ARRAY_SIZE'
/libretroshare/src/serialiser/rstypeserializer.cc:39: warning: unused
variable 'MAX_SERIALIZED_ARRAY_SIZE' [-Wunused-const-variable]
static const uint32_t MAX_SERIALIZED_ARRAY_SIZE = 500 ;
2017-07-16 21:36:35 +02:00
Phenom
e1ea92d733 Fix warning: unused parameter ‘n’
/libretroshare/src/serialiser/rstypeserializer.cc:358: warning: unused
parameter ‘n’ [-Wunused-parameter]
 template<> void RsTypeSerializer::print_data( const std::string& n,
2017-07-16 20:41:24 +02:00
csoler
c0c5cc52db Merge branch 'master' into gxs_mail_experiments 2017-05-13 21:08:16 +02:00
Phenom
58c812aea8 Fix Warnings: unused parameter ‘s’
warning: unused parameter ‘s’ [-Wunused-parameter]
 template<> uint32_t RsTypeSerializer::serial_size(uint16_t /*
type_subtype */,const uint32_t& s)
                                                                                               ^
2017-05-08 12:17:01 +02:00
Phenom
7892004641 Fix Warnings: unused parameter ‘member_name’
warning: unused parameter ‘member_name’ [-Wunused-parameter]
   static void serial_process(RsGenericSerializer::SerializeJob
j,RsGenericSerializer::SerializeContext& ctx,t_RsFlags32<N>& v,const
std::string& member_name)
                                                                                                                                                  ^~~~~~~~~~~
2017-05-08 12:04:08 +02:00
Gioacchino Mazzurco
ea8f800003 Port GxsTrans to new serialization system
RsItem added some comment and more verbose error reporting
RsTypeSerializer added support for RsItem derived classes as members
  added utility macros for better readability of the code and easier
  handling of RsItem derived members
  RS_REGISTER_SERIAL_MEMBER(I)
  RS_REGISTER_SERIAL_MEMBER_TYPED(I, T)
  RS_REGISTER_ITEM_TYPE(T)

RsNxsMsg::serial_process use new macros for better readability and to
 have an exemple of usage with RsTlvItem derived class
Fix undefined reference to RsNxsMsg::print
2017-05-08 00:19:11 +02:00
csoler
868c0467f2 fixed bug in serializer caused to not updating the size parameter. Also fixes unittests 2017-05-06 13:23:26 +02:00
Phenom
d31b80c13a Fix Windows Compilation 2017-05-04 11:58:45 +02:00
csoler
4f4240d570 fixed bug in history serializer 2017-05-03 22:43:16 +02:00
csoler
214aaa7c9b added safety check for null chunks in TlvMemBlock_proxy deserialization 2017-05-03 22:20:58 +02:00
csoler
99d8b7d5d8 switched service control items to new serialization 2017-05-01 21:23:34 +02:00
csoler
16b8947af1 improved serializer documentation 2017-04-30 20:31:43 +02:00
csoler
24c7c38016 removed old file rssrviceserialiser.h/cc 2017-04-30 20:08:30 +02:00
csoler
14076de1e0 moved code of rsservicerserialiser into rsserializer.h/cc and renamed it into RsRawSerializer 2017-04-30 19:17:44 +02:00