• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ buffer_consume函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中buffer_consume函数的典型用法代码示例。如果您正苦于以下问题:C++ buffer_consume函数的具体用法?C++ buffer_consume怎么用?C++ buffer_consume使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了buffer_consume函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: packet_fxp_fsetstat

int packet_fxp_fsetstat(Buffer *buff, Buffer *preped_buff) {
    u_int msg_len;
    u_int xmsg_len;
    
    // File names
    u_int file_len;
    u_char *handle;
    
    // Copy first part of packet over to prepared buffer
    msg_len = get_u32(buffer_ptr(buff));
    xmsg_len = msg_len;
    
    buffer_append(preped_buff, buffer_ptr(buff), 9);
    buffer_consume(buff, 9);
    xmsg_len -= 5;
    
    // Copy handle
    handle = buffer_get_string(buff, &file_len);
    buffer_put_string(preped_buff, (char*) handle, file_len);
    xmsg_len -= (file_len + 4);
    
    // Copy attributes through, cleaning extensions where required
    parse_attrs(buff, preped_buff, &msg_len, &xmsg_len);
    
    // Copy any remaining packet data over
    buffer_append(preped_buff, buffer_ptr(buff), xmsg_len);
    buffer_consume(buff, xmsg_len);
    
    // Rewrite message length
    put_u32(buffer_end(preped_buff)-msg_len-4, msg_len);
    
    return 1;
}
开发者ID:spaulg,项目名称:sftp-chroot,代码行数:33,代码来源:unchroot_packets.c


示例2: _parse_aiff_comm

void
_parse_aiff_comm(Buffer *buf, uint32_t chunk_size, HV *info)
{
  uint16_t channels = buffer_get_short(buf);
  uint32_t frames = buffer_get_int(buf);
  uint16_t bits_per_sample = buffer_get_short(buf);
  double samplerate = buffer_get_ieee_float(buf);
  
  my_hv_store( info, "channels", newSVuv(channels) );
  my_hv_store( info, "bits_per_sample", newSVuv(bits_per_sample) );
  my_hv_store( info, "samplerate", newSVuv(samplerate) );
  
  my_hv_store( info, "bitrate", newSVuv( samplerate * channels * bits_per_sample ) );
  my_hv_store( info, "song_length_ms", newSVuv( ((frames * 1.0) / samplerate) * 1000 ) );
  my_hv_store( info, "block_align", newSVuv( channels * bits_per_sample / 8 ) );
  
  if (chunk_size > 18) {
    // AIFC extra data
    my_hv_store( info, "compression_type", newSVpvn( buffer_ptr(buf), 4 ) );
    buffer_consume(buf, 4);
    
    my_hv_store( info, "compression_name", newSVpvn( buffer_ptr(buf), chunk_size - 22 ) );
    buffer_consume(buf, chunk_size - 22);
  }
}
开发者ID:Excito,项目名称:libaudio-scan-perl,代码行数:25,代码来源:wav.c


示例3: packet_peek_session_id

uint16_t packet_peek_session_id(uint8_t *data, size_t length)
{
  buffer_t *buffer = NULL;
  uint16_t session_id = -1;

  /* Create a buffer of the first 5 bytes. */
  if(length < 5)
  {
    LOG_FATAL("Packet is too short!\n");
    return -1;
  }

  /* Create a buffer with the first 5 bytes of data. */
  buffer = buffer_create_with_data(BO_BIG_ENDIAN, data, 5);

  /* Discard packet_id. */
  buffer_consume(buffer, 2);

  /* Discard packet_type. */
  buffer_consume(buffer, 1);

  /* Finally, get the session_id. */
  session_id = buffer_read_next_int16(buffer);

  /* Kill the buffer. */
  buffer_destroy(buffer);

  /* Done! */
  return session_id;
}
开发者ID:EricSB,项目名称:dnscat2,代码行数:30,代码来源:packet.c


示例4: keygrab_ssh1

