thrift/lib/cpp
Mark Slee 402ee28f87 Fix TNonBlockingServer libevent issue in ThreadPool mode
Summary: If using TNonBlockingServer with a ThreadManager, when you send a task off to the threadmanager you need to cancel the event that you have set on that client socket. Otherwise, when you give control back to libevent, it might trigger more read events if there are more requests coming down the pipe. This is an issue, because the server will be in the wrong state at that point and will have no way of handling reading more data if it is still in the WAIT_TASK state trying to see if it should write something back to the client. So, when we hit that control flow, we must setIdle() on the TConnection so that libevent doesn't trigger it anymore. Later, after the result is written, we'll setRead() and go back to the init state.

Reviewed By: akhil

Test Plan: Akhil's async + TNonBlocking karma server


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665217 13f79535-47bb-0310-9956-ffa450edef68
2007-08-23 01:43:20 +00:00
..
aclocal Fix build script reference problem 2007-04-03 07:31:51 +00:00
src Fix TNonBlockingServer libevent issue in ThreadPool mode 2007-08-23 01:43:20 +00:00
bootstrap.sh Oops typo. 2007-04-04 22:13:37 +00:00
cleanup.sh Thrift: Cleaned up whitespace. 2007-07-26 21:10:32 +00:00
configure.ac Thrift: Better handling of strerror_r. 2007-08-22 23:20:24 +00:00
COPYING Some Thrift documentation cleanups 2007-02-28 21:43:54 +00:00
LICENSE Some Thrift documentation cleanups 2007-02-28 21:43:54 +00:00
Makefile.am Thrift: Better handling of strerror_r. 2007-08-22 23:20:24 +00:00
README READMEs and DOCs and ant tasks, oh my 2007-03-06 00:06:27 +00:00

Thrift C++ Software Library

README Author: Mark Slee (mcslee@facebook.com)
Last Modified: 2007-Mar-05

Thrift is distributed under the Thrift open source software license.
Please see the included LICENSE file.

Using Thrift with C++
=====================

The Thrift C++ libraries are built using the GNU tools. Follow the instructions
in the top-level README, or run bootstrap.sh in this folder to generate the
Makefiles.

In case you do not want to open another README file, do this:
  ./bootstrap.sh
  ./configure (--with-boost=/usr/local)
  make
  sudo make install

Thrift is divided into two libraries.

libthrift
  The core Thrift library contains all the core Thrift code. It requires
  boost shared pointers, pthreads, and librt.

libthriftnb
  This library contains the Thrift nonblocking server, which uses libevent.
  To link this library you will also need to link libevent.

Linking Against Thrift
======================

After you build and install Thrift the libraries are installed to
/usr/local/lib by default. Make sure this is in your LDPATH.

On Linux, the best way to do this is to ensure that /usr/local/lib is in
your /etc/ld.so.conf and then run /sbin/ldconfig.

Depending upon whether you are linking dynamically or statically and how
your build environment it set up, you may need to include additional
libraries when linking against thrift, such as librt and/or libpthread. If
you are using libthriftnb you will also need libevent.

Dependencies
============

boost shared pointers
http://www.boost.org/libs/smart_ptr/smart_ptr.htm

libevent (for libthriftnb only)
http://monkey.org/~provos/libevent/