コード例 #1
0
ファイル: page.c プロジェクト: baskard/stasis
static const byte * blkNext(block_t * b) {
  genericBlockImpl * impl = (genericBlockImpl*)b->impl;
  impl->pos = stasis_record_next(-1, impl->p, impl->pos);
  if(! memcmp(&(impl->pos), &NULLRID, sizeof(recordid))) {
    return 0;
  } else {
    return stasis_record_read_begin(-1, impl->p, impl->pos);
  }
}
コード例 #2
0
ファイル: page.c プロジェクト: Zhoutall/stasis
/**
   @todo The block API should pass around xids.
 */
static const byte * blkFirst(block_t * b) {
  genericBlockImpl * impl = b->impl;
  impl->pos = stasis_record_first(-1, impl->p);
  if(! memcmp(&(impl->pos), &(NULLRID), sizeof(recordid))) {
    return 0;
  } else {
    return stasis_record_read_begin(-1, impl->p, impl->pos);
  }
}
コード例 #3
0
ファイル: page.c プロジェクト: baskard/stasis
int stasis_record_read(int xid, Page * p, recordid rid, byte *buf) {
  assert(rid.page == p->id);
  assert(rid.size <= BLOB_THRESHOLD_SIZE);

  const byte * dat = stasis_record_read_begin(xid,p,rid);
  memcpy(buf, dat, stasis_record_length_read(xid,p,rid));
  stasis_record_read_done(xid,p,rid,dat);

  return 0;
}