~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/archive/azio.h

  • Committer: Mark Atwood
  • Date: 2008-10-03 01:39:40 UTC
  • mto: This revision was merged to the branch mainline in revision 437.
  • Revision ID: mark@fallenpegasus.com-20081003013940-mvefjo725dltz41h
rename logging_noop to logging_query

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
34
34
*/
35
35
 
36
 
#ifndef PLUGIN_ARCHIVE_AZIO_H
37
 
#define PLUGIN_ARCHIVE_AZIO_H
 
36
#ifndef __AZIO_H__
 
37
#define __AZIO_H__
38
38
 
39
39
/* We currently allow this on all platforms */
40
40
#define AZIO_AIO
41
41
 
42
 
#include <drizzled/common.h>
43
 
#include "drizzled/internal/my_sys.h"
44
 
#include <string.h>
 
42
#include <drizzled/global.h>
 
43
#include <mysys/my_sys.h>
 
44
 
45
45
#include <zlib.h>
46
46
 
47
47
#ifdef  __cplusplus
57
57
#define WATCHPOINT_ERRNO(A) fprintf(stderr, "\nWATCHPOINT %s:%d (%s) %s\n", __FILE__, __LINE__,__func__, strerror(A));A= 0;fflush(stderr);
58
58
 
59
59
/*
60
 
  uint64_t + uint64_t + uint64_t + uint64_t + unsigned char
 
60
  uint64_t + uint64_t + uint64_t + uint64_t + uchar
61
61
*/
62
62
#define AZMETA_BUFFER_SIZE sizeof(uint64_t) \
63
63
  + sizeof(uint64_t) + sizeof(uint64_t) + sizeof(uint64_t) \
224
224
  AZ_METHOD_MAX
225
225
} az_method;
226
226
 
227
 
typedef class azio_container azio_container;
 
227
typedef struct azio_container_st azio_container_st;
228
228
 
229
 
class azio_container {
230
 
public:
 
229
struct azio_container_st {
231
230
  int fd;
232
231
  az_thread_type ready;
233
232
  size_t offset;
236
235
  pthread_mutex_t thresh_mutex;
237
236
  pthread_cond_t threshhold;
238
237
  pthread_t mainthread;            /* Thread descriptor */
239
 
 
240
 
  azio_container():
241
 
    fd(0),
242
 
    offset(0),
243
 
    read_size(0),
244
 
    buffer(NULL),
245
 
    mainthread(0)
246
 
