~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field_iterator.h

  • 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:
21
21
#ifndef DRIZZLED_FIELD_ITERATOR_H
22
22
#define DRIZZLED_FIELD_ITERATOR_H
23
23
 
24
 
#include <drizzled/memory/sql_alloc.h>
 
24
#include "drizzled/memory/sql_alloc.h"
25
25
#include <drizzled/sql_list.h>
26
26
#include <drizzled/natural_join_column.h>
27
27
 
78
78
 
79
79
class Field_iterator_natural_join: public Field_iterator
80
80
{
81
 
  List<Natural_join_column>::iterator column_ref_it;
 
81
  List_iterator_fast<Natural_join_column> column_ref_it;
82
82
  Natural_join_column *cur_column_ref;
83
83
public:
84
84
  Field_iterator_natural_join() :cur_column_ref(NULL) {}