static Key *
keygrab_ssh1(con *c)
{
    static Key *rsa;
    static Buffer msg;

    if (rsa == NULL) {
        buffer_init(&msg);
        rsa = key_new(KEY_RSA1);
    }
    buffer_append(&msg, c->c_data, c->c_plen);
    buffer_consume(&msg, 8 - (c->c_plen & 7));	/* padding */
    if (buffer_get_char(&msg) != (int) SSH_SMSG_PUBLIC_KEY) {
        error("%s: invalid packet type", c->c_name);
        buffer_clear(&msg);
        return NULL;
    }
    buffer_consume(&msg, 8);		/* cookie */

    /* server key */
    (void) buffer_get_int(&msg);
    buffer_get_bignum(&msg, rsa->rsa->e);
    buffer_get_bignum(&msg, rsa->rsa->n);

    /* host key */
    (void) buffer_get_int(&msg);
    buffer_get_bignum(&msg, rsa->rsa->e);
    buffer_get_bignum(&msg, rsa->rsa->n);

    buffer_clear(&msg);

    return (rsa);
}
开发者ID:cyrilmagsuci,项目名称:freebsd,代码行数:33,代码来源:ssh-keyscan.c


示例5: packet_fxp_realpath

int packet_fxp_realpath(Buffer *buff, Buffer *preped_buff) {
    u_int msg_len, xmsg_len;
    u_int file_len;
    u_char *filename;
      
     // Copy first part of packet over to prepared buffer
    msg_len = get_u32(buffer_ptr(buff));
    xmsg_len = msg_len;
    
    buffer_append(preped_buff, buffer_ptr(buff), 9);
    buffer_consume(buff, 9);
    xmsg_len -= 5;
    
    // Rewrite path
    filename = buffer_get_string(buff, &file_len);
    filename = unchroot_filename(filename, (u_char*) user_homedir);
    buffer_put_cstring(preped_buff, (char*) filename);
    xmsg_len -= (file_len + 4);
    msg_len += (strlen((char*) filename) - file_len);
    
    // Copy packet over to prepared buffer
    buffer_append(preped_buff, buffer_ptr(buff), xmsg_len);
    buffer_consume(buff, xmsg_len);
    
    // Replace length with new length
    put_u32(buffer_end(preped_buff)-msg_len-4, msg_len);
    
    return 1;
}
开发者ID:spaulg,项目名称:sftp-chroot,代码行数:29,代码来源:unchroot_packets.c


示例6: packet_fxp_mkdir

int packet_fxp_mkdir(Buffer *buff, Buffer *preped_buff) {
    u_int msg_len;
    u_int xmsg_len;
    
    // File names
    u_int file_len;
    u_char *filename;
    
    // Copy first part of packet over to prepared buffer
    msg_len = get_u32(buffer_ptr(buff));
    xmsg_len = msg_len;
    
    buffer_append(preped_buff, buffer_ptr(buff), 9);
    buffer_consume(buff, 9);
    xmsg_len -= 5;
    
    // Rewrite path
    filename = buffer_get_string(buff, &file_len);
    filename = unchroot_filename(filename, (u_char*) user_homedir);
    buffer_put_cstring(preped_buff, (char*) filename);
    xmsg_len -= (file_len + 4);
    msg_len += (strlen((char*) filename) - file_len);
    
    // Copy attributes through, cleaning extensions where required
    parse_attrs(buff, preped_buff, &msg_len, &xmsg_len);
    
    // Copy any remaining packet data over
    buffer_append(preped_buff, buffer_ptr(buff), xmsg_len);
    buffer_consume(buff, xmsg_len);
    
    // Rewrite message length
    put_u32(buffer_end(preped_buff)-msg_len-4, msg_len);
    
    return 1;
}
开发者ID:spaulg,项目名称:sftp-chroot,代码行数:35,代码来源:unchroot_packets.c


示例7: read_and_callback

