您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GRPC_SLICE_LENGTH函数代码示例

51自学网 2021-06-01 20:55:29
  C++
这篇教程C++ GRPC_SLICE_LENGTH函数代码示例写得很实用,希望能帮到您。

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

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

示例1: verify_jwt_signature

static int verify_jwt_signature(EVP_PKEY *key, const char *alg,                                grpc_slice signature, grpc_slice signed_data) {  EVP_MD_CTX *md_ctx = EVP_MD_CTX_create();  const EVP_MD *md = evp_md_from_alg(alg);  int result = 0;  GPR_ASSERT(md != NULL); /* Checked before. */  if (md_ctx == NULL) {    gpr_log(GPR_ERROR, "Could not create EVP_MD_CTX.");    goto end;  }  if (EVP_DigestVerifyInit(md_ctx, NULL, md, NULL, key) != 1) {    gpr_log(GPR_ERROR, "EVP_DigestVerifyInit failed.");    goto end;  }  if (EVP_DigestVerifyUpdate(md_ctx, GRPC_SLICE_START_PTR(signed_data),                             GRPC_SLICE_LENGTH(signed_data)) != 1) {    gpr_log(GPR_ERROR, "EVP_DigestVerifyUpdate failed.");    goto end;  }  if (EVP_DigestVerifyFinal(md_ctx, GRPC_SLICE_START_PTR(signature),                            GRPC_SLICE_LENGTH(signature)) != 1) {    gpr_log(GPR_ERROR, "JWT signature verification failed.");    goto end;  }  result = 1;end:  if (md_ctx != NULL) EVP_MD_CTX_destroy(md_ctx);  return result;}
开发者ID:izouxv,项目名称:grpc,代码行数:31,


示例2: test_load_empty_file

static void test_load_empty_file(void) {  FILE *tmp = NULL;  grpc_slice slice;  grpc_slice slice_with_null_term;  grpc_error *error;  char *tmp_name;  LOG_TEST_NAME("test_load_empty_file");  tmp = gpr_tmpfile(prefix, &tmp_name);  GPR_ASSERT(tmp_name != NULL);  GPR_ASSERT(tmp != NULL);  fclose(tmp);  error = grpc_load_file(tmp_name, 0, &slice);  GPR_ASSERT(error == GRPC_ERROR_NONE);  GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == 0);  error = grpc_load_file(tmp_name, 1, &slice_with_null_term);  GPR_ASSERT(error == GRPC_ERROR_NONE);  GPR_ASSERT(GRPC_SLICE_LENGTH(slice_with_null_term) == 1);  GPR_ASSERT(GRPC_SLICE_START_PTR(slice_with_null_term)[0] == 0);  remove(tmp_name);  gpr_free(tmp_name);  grpc_slice_unref(slice);  grpc_slice_unref(slice_with_null_term);}
开发者ID:Indifer,项目名称:grpc,代码行数:28,


示例3: test_load_small_file

static void test_load_small_file(void) {  FILE *tmp = NULL;  grpc_slice slice;  grpc_slice slice_with_null_term;  grpc_error *error;  char *tmp_name;  const char *blah = "blah";  LOG_TEST_NAME("test_load_small_file");  tmp = gpr_tmpfile(prefix, &tmp_name);  GPR_ASSERT(tmp_name != NULL);  GPR_ASSERT(tmp != NULL);  GPR_ASSERT(fwrite(blah, 1, strlen(blah), tmp) == strlen(blah));  fclose(tmp);  error = grpc_load_file(tmp_name, 0, &slice);  GPR_ASSERT(error == GRPC_ERROR_NONE);  GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == strlen(blah));  GPR_ASSERT(!memcmp(GRPC_SLICE_START_PTR(slice), blah, strlen(blah)));  error = grpc_load_file(tmp_name, 1, &slice_with_null_term);  GPR_ASSERT(error == GRPC_ERROR_NONE);  GPR_ASSERT(GRPC_SLICE_LENGTH(slice_with_null_term) == (strlen(blah) + 1));  GPR_ASSERT(strcmp((const char *)GRPC_SLICE_START_PTR(slice_with_null_term),                    blah) == 0);  remove(tmp_name);  gpr_free(tmp_name);  grpc_slice_unref(slice);  grpc_slice_unref(slice_with_null_term);}
开发者ID:Indifer,项目名称:grpc,代码行数:32,


示例4: md_ary_datasize

