Commit Graph

596 Commits

Author SHA1 Message Date
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
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
csoler
e401b90e02 moved rsserializer and rstypeserializer to serialiser/ 2017-04-30 16:05:37 +02:00
csoler
1159c863a2 moved wiki and wire items to rsitems/ 2017-04-29 21:50:55 +02:00
csoler
d58c638af8 switched wiki and wire items to new serialization 2017-04-29 21:46:54 +02:00
csoler
5cba0059c8 moved recognitems to rsitems/ 2017-04-28 23:32:47 +02:00
csoler
23492698d4 switch rsrecognitems to new serialization 2017-04-28 23:28:56 +02:00
csoler
688813fbf5 moved photo items to rsitems/ 2017-04-28 18:51:35 +02:00
csoler
634efb6142 switched rsphotoitems to new serialization 2017-04-28 18:42:11 +02:00
csoler
22e2416f3e moved rsserviceinfo items to rsitems/ 2017-04-28 17:47:41 +02:00
csoler
2d19783296 switched serviceinfo items to new serialization 2017-04-28 17:44:45 +02:00
csoler
c33c34b175 moved rspluginitems to rsitems/ 2017-04-28 16:44:04 +02:00
csoler
d32a8caf06 switched PluginItems to new serialization 2017-04-28 16:39:54 +02:00
csoler
45eaf27deb moved rsgxsupdateitems to rsitems/ 2017-04-28 16:30:33 +02:00
csoler
2e6766569d switched MsgUpdate items to new serialization 2017-04-28 16:26:59 +02:00
csoler
5995e508c5 moved rsstatusitem.h to rsitems/ 2017-04-27 21:24:27 +02:00
csoler
87018edeb2 switched rsstatusitem to new serializer 2017-04-27 21:20:30 +02:00