  {}
247
 
 
248
238
};
249
239
 
250
240
 
251
 
typedef class azio_stream {
252
 
public:
 
241
typedef struct azio_stream {
253
242
  z_stream stream;
254
 
  int z_err;    /* error code for last stream operation */
255
 
  int z_eof;    /* set if end of input file */
256
 
  int file;     /* .gz file */
257
 
  Byte *inbuf;  /* input buffer */
258
 
  Byte buffer1[AZ_BUFSIZE_READ];  /* input buffer */
259
 
  Byte buffer2[AZ_BUFSIZE_READ];  /* input buffer */
260
 
  Byte outbuf[AZ_BUFSIZE_WRITE]; /* output buffer */
261
 
  int aio_inited; /* Are we good to go */
262
 
  uLong crc;      /* crc32 of uncompressed data */
263
 
  char *msg;      /* error message */
264
 
  char mode;      /* 'w' or 'r' */
265
 
  size_t start;   /* start of compressed data in file (header skipped) */
266
 
  size_t in;      /* bytes into deflate or inflate */
267
 
  size_t out;     /* bytes out of deflate or inflate */
268
 
  size_t pos;     /* bytes out of deflate or inflate */
269
 
  int back;    /* one character push-back */
270
 
  int last;    /* true if push-back is last character */
 
243
  int      z_err;   /* error code for last stream operation */
 
244
  int      z_eof;   /* set if end of input file */
 
245
  File     file;   /* .gz file */
 
246
  Byte     *inbuf;  /* input buffer */
 
247
  Byte     buffer1[AZ_BUFSIZE_READ];  /* input buffer */
 
248
  Byte     buffer2[AZ_BUFSIZE_READ];  /* input buffer */
 
249
  Byte     outbuf[AZ_BUFSIZE_WRITE]; /* output buffer */
 
250
  int      aio_inited; /* Are we good to go */
 
251
  uLong    crc;     /* crc32 of uncompressed data */
 
252
  char     *msg;    /* error message */
 
253
  char     mode;    /* 'w' or 'r' */
 
254
  size_t  start;   /* start of compressed data in file (header skipped) */
 
255
  size_t  in;      /* bytes into deflate or inflate */
 
256
  size_t  out;     /* bytes out of deflate or inflate */
 
257
  size_t  pos;     /* bytes out of deflate or inflate */
 
258
  int      back;    /* one character push-back */
 
259
  int      last;    /* true if push-back is last character */
271
260
  unsigned char version;   /* Version */
272
261
  unsigned char minor_version;   /* Version */
273
262
  unsigned int block_size;   /* Block Size */
282
271
  unsigned int frm_length;   /* Position for start of FRM */
283
272
  unsigned int comment_start_pos;   /* Position for start of comment */
284
273
  unsigned int comment_length;   /* Position for start of comment */
285
 
 
286
274
#ifdef AZIO_AIO
287
 
  azio_container container;
 
275
  azio_container_st container;
288
276
#endif
289
277
  az_method method;
290
278
  char *row_ptr;
291
 
 
292
 
  azio_stream():
293
 
    z_err(0),
294
 
    z_eof(0),
295
 
    file(0),
296
 
    inbuf(NULL),
297
 
    aio_inited(0),
298
 
    crc(0),
299
 
    msg(NULL),
300
 
    mode(0),
301
 
    start(0),
302
 
    in(0),
303
 
    out(0),
304
 
    pos(0),
305
 
    back(0),
306
 
    last(0),
307
 
    version(0),
308
 
    minor_version(0),
309
 
    block_size(0),
310
 
    check_point(0),
311
 
    forced_flushes(0),
312
 
    rows(0),
313
 
    auto_increment(0),
314
 
    longest_row(0),
315
 
    shortest_row(0),
316
 
    dirty(0),
317
 
    frm_start_pos(0),
318
 
    frm_length(0),
319
 
    comment_start_pos(0),
320
 
    comment_length(0),
321
 
    row_ptr(NULL)
322
 
 {
323
 
    memset(buffer1, 0, AZ_BUFSIZE_READ);
324
 
    memset(buffer2, 0, AZ_BUFSIZE_READ);
325
 
    memset(outbuf, 0, AZ_BUFSIZE_WRITE);
326
 
 }
327
 
 
328
279
} azio_stream;
329
280
 
330
281
                        /* basic functions */
346
297
   can be checked to distinguish the two cases (if errno is zero, the
347
298
   zlib error is Z_MEM_ERROR).  */
348
299
 
349
 
int azdopen(azio_stream *s,int fd, int Flags);
 
300
int azdopen(azio_stream *s,File fd, int Flags); 
350
301
/*
351
302
     azdopen() associates a azio_stream with the file descriptor fd.  File
352
303
   descriptors are obtained from calls like open, dup, creat, pipe or
359
310
   the (de)compression state.
360
311
*/
361
312
 
 
313
 
 
314
unsigned int azread_internal( azio_stream *s, voidp buf, unsigned int len, int *error);
 
315
/*
 
316
   This function is legacy, do not use.
 
317
 
 
318
     Reads the given number of uncompressed bytes from the compressed file.
 
319
   If the input file was not in gzip format, gzread copies the given number
 
320
   of bytes into the buffer.
 
321
     gzread returns the number of uncompressed bytes actually read (0 for
 
322
   end of file, -1 for error). */
 
323
 
362
324
extern int azflush(azio_stream *file, int flush);
363
325
/*
364
326
     Flushes all pending output into the compressed file. The parameter
407
369
size_t azwrite_row(azio_stream *s, void *buf, unsigned int len);
408
370
size_t azread_row(azio_stream *s, int *error);
409
371
 
410
 
extern int azwrite_frm (azio_stream *s, const char *blob, unsigned int length);
 
372
extern int azwrite_frm (azio_stream *s, char *blob, unsigned int length);
411
373
extern int azread_frm (azio_stream *s, char *blob);
412
 
extern int azwrite_comment (azio_stream *s, const char *blob, unsigned int length);
 
374
extern int azwrite_comment (azio_stream *s, char *blob, unsigned int length);
413
375
extern int azread_comment (azio_stream *s, char *blob);
414
376
 
415
377
#ifdef  __cplusplus
416
378
}
417
379
#endif
418
380
 
419
 
#endif /* PLUGIN_ARCHIVE_AZIO_H */
 
381
#endif /* AZIO_H */