~stolowski/unity-scopes-api/fix-1393382-rtm

« back to all changes in this revision

Viewing changes to src/scopes/internal/zmq_middleware/ZmqScope.cpp

  • Committer: Pawel Stolowski
  • Date: 2014-11-04 14:33:07 UTC
  • mfrom: (241.1.20 unity-scopes-api)
  • Revision ID: pawel.stolowski@canonical.com-20141104143307-cs70gjyowjtwpk69
Merged trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#include <unity/scopes/internal/zmq_middleware/VariantConverter.h>
24
24
#include <unity/scopes/internal/zmq_middleware/ZmqException.h>
25
25
#include <unity/scopes/internal/zmq_middleware/ZmqQueryCtrl.h>
 
26
#include <unity/scopes/internal/zmq_middleware/ZmqReceiver.h>
26
27
#include <unity/scopes/internal/zmq_middleware/ZmqReply.h>
27
28
#include <unity/scopes/Result.h>
28
29
#include <unity/scopes/CannedQuery.h>
93
94
 
94
95
    auto future = mw_base()->twoway_pool()->submit([&] { return this->invoke_scope_(request_builder); });
95
96
 
96
 
    auto receiver = future.get();
97
 
    auto segments = receiver.receive();
98
 
    capnp::SegmentArrayMessageReader reader(segments);
99
 
    auto response = reader.getRoot<capnproto::Response>();
 
97
    auto out_params = future.get();
 
98
    auto response = out_params.reader->getRoot<capnproto::Response>();
100
99
    throw_if_runtime_exception(response);
101
100
 
102
101
    auto proxy = response.getPayload().getAs<capnproto::Scope::CreateQueryResponse>().getReturnValue();
125
124
 
126
125
    auto future = mw_base()->twoway_pool()->submit([&] { return this->invoke_scope_(request_builder); });
127
126
 
128
 
    auto receiver = future.get();
129
 
    auto segments = receiver.receive();
130
 
    capnp::SegmentArrayMessageReader reader(segments);
131
 
    auto response = reader.getRoot<capnproto::Response>();
 
127
    auto out_params = future.get();
 
128
    auto response = out_params.reader->getRoot<capnproto::Response>();
132
129
    throw_if_runtime_exception(response);
133
130
 
134
131
    auto proxy = response.getPayload().getAs<capnproto::Scope::CreateQueryResponse>().getReturnValue();
161
158
    auto future = mw_base()->twoway_pool()->submit([&] { return this->invoke_scope_(request_builder); });
162
159
    future.wait();
163
160
 
164
 
    auto receiver = future.get();
165
 
    auto segments = receiver.receive();
166
 
    capnp::SegmentArrayMessageReader reader(segments);
167
 
    auto response = reader.getRoot<capnproto::Response>();
 
161
    auto out_params = future.get();
 
162
    auto response = out_params.reader->getRoot<capnproto::Response>();
168
163
    throw_if_runtime_exception(response);
169
164
 
170
165
    auto proxy = response.getPayload().getAs<capnproto::Scope::CreateQueryResponse>().getReturnValue();
193
188
 
194
189
    auto future = mw_base()->twoway_pool()->submit([&] { return this->invoke_scope_(request_builder); });
195
190
 
196
 
    auto receiver = future.get();
197
 
    auto segments = receiver.receive();
198
 
    capnp::SegmentArrayMessageReader reader(segments);
199
 
    auto response = reader.getRoot<capnproto::Response>();
 
191
    auto out_params = future.get();
 
192
    auto response = out_params.reader->getRoot<capnproto::Response>();
200
193
    throw_if_runtime_exception(response);
201
194
 
202
195
    auto proxy = response.getPayload().getAs<capnproto::Scope::CreateQueryResponse>().getReturnValue();
218
211
        make_request_(request_builder, "debug_mode");
219
212
 
220
213
        auto future = mw_base()->twoway_pool()->submit([&] { return this->invoke_twoway_(request_builder); });
221
 
        auto receiver = future.get();
222
 
        auto segments = receiver.receive();
223
 
        capnp::SegmentArrayMessageReader reader(segments);
224
 
        auto response = reader.getRoot<capnproto::Response>();
 
214
        auto out_params = future.get();
 
215
        auto response = out_params.reader->getRoot<capnproto::Response>();
225
216
        throw_if_runtime_exception(response);
226
217
 
227
218
        auto debug_mode_response = response.getPayload().getAs<capnproto::Scope::DebugModeResponse>();
231
222
    return *debug_mode_;
232
223
}
233
224
 
234
 
ZmqReceiver ZmqScope::invoke_scope_(capnp::MessageBuilder& out_params)
 
225
ZmqObjectProxy::TwowayOutParams ZmqScope::invoke_scope_(capnp::MessageBuilder& in_params)
235
226
{
236
227
    // Check if this scope has requested debug mode, if so, disable two-way timeout and set
237
228
    // locate timeout to 15s.
238
229
    if (debug_mode())
239
230
    {
240
 
        return this->invoke_twoway_(out_params, -1, 15000);
 
231
        return this->invoke_twoway_(in_params, -1, 15000);
241
232
    }
242
 
    return this->invoke_twoway_(out_params);
 
233
    return this->invoke_twoway_(in_params);
243
234
}
244
235
 
245
236
} // namespace zmq_middleware