TNonblockingServer and TFramedTransport used to have the option to only
frame messages on one side of the communication. This capability was
removed from TFramedTransport because it was poorly implemented and not
useful. This change removes it from TNonblockingServer as well, and
removes references to it in some of the C++ test code.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@673791
13f79535-47bb-0310-9956-
ffa450edef68
// If the function call generated return data, then move into the send
// state and get going
+ // 4 bytes were reserved for frame size
if (writeBufferSize_ > 4) {
// Move into write state
writeBufferPos_ = 0;
socketState_ = SOCKET_SEND;
- if (server_->getFrameResponses()) {
- // Put the frame size into the write buffer
- int32_t frameSize = (int32_t)htonl(writeBufferSize_ - 4);
- memcpy(writeBuffer_, &frameSize, 4);
- } else {
- // Go straight into sending the result, do not frame it
- writeBufferPos_ = 4;
- }
+ // Put the frame size into the write buffer
+ int32_t frameSize = (int32_t)htonl(writeBufferSize_ - 4);
+ memcpy(writeBuffer_, &frameSize, 4);
// Socket into write mode
appState_ = APP_SEND_RESULT;
// Port server runs on
int port_;
- // Whether to frame responses
- bool frameResponses_;
-
// For processing via thread pool, may be NULL
boost::shared_ptr<ThreadManager> threadManager_;
TServer(processor),
serverSocket_(-1),
port_(port),
- frameResponses_(true),
threadPoolProcessing_(false),
eventBase_(NULL),
numTConnections_(0) {}
TServer(processor),
serverSocket_(-1),
port_(port),
- frameResponses_(true),
threadManager_(threadManager),
eventBase_(NULL),
numTConnections_(0) {
TServer(processor),
serverSocket_(0),
port_(port),
- frameResponses_(true),
threadManager_(threadManager),
eventBase_(NULL),
numTConnections_(0) {
threadManager_->add(task);
}
- void setFrameResponses(bool frameResponses) {
- frameResponses_ = frameResponses;
- }
-
- bool getFrameResponses() const {
- return frameResponses_;
- }
-
event_base* getEventBase() const {
return eventBase_;
}
int port = 9090;
int numTests = 1;
bool framed = false;
- bool frameInput = true;
for (int i = 0; i < argc; ++i) {
if (strcmp(argv[i], "-h") == 0) {
numTests = atoi(argv[++i]);
} else if (strcmp(argv[i], "-f") == 0) {
framed = true;
- } else if (strcmp(argv[i], "-fo") == 0) {
- framed = true;
- frameInput = false;
}
}
if (framed) {
shared_ptr<TFramedTransport> framedSocket(new TFramedTransport(socket));
- framedSocket->setRead(frameInput);
transport = framedSocket;
- if (frameInput) {
- printf("Using bi-directional framed transport mode\n");
- } else {
- printf("Using framed output only mode\n");
- }
} else {
shared_ptr<TBufferedTransport> bufferedSocket(new TBufferedTransport(socket));
transport = bufferedSocket;
string serverType = "simple";
string protocolType = "binary";
size_t workerCount = 4;
- bool frameOutput = true;
ostringstream usage;
port = atoi(args["port"].c_str());
}
- if (!args["noframe"].empty()) {
- frameOutput = false;
- }
-
if (!args["server-type"].empty()) {
serverType = args["server-type"];
if (serverType == "simple") {
threadedServer.serve();
} else if (serverType == "nonblocking") {
-
TNonblockingServer nonblockingServer(testProcessor, port);
- nonblockingServer.setFrameResponses(frameOutput);
- if (frameOutput) {
- printf("Using framed output mode\n");
- } else {
- printf("Using non-framed output mode\n");
- }
-
printf("Starting the nonblocking server on port %d...\n", port);
nonblockingServer.serve();
-
}
printf("done.\n");