Hello,
I created a C++ framework RemoteCall which allows to use RPC the same way as local C++ calls are used.
For declaration, implementation and call used macros: DECLARE_REMOTE, IMPLEMENT_REMOTE, CALL_REMOTE.Return and parameters (In and In/Out) can be any type except pointers.
For instance: std::tuple
Alex- in which ways is your code superior to previous approaches? If I'm not mistaken then you've introduced a custom serialization scheme that simply transmits objects as a byte stream. I doubt that is important. Also, which network transports do you support? Cheers -Andreas On 03:57 Sun 17 May , Alex Marmer wrote:
Hello, I created a C++ framework RemoteCall which allows to use RPC the same way as local C++ calls are used. For declaration, implementation and call used macros: DECLARE_REMOTE, IMPLEMENT_REMOTE, CALL_REMOTE.Return and parameters (In and In/Out) can be any type except pointers. For instance: std::tuple
DECLARE_REMOTE(Test)(std::vectorstd::string& vInOut, const std::wstring& sIn). Implementation is on https://github.com/amarmer/RemoteCall Would it be useful to add this framework in Boost? Sincerely,Alex _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- ========================================================== Andreas Schäfer HPC and Grid Computing Department of Computer Science 3 Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany +49 9131 85-27910 PGP/GPG key via keyserver http://www.libgeodecomp.org ========================================================== (\___/) (+'.'+) (")_(") This is Bunny. Copy and paste Bunny into your signature to help him gain world domination!
Andreas,
Programmer needs to implement serialization for custom data (as it is shown for struct ABC in https://github.com/amarmer/RemoteCall/blob/master/TestAPI.h )Then advantage of the framework: C++ remote programming model is the same as local.
It can be any transport which synchronously sends and receives data, it is not implemented by framework.Assuming transport is implemented as API like bool TransportSendReceive(std::vector<char>& vChar), then to use framework, needs to be created class like:
struct RemoteCallTransport: public RemoteCall::Transport{ bool SendReceive(std::vector<char>& vChar) override { return TransportSendReceive(vChar);
}} transport;
then client can call transport.CALL_REMOTE(Test)(parameters);
Regards,Alex
On Saturday, May 16, 2015 11:51 PM, Andreas Schäfer
Hello, I created a C++ framework RemoteCall which allows to use RPC the same way as local C++ calls are used. For declaration, implementation and call used macros: DECLARE_REMOTE, IMPLEMENT_REMOTE, CALL_REMOTE.Return and parameters (In and In/Out) can be any type except pointers. For instance: std::tuple
DECLARE_REMOTE(Test)(std::vectorstd::string& vInOut, const std::wstring& sIn). Implementation is on https://github.com/amarmer/RemoteCall Would it be useful to add this framework in Boost? Sincerely,Alex _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- ========================================================== Andreas Schäfer HPC and Grid Computing Department of Computer Science 3 Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany +49 9131 85-27910 PGP/GPG key via keyserver http://www.libgeodecomp.org ========================================================== (\___/) (+'.'+) (")_(") This is Bunny. Copy and paste Bunny into your signature to help him gain world domination! _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 05/17/2015 09:32 AM, Alex Marmer wrote:
Programmer needs to implement serialization for custom data (as it is shown for struct ABC in https://github.com/amarmer/RemoteCall/blob/master/TestAPI.h )Then advantage of the framework: C++ remote programming model is the same as local.
In what way is your approach better than Boost.Serialization or Boost.Fusion?
It allows to declare, implement and call C++ remote function the same way as local C++ function.
On Monday, May 18, 2015 8:20 AM, Bjorn Reese
Programmer needs to implement serialization for custom data (as it is shown for struct ABC in https://github.com/amarmer/RemoteCall/blob/master/TestAPI.h )Then advantage of the framework: C++ remote programming model is the same as local.
In what way is your approach better than Boost.Serialization or Boost.Fusion? _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Heya, On 07:32 Sun 17 May , Alex Marmer wrote:
Programmer needs to implement serialization for custom data (as it is shown for struct ABC in https://github.com/amarmer/RemoteCall/blob/master/TestAPI.h )Then advantage of the framework: C++ remote programming model is the same as local.
I think there already are plenty of RPC frameworks which also carry this functionality. HPX[1] comes to mind (though it has to be noted that HPX does much more than just RPCs).
It can be any transport which synchronously sends and receives data,
From a user perspective, I have to say that a "synchronous-only" makes much sense for our applications.
it is not implemented by framework.
But, isn't this what you'd use an RPC framework for? So a user won't have to mess with the networking code? Cheers -Andreas [1] http://stellar-group.org/libraries/hpx/ -- ========================================================== Andreas Schäfer HPC and Grid Computing Department of Computer Science 3 Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany +49 9131 85-27910 PGP/GPG key via keyserver http://www.libgeodecomp.org ========================================================== (\___/) (+'.'+) (")_(") This is Bunny. Copy and paste Bunny into your signature to help him gain world domination!
But, isn't this what you'd use an RPC framework for? So a user won't have to mess with the networking code?
For, instance XML-RPC. From http://en.wikipedia.org/wiki/XML-RPC "XML-RPC" also refers generically to the use of XML for remote procedure call, independently of the specific protocol".
On Monday, May 18, 2015 8:30 AM, Andreas Schäfer
Programmer needs to implement serialization for custom data (as it is shown for struct ABC in https://github.com/amarmer/RemoteCall/blob/master/TestAPI.h )Then advantage of the framework: C++ remote programming model is the same as local.
I think there already are plenty of RPC frameworks which also carry this functionality. HPX[1] comes to mind (though it has to be noted that HPX does much more than just RPCs).
It can be any transport which synchronously sends and receives data,
From a user perspective, I have to say that a "synchronous-only" makes much sense for our applications.
it is not implemented by framework.
But, isn't this what you'd use an RPC framework for? So a user won't have to mess with the networking code? Cheers -Andreas [1] http://stellar-group.org/libraries/hpx/ -- ========================================================== Andreas Schäfer HPC and Grid Computing Department of Computer Science 3 Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany +49 9131 85-27910 PGP/GPG key via keyserver http://www.libgeodecomp.org ========================================================== (\___/) (+'.'+) (")_(") This is Bunny. Copy and paste Bunny into your signature to help him gain world domination! _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 03:57 Sun 17 May , Alex Marmer wrote:
Hello, I created a C++ framework RemoteCall which allows to use RPC the same way as local C++ calls are used. For declaration, implementation and call used macros: DECLARE_REMOTE, IMPLEMENT_REMOTE, CALL_REMOTE.Return and parameters (In and In/Out) can be any type except pointers. For instance: std::tuple
DECLARE_REMOTE(Test)(std::vectorstd::string& vInOut, const std::wstring& sIn). Implementation is on https://github.com/amarmer/RemoteCall Would it be useful to add this framework in Boost? Sincerely,Alex
Can you call member functions of objects as well (besides calling global functions)? Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu
Hartmut,
Current implementation allows only global functions.
It would be interesting to create similar functionality for member functions of objects.
Regards,Alex
On Monday, May 18, 2015 11:35 AM, Hartmut Kaiser
On 03:57 Sun 17 May , Alex Marmer wrote:
Hello, I created a C++ framework RemoteCall which allows to use RPC the same way as local C++ calls are used. For declaration, implementation and call used macros: DECLARE_REMOTE, IMPLEMENT_REMOTE, CALL_REMOTE.Return and parameters (In and In/Out) can be any type except pointers. For instance: std::tuple
DECLARE_REMOTE(Test)(std::vectorstd::string& vInOut, const std::wstring& sIn). Implementation is on https://github.com/amarmer/RemoteCall Would it be useful to add this framework in Boost? Sincerely,Alex
Can you call member functions of objects as well (besides calling global functions)? Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (4)
-
Alex Marmer
-
Andreas Schäfer
-
Bjorn Reese
-
Hartmut Kaiser