int read_and_callback(struct reader *rdr, void *arg)
{
	ssize_t ret;
	ssize_t i;
	char *cur;
	int msglen;

	cur = rdr->buf->data + rdr->buf->used;

	/* Read attempt. */
	while ((ret = read(*(rdr->fd), cur, buffer_remaining(rdr->buf))) == -1 &&
	       errno == EINTR)
		;

	/* EOF or read error. */
	if (ret == 0 || ret == -1)
		return ret;

	assert(buffer_append(rdr->buf, cur, ret) == 0);

	/* Process each read character and update internal state. */
	for (i = 0; i < ret; ++i) {
		switch (rdr->state) {
		case RS_NORMAL:
			if (*cur == '\n') {
				/* Callback on new message. */
				msglen = cur - rdr->buf->data + 1;
				if (msglen > 2)
					/* Nonempty message. */
					rdr->cb(*(rdr->fd), rdr->buf->data, msglen, arg);

				/* Consume message. */
				buffer_consume(rdr->buf, msglen);
				cur = rdr->buf->data;
				continue;
			}
			break;
		case RS_GREEDY:
			if (*cur == '\n') {
				buffer_consume(rdr->buf, cur - rdr->buf->data + 1);
				cur = rdr->buf->data;
				rdr->state = RS_NORMAL;
				continue;
			}
			break;
		}
		++cur;
	}

	/* Change to greedy mode if buffer filled. */
	if (buffer_remaining(rdr->buf) == 0 && rdr->state != RS_GREEDY)
		rdr->state = RS_GREEDY;

	/* Discard buffer data if in greedy mode. */
	if (rdr->state == RS_GREEDY)
		buffer_consume(rdr->buf, -1);

	return ret;
}
开发者ID:romankosjk,项目名称:saircd,代码行数:59,代码来源:reader.c


示例8: methodline_parse

static int methodline_parse(struct buffer *bu, struct methodline_state *ms,
	struct buffer *method, struct buffer *uri, struct buffer *version)
{
	const char *s = bu->data;
	unsigned rem = bu->cur;
	char ch;

	while (rem > 0) {
		ch = *s;
		s++;
		rem--;

		switch (ms->state) {
		case 0: /* method */
			if (ch == ' ')
				ms->state = 1;
			else
				buffer_addch(method, ch);
			break;
		case 1: /* uri */
			if (ch == ' ')
				ms->state = 2;
			else
				buffer_addch(uri, ch);
			break;
		case 2: /* version */
			if (ch == '\r')
				ms->state = 3;
			else if (isspace(ch))
				goto parse_error;
			else
				buffer_addch(version, ch);
			break;
		case 3: /* CR */
			if (ch == '\n')
				goto complete;
			else
				goto parse_error;
			break;
		default:
			assert(0);
		}
	}

	buffer_consume(bu, s - bu->data);
	return 0;
complete:
	ms->done = true;
	buffer_consume(bu, s - bu->data);
	return 0;
parse_error:
	Error("%s():parse failure (%.*s)\n",
		__func__, bu->cur, bu->data);
	buffer_consume(bu, s - bu->data);
	Error("%s():parse failure @ %d (state=%d)\n",
		__func__, bu->cur, ms->state);
	return -1;
}
开发者ID:OrangeTide,项目名称:victory,代码行数:58,代码来源:victory.c


示例9: frameparser_parse_body

// Parses body. Returns true iff progress was made.
bool frameparser_parse_body(frameparser *fp, buffer *b)
{
  log_printf(LOG_LEVEL_DEBUG, "frameparser_parse_body\n");

  if (fp->length_left == FP_LENGTH_UNKNOWN)
  {
    // Look for NUL terminator
    int nulpos = buffer_find_byte(b, '\x00');
    if (nulpos < 0)
    {
      // No NUL, so grab everything
      int count = buffer_get_length(b);
      bytestring *body = frame_ensure_body(fp->cur_frame);
      buffer_append_bytestring(b, body, 0, count);
      buffer_consume(b, count);
      return true;
    }
    else if (nulpos == 0)
    {
      // NUL as next character, so the frame is complete
      fp->state = FP_STATE_END;
      return true;
    }
    else
    {
      // NUL after some other bytes, so grab them and the frame is complete
      bytestring *body = frame_ensure_body(fp->cur_frame);
      buffer_append_bytestring(b, body, 0, nulpos);
      buffer_consume(b, nulpos);
      fp->state = FP_STATE_END;
      return true;
    }
  }
  else
  {
    // Remaining length is known. Figure out how many bytes to grab.
    int count = buffer_get_length(b);
    if (fp->length_left < count)
      count = fp->length_left;

    // Grab the bytes
    bytestring *body = frame_ensure_body(fp->cur_frame);
    buffer_append_bytestring(b, body, 0, count);
    buffer_consume(b, count);
    fp->length_left -= count;

    // If we satisfied the expected length then the frame is complete
    if (fp->length_left == 0)
      fp->state = FP_STATE_END;

    return true;
  }
}
开发者ID:karlpilkington,项目名称:ministompd,代码行数:54,代码来源:frameparser.c