static size_t md_ary_datasize(const void *p) {  const grpc_metadata_array *const ary = (grpc_metadata_array *)p;  size_t i, datasize = sizeof(grpc_metadata_array);  for (i = 0; i < ary->count; ++i) {    const grpc_metadata *const md = &ary->metadata[i];    datasize += GRPC_SLICE_LENGTH(md->key);    datasize += GRPC_SLICE_LENGTH(md->value);  }  datasize += ary->capacity * sizeof(grpc_metadata);  return datasize;}
开发者ID:makdharma,项目名称:grpc,代码行数:11,


示例5: count_slices

static size_t count_slices(grpc_slice *slices, size_t nslices,                           int *current_data) {  size_t num_bytes = 0;  unsigned i, j;  unsigned char *buf;  for (i = 0; i < nslices; ++i) {    buf = GRPC_SLICE_START_PTR(slices[i]);    for (j = 0; j < GRPC_SLICE_LENGTH(slices[i]); ++j) {      GPR_ASSERT(buf[j] == *current_data);      *current_data = (*current_data + 1) % 256;    }    num_bytes += GRPC_SLICE_LENGTH(slices[i]);  }  return num_bytes;}
开发者ID:royalharsh,项目名称:grpc,代码行数:15,


示例6: grpc_split_slices

void grpc_split_slices(grpc_slice_split_mode mode, grpc_slice *src_slices,                       size_t src_slice_count, grpc_slice **dst_slices,                       size_t *dst_slice_count) {  size_t i, j;  size_t length;  switch (mode) {    case GRPC_SLICE_SPLIT_IDENTITY:      *dst_slice_count = src_slice_count;      *dst_slices = gpr_malloc(sizeof(grpc_slice) * src_slice_count);      for (i = 0; i < src_slice_count; i++) {        (*dst_slices)[i] = src_slices[i];        grpc_slice_ref((*dst_slices)[i]);      }      break;    case GRPC_SLICE_SPLIT_MERGE_ALL:      *dst_slice_count = 1;      length = 0;      for (i = 0; i < src_slice_count; i++) {        length += GRPC_SLICE_LENGTH(src_slices[i]);      }      *dst_slices = gpr_malloc(sizeof(grpc_slice));      **dst_slices = grpc_slice_malloc(length);      length = 0;      for (i = 0; i < src_slice_count; i++) {        memcpy(GRPC_SLICE_START_PTR(**dst_slices) + length,               GRPC_SLICE_START_PTR(src_slices[i]),               GRPC_SLICE_LENGTH(src_slices[i]));        length += GRPC_SLICE_LENGTH(src_slices[i]);      }      break;    case GRPC_SLICE_SPLIT_ONE_BYTE:      length = 0;      for (i = 0; i < src_slice_count; i++) {        length += GRPC_SLICE_LENGTH(src_slices[i]);      }      *dst_slice_count = length;      *dst_slices = gpr_malloc(sizeof(grpc_slice) * length);      length = 0;      for (i = 0; i < src_slice_count; i++) {        for (j = 0; j < GRPC_SLICE_LENGTH(src_slices[i]); j++) {          (*dst_slices)[length] = grpc_slice_sub(src_slices[i], j, j + 1);          length++;        }      }      break;  }}
开发者ID:aaronjheng,项目名称:grpc,代码行数:48,


示例7: test_load_big_file

static void test_load_big_file(void) {  FILE *tmp = NULL;  grpc_slice slice;  grpc_error *error;  char *tmp_name;  static const size_t buffer_size = 124631;  unsigned char *buffer = gpr_malloc(buffer_size);  unsigned char *current;  size_t i;  LOG_TEST_NAME("test_load_big_file");  memset(buffer, 42, buffer_size);  tmp = gpr_tmpfile(prefix, &tmp_name);  GPR_ASSERT(tmp != NULL);  GPR_ASSERT(tmp_name != NULL);  GPR_ASSERT(fwrite(buffer, 1, buffer_size, tmp) == buffer_size);  fclose(tmp);  error = grpc_load_file(tmp_name, 0, &slice);  GPR_ASSERT(error == GRPC_ERROR_NONE);  GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == buffer_size);  current = GRPC_SLICE_START_PTR(slice);  for (i = 0; i < buffer_size; i++) {    GPR_ASSERT(current[i] == 42);  }  remove(tmp_name);  gpr_free(tmp_name);  grpc_slice_unref(slice);  gpr_free(buffer);}
开发者ID:Indifer,项目名称:grpc,代码行数:33,


示例8: grpc_slice_rchr

