RCF для двухсторонней IPC - PullRequest
       21

RCF для двухсторонней IPC

0 голосов
/ 05 февраля 2010

Я использую RCF для межпроцессного взаимодействия в проекте. Есть ли способ в RCF создать двунаправленный канал. У меня будет сервер и клиент, работающий в обоих процессах. Я смог получить одностороннюю связь, работая с Win32NamedPipes Вот сервер

int main()
{
    MyServiceImpl myServiceImpl;
    RCF::RcfServer server;//(RCF::TcpEndpoint("0.0.0.0", 50001));
    server.addServerTransport(boost::shared_ptr<RCF::I_ServerTransport>(new RCF::Win32NamedPipeServerTransport(("rcfchannel"))));
    server.bind<MyService>(myServiceImpl);
    server.bind<MyService>(myServiceImpl);
    server.start();
    server.waitForStopEvent();

    return 0;
}

Где MyService - это сервис, который он внедряет

client.cpp

int main()
{
    try
    {
        std::vector<std::string> v;
        v.push_back("one");
        v.push_back("two");
        v.push_back("three");

        std::cout << "Before:\n";
        std::copy(
            v.begin(), 
            v.end(), 
            std::ostream_iterator<std::string>(std::cout, "\n"));

        RcfClient<MyService>* m_service = new  RcfClient<MyService>(RCF::Win32NamedPipeEndpoint("rcfchannel"));
        m_service->reverse(v);
        std::cout << "\nAfter:\n";
        std::copy(
            v.begin(), 
            v.end(), 
            std::ostream_iterator<std::string>(std::cout, "\n"));
    }
    catch(const std::exception &e)
    {
        std::cout << "Caught exception:\n";
        std::cout << "Type: " << typeid(e).name() << "\n";
        std::cout << "What: " << e.what() << "\n";
    }

    return 0;
}

Предположим, у меня есть другая служба, скажем, "ClientService", работающая на стороне клиента. Есть ли способ конвертировать этот сервер в клиент? Я нашел некоторую функцию convertRCFClienttoSession в RCF. Я не нашел примеров для этого.

1 Ответ

0 голосов
/ 05 февраля 2010

Помогает ли ?

...