blob: 9069c91bd2a4497f9e1e8601ea98e2469a63593b [file] [log] [blame]
Mark Sleee8540632006-05-30 09:24:40 +00001#include "TSimpleClient.h"
2using std::string;
3
4TSimpleClient::TSimpleClient(TTransport* transport) :
5 transport_(transport) {}
6
7bool TSimpleClient::open() {
8 return transport_->open();
9}
10
11void TSimpleClient::close() {
12 transport_->close();
13}
14
15std::string TSimpleClient::dispatch(const string& s) {
16 // Write size header
17 int32_t size = s.size();
18 // fprintf(stderr, "Writing size header %d to server\n", size);
19 transport_->write(string((char*)&size, 4));
20
21 // Write data payload
22 // fprintf(stderr, "Writing %d byte payload to server\n", (int)s.size());
23 transport_->write(s);
24
25 // Read response size
26 // fprintf(stderr, "Reading 4-byte response size header\n");
27 string response;
28 transport_->read(response, 4);
29 size = *(int32_t*)response.data();
30
31 // Read response data
32 if (size < 0) {
33 // TODO(mcslee): Handle exception
34 // fprintf(stderr, "Exception case! Response size < 0\n");
35 return "";
36 } else {
37 // fprintf(stderr, "Reading %d byte response payload\n", size);
38 transport_->read(response, size);
39 // TODO(mcslee): Check that we actually read enough data
40 // fprintf(stderr, "Done reading payload, returning.\n");
41 return response;
42 }
43}
44