int grpc_slice_rchr(grpc_slice s, char c) {  const char *b = (const char *)GRPC_SLICE_START_PTR(s);  int i;  for (i = (int)GRPC_SLICE_LENGTH(s) - 1; i != -1 && b[i] != c; i--)    ;  return i;}
开发者ID:aaronjheng,项目名称:grpc,代码行数:7,


示例9: on_read_request_done

// Callback to read the HTTP CONNECT request.// TODO(roth): Technically, for any of the failure modes handled by this// function, we should handle the error by returning an HTTP response to// the client indicating that the request failed.  However, for the purposes// of this test code, it's fine to pretend this is a client-side error,// which will cause the client connection to be dropped.static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg,                                 grpc_error* error) {  proxy_connection* conn = arg;  if (error != GRPC_ERROR_NONE) {    proxy_connection_failed(exec_ctx, conn, true /* is_client */,                            "HTTP proxy read request", error);    return;  }  // Read request and feed it to the parser.  for (size_t i = 0; i < conn->client_read_buffer.count; ++i) {    if (GRPC_SLICE_LENGTH(conn->client_read_buffer.slices[i]) > 0) {      error = grpc_http_parser_parse(&conn->http_parser,                                     conn->client_read_buffer.slices[i], NULL);      if (error != GRPC_ERROR_NONE) {        proxy_connection_failed(exec_ctx, conn, true /* is_client */,                                "HTTP proxy request parse", error);        GRPC_ERROR_UNREF(error);        return;      }    }  }  grpc_slice_buffer_reset_and_unref(&conn->client_read_buffer);  // If we're not done reading the request, read more data.  if (conn->http_parser.state != GRPC_HTTP_BODY) {    grpc_endpoint_read(exec_ctx, conn->client_endpoint,                       &conn->client_read_buffer, &conn->on_read_request_done);    return;  }  // Make sure we got a CONNECT request.  if (strcmp(conn->http_request.method, "CONNECT") != 0) {    char* msg;    gpr_asprintf(&msg, "HTTP proxy got request method %s",                 conn->http_request.method);    error = GRPC_ERROR_CREATE(msg);    gpr_free(msg);    proxy_connection_failed(exec_ctx, conn, true /* is_client */,                            "HTTP proxy read request", error);    GRPC_ERROR_UNREF(error);    return;  }  // Resolve address.  grpc_resolved_addresses* resolved_addresses = NULL;  error = grpc_blocking_resolve_address(conn->http_request.path, "80",                                        &resolved_addresses);  if (error != GRPC_ERROR_NONE) {    proxy_connection_failed(exec_ctx, conn, true /* is_client */,                            "HTTP proxy DNS lookup", error);    GRPC_ERROR_UNREF(error);    return;  }  GPR_ASSERT(resolved_addresses->naddrs >= 1);  // Connect to requested address.  // The connection callback inherits our reference to conn.  const gpr_timespec deadline = gpr_time_add(      gpr_now(GPR_CLOCK_MONOTONIC), gpr_time_from_seconds(10, GPR_TIMESPAN));  grpc_tcp_client_connect(exec_ctx, &conn->on_server_connect_done,                          &conn->server_endpoint, conn->pollset_set, NULL,                          &resolved_addresses->addrs[0], deadline);  grpc_resolved_addresses_destroy(resolved_addresses);}
开发者ID:pquerna,项目名称:grpc,代码行数:66,


示例10: grpcsharp_batch_context_recv_message_next_slice_peek

/* * Gets the next slice from recv_message byte buffer. * Returns 1 if a slice was get successfully, 0 if there are no more slices to * read. Set slice_len to the length of the slice and the slice_data_ptr to * point to slice's data. Caller must ensure that the byte buffer being read * from stays alive as long as the data of the slice are being accessed * (grpc_byte_buffer_reader_peek method is used internally) * * Remarks: * Slices can only be iterated once. * Initializes recv_message_buffer_reader if it was not initialized yet. */GPR_EXPORT int GPR_CALLTYPEgrpcsharp_batch_context_recv_message_next_slice_peek(    grpcsharp_batch_context* ctx, size_t* slice_len, uint8_t** slice_data_ptr) {  *slice_len = 0;  *slice_data_ptr = NULL;  if (!ctx->recv_message) {    return 0;  }  if (!ctx->recv_message_reader) {    ctx->recv_message_reader = &ctx->reserved_recv_message_reader;    GPR_ASSERT(grpc_byte_buffer_reader_init(ctx->recv_message_reader,                                            ctx->recv_message));  }  grpc_slice* slice_ptr;  if (!grpc_byte_buffer_reader_peek(ctx->recv_message_reader, &slice_ptr)) {    return 0;  }  /* recv_message buffer must not be deleted before all the data is read */  *slice_len = GRPC_SLICE_LENGTH(*slice_ptr);  *slice_data_ptr = GRPC_SLICE_START_PTR(*slice_ptr);  return 1;}
开发者ID:grpc,项目名称:grpc,代码行数:38,