示例10: packet_fxp_init

int packet_fxp_init(Buffer *buff, Buffer *preped_buff) {
    u_char *cp;
    u_int msg_len;
    u_int xmsg_len;
    u_int msg_ver;
    
    cp = buffer_ptr(buff);
    
    // 1. Ensure  extensions are not forwarded. Drop packet size down to 5 bytes + 4 byte length. Later byte are ignored through buffer_consume.
    msg_len = get_u32(cp);
    xmsg_len = 5;
    put_u32(cp, xmsg_len);
    
    // 2. Ensure client version number presented is not greater than that supported.
    cp += 5;
    msg_ver = get_u32(cp);
    if (msg_ver > 3)
	msg_ver = 3;
    
    put_u32(cp, msg_ver);
    
    // Copy packet over to prepared buffer
    buffer_append(preped_buff, buffer_ptr(buff), xmsg_len + sizeof(u_int));
    buffer_consume(buff, msg_len + sizeof(u_int));
    
    return 1;
}
开发者ID:spaulg,项目名称:sftp-chroot,代码行数:27,代码来源:unchroot_packets.c


示例11: buf_src_fill_input_buffer

static boolean buf_src_fill_input_buffer(j_decompress_ptr cinfo) {
  static JOCTET mybuffer[4];
  buf_src_mgr *src = (buf_src_mgr *)cinfo->src;

  // Consume the entire buffer, even if bytes are still in bytes_in_buffer
  buffer_consume(src->buf, buffer_len(src->buf));

  if (!buffer_check_load(src->buf, src->fp, 1, BUF_SIZE))
    goto eof;

  cinfo->src->next_input_byte = (JOCTET *)buffer_ptr(src->buf);
  cinfo->src->bytes_in_buffer = buffer_len(src->buf);

  goto ok;

eof:
  // Insert a fake EOI marker if we can't read enough data
  LOG_DEBUG("  EOF filling input buffer, returning EOI marker\n");

  mybuffer[0] = (JOCTET)0xFF;
  mybuffer[1] = (JOCTET)JPEG_EOI;

  cinfo->src->next_input_byte = mybuffer;
  cinfo->src->bytes_in_buffer = 2;

ok:
  return TRUE;
}
开发者ID:chincheta0815,项目名称:libmediascan,代码行数:28,代码来源:image_jpeg.c


示例12: monitor_valid_userblob

