Click here to Skip to main content
15,883,759 members
Articles / Programming Languages / C++

RCF - Interprocess Communication for C++

Rate me:
Please Sign up or sign in to vote.
4.94/5 (147 votes)
25 Oct 2011CPOL20 min read 4.6M   8.4K   331  
A server/client IPC framework, using the C++ preprocessor as an IDL compiler.
#include <boost/preprocessor/repeat.hpp>

#include <RCF/test/TestMinimal.hpp>

#define DEFINE_DUMMY_TEST_MAIN(test_main_name) \
    int test_main_name(int argc, char **argv) { return boost::exit_success; }

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_0
DEFINE_DUMMY_TEST_MAIN(test_main_0)

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_1
#include "Test_Binding.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_2
#include "Test_ClientConnectionDrop.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_3
#include "Test_ClientInfo.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_4
#include "Test_ClientProgress.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_5
#include "Test_ClientTimeout.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_6
#include "Test_CycleServer.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_7
#include "Test_CycleServer_Mt.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_8
DEFINE_DUMMY_TEST_MAIN(test_main_8)
//#include "Test_CycleServer_St.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_9
#include "Test_Endpoint.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_10
#include "Test_ErrorReporting.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_11
#include "Test_FilterPerformance.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_12
#include "Test_Filters.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_13
#include "Test_General.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_14
DEFINE_DUMMY_TEST_MAIN(test_main_14)

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_15
#include "Test_InitDeinit.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_16
#include "Test_IpRestriction.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_17
#include "Test_Minimal.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_18
#include "Test_MultipleClient.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_19
#include "Test_MultiThreadedServer.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_20
#include "Test_MultiTransportServer.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_21
#include "Test_NetworkPerformance.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_22
#include "Test_Notification.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_23
#include "Test_ObjectFactoryService.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_24
#include "Test_Performance.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_25
#include "Test_Polymorphic.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_26
#include "Test_Serialization.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_27
#include "Test_ServerTransportConcurrency.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_28
DEFINE_DUMMY_TEST_MAIN(test_main_28)
//#include "Test_SingleThreadedServer.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_29
#include "Test_SspiFilter.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_30
DEFINE_DUMMY_TEST_MAIN(test_main_30)
//#include "Test_SspiFilterUnicode.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_31
#include "Test_StubSerialization.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_32
#include "Test_ThreadManager.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_33
#include "Test_Endurance.cpp"

#undef RCF_TEST_MAIN
#define RCF_TEST_MAIN test_main_34
#include "Test_ZeroAllocation.cpp"

#define RCF_TEST_MAIN_MAX 35

int test_main(int argc, char **argv)
{
    bool ok = true;
#define INVOKE_TEST(z, n, unused) \
    ok = ok && BOOST_PP_CAT(test_main_, n) (argc, argv) == boost::exit_success;
    BOOST_PP_REPEAT(RCF_TEST_MAIN_MAX, INVOKE_TEST, ~)
    return ok ? boost::exit_success : boost::exit_failure;
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Australia Australia
Software developer, from Sweden and now living in Canberra, Australia, working on distributed C++ applications. When he is not programming, Jarl enjoys skiing and playing table tennis. He derives immense satisfaction from referring to himself in third person.

Comments and Discussions