示例11: grpcsharp_batch_context_recv_status_on_client_details

GPR_EXPORT const char* GPR_CALLTYPEgrpcsharp_batch_context_recv_status_on_client_details(    const grpcsharp_batch_context* ctx, size_t* details_length) {  *details_length =      GRPC_SLICE_LENGTH(ctx->recv_status_on_client.status_details);  return (char*)GRPC_SLICE_START_PTR(ctx->recv_status_on_client.status_details);}
开发者ID:grpc,项目名称:grpc,代码行数:7,


示例12: GRPC_SLICE_LENGTH

grpc_error *grpc_chttp2_data_parser_parse(grpc_exec_ctx *exec_ctx, void *parser,                                          grpc_chttp2_transport *t,                                          grpc_chttp2_stream *s,                                          grpc_slice slice, int is_last) {  /* grpc_error *error = parse_inner_buffer(exec_ctx, p, t, s, slice); */  s->stats.incoming.framing_bytes += GRPC_SLICE_LENGTH(slice);  if (!s->pending_byte_stream) {    grpc_slice_ref_internal(slice);    grpc_slice_buffer_add(&s->frame_storage, slice);    grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s);  } else if (s->on_next) {    GPR_ASSERT(s->frame_storage.length == 0);    grpc_slice_ref_internal(slice);    grpc_slice_buffer_add(&s->unprocessed_incoming_frames_buffer, slice);    grpc_closure_sched(exec_ctx, s->on_next, GRPC_ERROR_NONE);    s->on_next = NULL;  } else {    grpc_slice_ref_internal(slice);    grpc_slice_buffer_add(&s->frame_storage, slice);  }  if (is_last && s->received_last_frame) {    grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, false,                                   GRPC_ERROR_NONE);  }  return GRPC_ERROR_NONE;}
开发者ID:BattleDrive,项目名称:grpc,代码行数:28,


示例13: grpc_empty_slice

