~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/compression/compress.cc

  • Committer: Evan Jones
  • Date: 2011-01-02 18:30:08 UTC
  • mto: (2055.1.2 build)
  • mto: This revision was merged to the branch mainline in revision 2056.
  • Revision ID: evanj@mit.edu-20110102183008-ytvoaig5zxdck3d5
libdrizzle: drizzle_state_read: only call recv() if data is available.

This uses the "read ready" flag that already exists to avoid excess system calls. Without this patch, in non-blocking mode after sending a command, libdrizzle immediately calls recv(), which almost always returns EAGAIN. This patch avoids that, instead returning IO_WAIT. This causes the caller to wait for data on the connection using poll() or epoll() before calling recv().

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
15
15
 
16
 
#include <config.h>
 
16
#include "config.h"
17
17
#include <drizzled/plugin/function.h>
18
18
#include <drizzled/item/func.h>
19
19
#include <drizzled/function/str/strfunc.h>
21
21
#include <drizzled/sql_error.h>
22
22
#include <drizzled/current_session.h>
23
23
#include <zlib.h>
24
 
#include <plugin/compression/compress.h>
 
24
#include "plugin/compression/compress.h"
25
25
 
26
26
#include <string>
27
27
 
30
30
 
31
31
String *Item_func_compress::val_str(String *str)
32
32
{
33
 
  int err= Z_OK;
34
 
  drizzled::error_t code;
 
33
  int err= Z_OK, code;
35
34
  ulong new_size;
36
35
  String *res;
37
36
  Byte *body;