static int
monitor_valid_userblob(u_char *data, u_int datalen)
{
	Buffer b;
	u_char *p;
	char *userstyle, *cp;
	u_int len;
	int fail = 0;

	buffer_init(&b);
	buffer_append(&b, data, datalen);

	if (datafellows & SSH_OLD_SESSIONID) {
		p = buffer_ptr(&b);
		len = buffer_len(&b);
		if ((session_id2 == NULL) ||
		    (len < session_id2_len) ||
		    (timingsafe_bcmp(p, session_id2, session_id2_len) != 0))
			fail++;
		buffer_consume(&b, session_id2_len);
	} else {
		p = buffer_get_string(&b, &len);
		if ((session_id2 == NULL) ||
		    (len != session_id2_len) ||
		    (timingsafe_bcmp(p, session_id2, session_id2_len) != 0))
			fail++;
		free(p);
	}
	if (buffer_get_char(&b) != SSH2_MSG_USERAUTH_REQUEST)
		fail++;
	cp = buffer_get_cstring(&b, NULL);
	xasprintf(&userstyle, "%s%s%s", authctxt->user,
	    authctxt->style ? ":" : "",
	    authctxt->style ? authctxt->style : "");
	if (strcmp(userstyle, cp) != 0) {
		logit("wrong user name passed to monitor: "
		    "expected %s != %.100s", userstyle, cp);
		fail++;
	}
	free(userstyle);
	free(cp);
	buffer_skip_string(&b);
	if (datafellows & SSH_BUG_PKAUTH) {
		if (!buffer_get_char(&b))
			fail++;
	} else {
		cp = buffer_get_cstring(&b, NULL);
		if (strcmp("publickey", cp) != 0)
			fail++;
		free(cp);
		if (!buffer_get_char(&b))
			fail++;
		buffer_skip_string(&b);
	}
	buffer_skip_string(&b);
	if (buffer_len(&b) != 0)
		fail++;
	buffer_free(&b);
	return (fail == 0);
}
开发者ID:east11210,项目名称:openssh-portable,代码行数:60,代码来源:monitor.c


示例13: frameparser_parse_end

// Parses trailing NUL character. Returns true iff progress was made.
bool frameparser_parse_end(frameparser *fp, buffer *b)
{
  // Valid input in this state is simply a single NUL character
  log_printf(LOG_LEVEL_DEBUG, "frameparser_parse_end\n");

  // If there is already a parsed frame that hasn't been picked up yet, we
  //  don't want to overwrite it, so refrain from finishing this frame.
  if (fp->fin_frame)
    return false;  // No progress

  // Check for the NUL
  uint8_t byte = buffer_get_byte(b, 0);
  if (byte != '\x00')
  {
    frameparser_set_error(fp, "Expected trailing NUL at end of frame");
    return false;
  }

  // Consume it
  buffer_consume(b, 1);

  // All done with the current frame
  fp->fin_frame = fp->cur_frame;
  fp->cur_frame = NULL;
  fp->state = FP_STATE_IDLE;

  return true;
}
开发者ID:karlpilkington,项目名称:ministompd,代码行数:29,代码来源:frameparser.c


示例14: buffer_len

void SFTP::send_msg(Buffer *m)
{
	size_t mlen = buffer_len(m);

  toChannel->put (buffer_ptr (m), mlen);
	buffer_consume(m, mlen);
}
开发者ID:lodyagin,项目名称:shiesh,代码行数:7,代码来源:sftp-server.cpp


示例15: image_gif_read_buf

static int
image_gif_read_buf(GifFileType *gif, GifByteType *data, int len)
{
  image *im = (image *)gif->UserData;

  //DEBUG_TRACE("GIF read_buf wants %d bytes, %d in buffer\n", len, buffer_len(im->buf));

  if (im->fh != NULL) {
    if ( !_check_buf(im->fh, im->buf, len, MAX(len, BUFFER_SIZE)) ) {
      warn("Image::Scale not enough GIF data (%s)\n", SvPVX(im->path));
      return 0;
    }
  }
  else {
    if (len > buffer_len(im->buf)) {
      // read from SV into buffer
      int sv_readlen = len - buffer_len(im->buf);

      if (sv_readlen > sv_len(im->sv_data) - im->sv_offset) {
        warn("Image::Scale not enough GIF data (%s)\n", SvPVX(im->path));
        return 0;
      }

      DEBUG_TRACE("  Reading %d bytes of SV data @ %d\n", sv_readlen, im->sv_offset);
      buffer_append(im->buf, SvPVX(im->sv_data) + im->sv_offset, sv_readlen);
      im->sv_offset += sv_readlen;
     }
  }

  memcpy(data, buffer_ptr(im->buf), len);
  buffer_consume(im->buf, len);

  return len;
}
开发者ID:andygrundman,项目名称:Image-Scale,代码行数:34,代码来源:gif.c