/* Takes ownership of creds_path if not NULL. */static grpc_error *create_default_creds_from_path(    grpc_exec_ctx *exec_ctx, char *creds_path, grpc_call_credentials **creds) {  grpc_json *json = NULL;  grpc_auth_json_key key;  grpc_auth_refresh_token token;  grpc_call_credentials *result = NULL;  grpc_slice creds_data = grpc_empty_slice();  grpc_error *error = GRPC_ERROR_NONE;  if (creds_path == NULL) {    error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("creds_path unset");    goto end;  }  error = grpc_load_file(creds_path, 0, &creds_data);  if (error != GRPC_ERROR_NONE) {    goto end;  }  json = grpc_json_parse_string_with_len(      (char *)GRPC_SLICE_START_PTR(creds_data), GRPC_SLICE_LENGTH(creds_data));  if (json == NULL) {    error = grpc_error_set_str(        GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to parse JSON"),        GRPC_ERROR_STR_RAW_BYTES, grpc_slice_ref_internal(creds_data));    goto end;  }  /* First, try an auth json key. */  key = grpc_auth_json_key_create_from_json(json);  if (grpc_auth_json_key_is_valid(&key)) {    result =        grpc_service_account_jwt_access_credentials_create_from_auth_json_key(            exec_ctx, key, grpc_max_auth_token_lifetime());    if (result == NULL) {      error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(          "grpc_service_account_jwt_access_credentials_create_from_auth_json_"          "key failed");    }    goto end;  }  /* Then try a refresh token if the auth json key was invalid. */  token = grpc_auth_refresh_token_create_from_json(json);  if (grpc_auth_refresh_token_is_valid(&token)) {    result =        grpc_refresh_token_credentials_create_from_auth_refresh_token(token);    if (result == NULL) {      error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(          "grpc_refresh_token_credentials_create_from_auth_refresh_token "          "failed");    }    goto end;  }end:  GPR_ASSERT((result == NULL) + (error == GRPC_ERROR_NONE) == 1);  if (creds_path != NULL) gpr_free(creds_path);  grpc_slice_unref_internal(exec_ctx, creds_data);  if (json != NULL) grpc_json_destroy(json);  *creds = result;  return error;}
开发者ID:aaronjheng,项目名称:grpc,代码行数:61,


示例14: win_read

static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,                     grpc_slice_buffer *read_slices, grpc_closure *cb) {  grpc_tcp *tcp = (grpc_tcp *)ep;  grpc_winsocket *handle = tcp->socket;  grpc_winsocket_callback_info *info = &handle->read_info;  int status;  DWORD bytes_read = 0;  DWORD flags = 0;  WSABUF buffer;  if (tcp->shutting_down) {    GRPC_CLOSURE_SCHED(        exec_ctx, cb,        GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(            "TCP socket is shutting down", &tcp->shutdown_error, 1));    return;  }  tcp->read_cb = cb;  tcp->read_slices = read_slices;  grpc_slice_buffer_reset_and_unref_internal(exec_ctx, read_slices);  tcp->read_slice = GRPC_SLICE_MALLOC(8192);  buffer.len = (ULONG)GRPC_SLICE_LENGTH(      tcp->read_slice);  // we know slice size fits in 32bit.  buffer.buf = (char *)GRPC_SLICE_START_PTR(tcp->read_slice);  TCP_REF(tcp, "read");  /* First let's try a synchronous, non-blocking read. */  status =      WSARecv(tcp->socket->socket, &buffer, 1, &bytes_read, &flags, NULL, NULL);  info->wsa_error = status == 0 ? 0 : WSAGetLastError();  /* Did we get data immediately ? Yay. */  if (info->wsa_error != WSAEWOULDBLOCK) {    info->bytes_transfered = bytes_read;    GRPC_CLOSURE_SCHED(exec_ctx, &tcp->on_read, GRPC_ERROR_NONE);    return;  }  /* Otherwise, let's retry, by queuing a read. */  memset(&tcp->socket->read_info.overlapped, 0, sizeof(OVERLAPPED));  status = WSARecv(tcp->socket->socket, &buffer, 1, &bytes_read, &flags,                   &info->overlapped, NULL);  if (status != 0) {    int wsa_error = WSAGetLastError();    if (wsa_error != WSA_IO_PENDING) {      info->wsa_error = wsa_error;      GRPC_CLOSURE_SCHED(exec_ctx, &tcp->on_read,                         GRPC_WSA_ERROR(info->wsa_error, "WSARecv"));      return;    }  }  grpc_socket_notify_on_read(exec_ctx, tcp->socket, &tcp->on_read);}
开发者ID:aaronjheng,项目名称:grpc,代码行数:59,


示例15: continue_send_message

static void continue_send_message(grpc_exec_ctx *exec_ctx,                                  grpc_call_element *elem) {  call_data *calld = elem->call_data;  uint8_t *wrptr = calld->payload_bytes;  while (grpc_byte_stream_next(exec_ctx, calld->send_op.send_message,                               &calld->incoming_slice, ~(size_t)0,                               &calld->got_slice)) {    memcpy(wrptr, GRPC_SLICE_START_PTR(calld->incoming_slice),           GRPC_SLICE_LENGTH(calld->incoming_slice));    wrptr += GRPC_SLICE_LENGTH(calld->incoming_slice);    grpc_slice_buffer_add(&calld->slices, calld->incoming_slice);    if (calld->send_length == calld->slices.length) {      calld->send_message_blocked = false;      break;    }  }}
开发者ID:pmarks-net,项目名称:grpc,代码行数:17,


示例16: grpc_slice_merge

grpc_slice grpc_slice_merge(grpc_slice *slices, size_t nslices) {  uint8_t *out = NULL;  size_t length = 0;  size_t capacity = 0;  size_t i;  for (i = 0; i < nslices; i++) {    if (GRPC_SLICE_LENGTH(slices[i]) + length > capacity) {      capacity = GPR_MAX(capacity * 2, GRPC_SLICE_LENGTH(slices[i]) + length);      out = gpr_realloc(out, capacity);    }    memcpy(out + length, GRPC_SLICE_START_PTR(slices[i]),           GRPC_SLICE_LENGTH(slices[i]));    length += GRPC_SLICE_LENGTH(slices[i]);  }  return grpc_slice_new(out, length, gpr_free);}
开发者ID:aaronjheng,项目名称:grpc,代码行数:18,


示例17: emit_lithdr_noidx_v

static void emit_lithdr_noidx_v(grpc_chttp2_hpack_compressor *c,                                grpc_mdelem elem, framer_state *st) {  uint32_t len_key = (uint32_t)GRPC_SLICE_LENGTH(GRPC_MDKEY(elem));  uint8_t huffman_prefix;  grpc_slice value_slice = get_wire_value(elem, &huffman_prefix);  uint32_t len_val = (uint32_t)GRPC_SLICE_LENGTH(value_slice);  uint32_t len_key_len = GRPC_CHTTP2_VARINT_LENGTH(len_key, 1);  uint32_t len_val_len = GRPC_CHTTP2_VARINT_LENGTH(len_val, 1);  GPR_ASSERT(len_key <= UINT32_MAX);  GPR_ASSERT(GRPC_SLICE_LENGTH(value_slice) <= UINT32_MAX);  *add_tiny_header_data(st, 1) = 0x00;  GRPC_CHTTP2_WRITE_VARINT(len_key, 1, 0x00,                           add_tiny_header_data(st, len_key_len), len_key_len);  add_header_data(st, grpc_slice_ref_internal(GRPC_MDKEY(elem)));  GRPC_CHTTP2_WRITE_VARINT(len_val, 1, huffman_prefix,                           add_tiny_header_data(st, len_val_len), len_val_len);  add_header_data(st, value_slice);}
开发者ID:royalharsh,项目名称:grpc,代码行数:18,


示例18: uv_endpoint_write

static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,                              grpc_slice_buffer *write_slices,                              grpc_closure *cb) {  grpc_tcp *tcp = (grpc_tcp *)ep;  uv_buf_t *buffers;  unsigned int buffer_count;  unsigned int i;  grpc_slice *slice;  uv_write_t *write_req;  if (grpc_tcp_trace) {    size_t j;    for (j = 0; j < write_slices->count; j++) {      char *data = grpc_dump_slice(write_slices->slices[j],                                   GPR_DUMP_HEX | GPR_DUMP_ASCII);      gpr_log(GPR_DEBUG, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);      gpr_free(data);    }  }  if (tcp->shutting_down) {    grpc_closure_sched(exec_ctx, cb,                       GRPC_ERROR_CREATE("TCP socket is shutting down"));    return;  }  GPR_ASSERT(tcp->write_cb == NULL);  tcp->write_slices = write_slices;  GPR_ASSERT(tcp->write_slices->count <= UINT_MAX);  if (tcp->write_slices->count == 0) {    // No slices means we don't have to do anything,    // and libuv doesn't like empty writes    grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_NONE);    return;  }  tcp->write_cb = cb;  buffer_count = (unsigned int)tcp->write_slices->count;  buffers = gpr_malloc(sizeof(uv_buf_t) * buffer_count);  grpc_resource_user_alloc(exec_ctx, tcp->resource_user,                           sizeof(uv_buf_t) * buffer_count, NULL);  for (i = 0; i < buffer_count; i++) {    slice = &tcp->write_slices->slices[i];    buffers[i].base = (char *)GRPC_SLICE_START_PTR(*slice);    buffers[i].len = GRPC_SLICE_LENGTH(*slice);  }  tcp->write_buffers = buffers;  write_req = &tcp->write_req;  write_req->data = tcp;  TCP_REF(tcp, "write");  // TODO(murgatroid99): figure out what the return value here means  uv_write(write_req, (uv_stream_t *)tcp->handle, buffers, buffer_count,           write_callback);}
开发者ID:yugui,项目名称:grpc,代码行数:55,


示例19: grpc_slice_slice

int grpc_slice_slice(grpc_slice haystack, grpc_slice needle) {  size_t haystack_len = GRPC_SLICE_LENGTH(haystack);  const uint8_t *haystack_bytes = GRPC_SLICE_START_PTR(haystack);  size_t needle_len = GRPC_SLICE_LENGTH(needle);  const uint8_t *needle_bytes = GRPC_SLICE_START_PTR(needle);  if (haystack_len == 0 || needle_len == 0) return -1;  if (haystack_len < needle_len) return -1;  if (haystack_len == needle_len)    return grpc_slice_eq(haystack, needle) ? 0 : -1;  if (needle_len == 1) return grpc_slice_chr(haystack, (char)*needle_bytes);  const uint8_t *last = haystack_bytes + haystack_len - needle_len;  for (const uint8_t *cur = haystack_bytes; cur != last; ++cur) {    if (0 == memcmp(cur, needle_bytes, needle_len)) {      return (int)(cur - haystack_bytes);    }  }  return -1;}
开发者ID:aaronjheng,项目名称:grpc,代码行数:20,


示例20: alloc_uv_buf

static void alloc_uv_buf(uv_handle_t *handle, size_t suggested_size,                         uv_buf_t *buf) {  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;  grpc_tcp *tcp = handle->data;  (void)suggested_size;  tcp->read_slice = grpc_resource_user_slice_malloc(      &exec_ctx, tcp->resource_user, GRPC_TCP_DEFAULT_READ_SLICE_SIZE);  buf->base = (char *)GRPC_SLICE_START_PTR(tcp->read_slice);  buf->len = GRPC_SLICE_LENGTH(tcp->read_slice);  grpc_exec_ctx_finish(&exec_ctx);}
开发者ID:yugui,项目名称:grpc,代码行数:11,


示例21: gpr_malloc

static grpc_slice *allocate_blocks(size_t num_bytes, size_t slice_size,                                   size_t *num_blocks, uint8_t *current_data) {  size_t nslices = num_bytes / slice_size + (num_bytes % slice_size ? 1u : 0u);  grpc_slice *slices = gpr_malloc(sizeof(grpc_slice) * nslices);  size_t num_bytes_left = num_bytes;  unsigned i, j;  unsigned char *buf;  *num_blocks = nslices;  for (i = 0; i < nslices; ++i) {    slices[i] = grpc_slice_malloc(slice_size > num_bytes_left ? num_bytes_left                                                              : slice_size);    num_bytes_left -= GRPC_SLICE_LENGTH(slices[i]);    buf = GRPC_SLICE_START_PTR(slices[i]);    for (j = 0; j < GRPC_SLICE_LENGTH(slices[i]); ++j) {      buf[j] = *current_data;      (*current_data)++;    }  }  GPR_ASSERT(num_bytes_left == 0);  return slices;}
开发者ID:royalharsh,项目名称:grpc,代码行数:22,


示例22: grpc_base64_decode

static BIGNUM *bignum_from_base64(const char *b64) {  BIGNUM *result = NULL;  grpc_slice bin;  if (b64 == NULL) return NULL;  bin = grpc_base64_decode(b64, 1);  if (GRPC_SLICE_IS_EMPTY(bin)) {    gpr_log(GPR_ERROR, "Invalid base64 for big num.");    return NULL;  }  result = BN_bin2bn(GRPC_SLICE_START_PTR(bin),                     TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), NULL);  grpc_slice_unref(bin);  return result;}
开发者ID:izouxv,项目名称:grpc,代码行数:15,


示例23: GRPC_ERROR_CREATE_FROM_STATIC_STRING

grpc_error *grpc_validate_header_key_is_legal(grpc_slice slice) {  static const uint8_t legal_header_bits[256 / 8] = {      0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x03, 0x00, 0x00, 0x00,      0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  if (GRPC_SLICE_LENGTH(slice) == 0) {    return GRPC_ERROR_CREATE_FROM_STATIC_STRING(        "Metadata keys cannot be zero length");  }  if (GRPC_SLICE_START_PTR(slice)[0] == ':') {    return GRPC_ERROR_CREATE_FROM_STATIC_STRING(        "Metadata keys cannot start with :");  }  return conforms_to(slice, legal_header_bits, "Illegal header key");}
开发者ID:aaronjheng,项目名称:grpc,代码行数:15,


示例24: grpc_byte_buffer_reader_readall

grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader *reader) {  grpc_slice in_slice;  size_t bytes_read = 0;  const size_t input_size = grpc_byte_buffer_length(reader->buffer_out);  grpc_slice out_slice = grpc_slice_malloc(input_size);  uint8_t *const outbuf = GRPC_SLICE_START_PTR(out_slice); /* just an alias */  while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) {    const size_t slice_length = GRPC_SLICE_LENGTH(in_slice);    memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length);    bytes_read += slice_length;    grpc_slice_unref(in_slice);    GPR_ASSERT(bytes_read <= input_size);  }  return out_slice;}
开发者ID:izouxv,项目名称:grpc,代码行数:16,


示例25: emit_lithdr_noidx

static void emit_lithdr_noidx(grpc_chttp2_hpack_compressor *c,                              uint32_t key_index, grpc_mdelem elem,                              framer_state *st) {  uint32_t len_pfx = GRPC_CHTTP2_VARINT_LENGTH(key_index, 4);  uint8_t huffman_prefix;  grpc_slice value_slice = get_wire_value(elem, &huffman_prefix);  size_t len_val = GRPC_SLICE_LENGTH(value_slice);  uint32_t len_val_len;  GPR_ASSERT(len_val <= UINT32_MAX);  len_val_len = GRPC_CHTTP2_VARINT_LENGTH((uint32_t)len_val, 1);  GRPC_CHTTP2_WRITE_VARINT(key_index, 4, 0x00,                           add_tiny_header_data(st, len_pfx), len_pfx);  GRPC_CHTTP2_WRITE_VARINT((uint32_t)len_val, 1, huffman_prefix,                           add_tiny_header_data(st, len_val_len), len_val_len);  add_header_data(st, value_slice);}
开发者ID:royalharsh,项目名称:grpc,代码行数:16,


示例26: gpr_log

static grpc_json *parse_json_part_from_jwt(const char *str, size_t len,                                           grpc_slice *buffer) {  grpc_json *json;  *buffer = grpc_base64_decode_with_len(str, len, 1);  if (GRPC_SLICE_IS_EMPTY(*buffer)) {    gpr_log(GPR_ERROR, "Invalid base64.");    return NULL;  }  json = grpc_json_parse_string_with_len((char *)GRPC_SLICE_START_PTR(*buffer),                                         GRPC_SLICE_LENGTH(*buffer));  if (json == NULL) {    grpc_slice_unref(*buffer);    gpr_log(GPR_ERROR, "JSON parsing error.");  }  return json;}
开发者ID:izouxv,项目名称:grpc,代码行数:17,


示例27: grpc_slice_split

void grpc_slice_split(grpc_slice str, const char *sep, grpc_slice_buffer *dst) {  const size_t sep_len = strlen(sep);  size_t begin, end;  GPR_ASSERT(sep_len > 0);  if (slice_find_separator_offset(str, sep, 0, &begin, &end) != 0) {    do {      grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));    } while (slice_find_separator_offset(str, sep, end + sep_len, &begin,                                         &end) != 0);    grpc_slice_buffer_add_indexed(        dst, grpc_slice_sub(str, end + sep_len, GRPC_SLICE_LENGTH(str)));  } else { /* no sep found, add whole input */    grpc_slice_buffer_add_indexed(dst, grpc_slice_ref(str));  }}
开发者ID:izouxv,项目名称:grpc,代码行数:17,


示例28: add_header_data

static void add_header_data(framer_state *st, grpc_slice slice) {  size_t len = GRPC_SLICE_LENGTH(slice);  size_t remaining;  if (len == 0) return;  remaining = st->max_frame_size + st->output_length_at_start_of_frame -              st->output->length;  if (len <= remaining) {    st->stats->header_bytes += len;    grpc_slice_buffer_add(st->output, slice);  } else {    st->stats->header_bytes += remaining;    grpc_slice_buffer_add(st->output, grpc_slice_split_head(&slice, remaining));    finish_frame(st, 0, 0);    begin_frame(st);    add_header_data(st, slice);  }}
开发者ID:royalharsh,项目名称:grpc,代码行数:17,


示例29: pb_istream_from_buffer

grpc_grpclb_initial_response *grpc_grpclb_initial_response_parse(    grpc_slice encoded_grpc_grpclb_response) {  pb_istream_t stream =      pb_istream_from_buffer(GRPC_SLICE_START_PTR(encoded_grpc_grpclb_response),                             GRPC_SLICE_LENGTH(encoded_grpc_grpclb_response));  grpc_grpclb_response res;  memset(&res, 0, sizeof(grpc_grpclb_response));  if (!pb_decode(&stream, grpc_lb_v1_LoadBalanceResponse_fields, &res)) {    gpr_log(GPR_ERROR, "nanopb error: %s", PB_GET_ERROR(&stream));    return NULL;  }  grpc_grpclb_initial_response *initial_res =      gpr_malloc(sizeof(grpc_grpclb_initial_response));  memcpy(initial_res, &res.initial_response,         sizeof(grpc_grpclb_initial_response));  return initial_res;}
开发者ID:juanmancb90,项目名称:hotdog-functions,代码行数:18,


示例30: byte_buffer_to_string

void byte_buffer_to_string(grpc_byte_buffer *buffer, char **out_string,                           size_t *out_length) {  grpc_byte_buffer_reader reader;  if (buffer == NULL || !grpc_byte_buffer_reader_init(&reader, buffer)) {    /* TODO(dgq): distinguish between the error cases. */    *out_string = NULL;    *out_length = 0;    return;  }  grpc_slice slice = grpc_byte_buffer_reader_readall(&reader);  size_t length = GRPC_SLICE_LENGTH(slice);  char *string = ecalloc(length + 1, sizeof(char));  memcpy(string, GRPC_SLICE_START_PTR(slice), length);  grpc_slice_unref(slice);  *out_string = string;  *out_length = length;}
开发者ID:aaronjheng,项目名称:grpc,代码行数:19,



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


C++ GRPC_SLICE_START_PTR函数代码示例
C++ GRPC_POLLSET_MU函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。