示例16: pthread_mutex_lock

void *consumer_function(void *b)
{
  buffer *buff = (buffer *)b;

  int i;
  for (i = 0; i < 100; i++)
    {
      pthread_mutex_lock(buff->mut);
      if(buff->empty)
	{
	  printf("buffer empty, waiting...\n");
	  pthread_cond_wait(buff->notEmpty, buff->mut);
	}

      int consumed = buffer_consume(buff);

      printf("consumed %d\n", consumed);

      pthread_mutex_unlock(buff->mut);

      /* Sleep either 1s or 5s (50% chance for each) */
      if (generate_random_number(99) < 50)
	{
	  usleep(1000000);
	}
      else
	{
	  usleep(5000000);
	}
    }

  return NULL;
}
开发者ID:drusk,项目名称:archive,代码行数:33,代码来源:prodcons.c


示例17: _parse_wav_peak

static void
_parse_wav_peak(ScanData s, Buffer *buf, uint32_t chunk_size, uint8_t big_endian)
{
  uint16_t channels  = 0;
  AV *peaklist = newAV();
  
  SV **entry = my_hv_fetch( info, "channels" );
  if ( entry != NULL ) {
    channels = SvIV(*entry);
  }
  
  // Skip version/timestamp
  buffer_consume(buf, 8);
  
  while ( channels-- ) {
    HV *peak = newHV();
    
    my_hv_store( peak, "value", newSVnv( big_endian ? buffer_get_float32(buf) : buffer_get_float32_le(buf) ) );
    my_hv_store( peak, "position", newSVuv( big_endian ? buffer_get_int(buf) : buffer_get_int_le(buf) ) );
    
    av_push( peaklist, newRV_noinc( (SV *)peak) );
  }
  
  my_hv_store( info, "peak", newRV_noinc( (SV *)peaklist ) );
}
开发者ID:dsully,项目名称:libmediascan,代码行数:25,代码来源:wav.c


示例18: buffer_fill_frame

/* scans forward to the next aac frame and makes sure
 * the entire frame is in the buffer.
 */
static int buffer_fill_frame(struct aac_data *data)
{
	unsigned char *datap;
	int rc, n, len;
	int max = 32768;

	while (1) {
		/* need at least 6 bytes of data */
		rc = buffer_fill_min(data, 6);
		if (rc <= 0)
			break;

		len = buffer_length(data);
		datap = buffer_data(data);

		/* scan for a frame */
		for (n = 0; n < len - 5; n++) {
			/* give up after 32KB */
			if (max-- == 0) {
				logit ("no frame found!");
				/* FIXME: set errno? */
				return -1;
			}

			/* see if there's a frame at this location */
			rc = parse_frame(datap + n);
			if (rc == 0)
				continue;

			/* found a frame, consume all data up to the frame */
			buffer_consume (data, n);

			/* rc == frame length */
			rc = buffer_fill_min (data, rc);
			if (rc <= 0)
				goto end;

			return 1;
		}

		/* consume what we used */
		buffer_consume (data, n);
	}

end:
	return rc;
}
开发者ID:console-tools,项目名称:moc,代码行数:50,代码来源:aac.c


示例19: buffer_add

void buffer_add(bufferADT buffer, char c) {
	if(buffer_is_full(buffer)) {
		buffer_consume(buffer);
	}
	
	buffer->mem_start[buffer->head] = c;
	buffer->head = buffer_next_index(buffer, buffer->head);
}
开发者ID:tcolloca,项目名称:loco-mouseOS,代码行数:8,代码来源:buffer.c


示例20: octstr_drop

char *
octstr_drop(octstr_t *octstr, size_t n)
{
	assert(octstr != NULL);

	buffer_consume(octstr->buf, n);
	return buffer_ptr(octstr->buf);
}
开发者ID:dzruyk,项目名称:crypti,代码行数:8,代码来源:octstr.c



注:本文中的buffer_consume函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ buffer_copy_buffer函数代码示例发布时间:2022-05-30
下一篇:
C++ buffer_clear函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap