rb_byte_buffer.c
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #include <ruby/ruby.h>
20 
21 #include "rb_byte_buffer.h"
22 
23 #include "rb_grpc.h"
25 
27 #include <grpc/grpc.h>
28 #include <grpc/slice.h>
29 
34  return buffer;
35 }
36 
38  VALUE rb_string;
41  if (buffer == NULL) {
42  return Qnil;
43  }
44  rb_string = rb_str_buf_new(grpc_byte_buffer_length(buffer));
46  rb_raise(rb_eRuntimeError, "Error initializing byte buffer reader.");
47  return Qnil;
48  }
49  while (grpc_byte_buffer_reader_next(&reader, &next) != 0) {
50  rb_str_cat(rb_string, (const char*)GRPC_SLICE_START_PTR(next),
53  }
55  return rb_string;
56 }
57 
59  if (GRPC_SLICE_START_PTR(slice) == NULL) {
60  rb_raise(rb_eRuntimeError,
61  "attempt to convert uninitialized grpc_slice to ruby string");
62  }
63  return rb_str_new((char*)GRPC_SLICE_START_PTR(slice),
65 }
grpc_slice_unref
GPRAPI void grpc_slice_unref(grpc_slice s)
Definition: slice_api.cc:32
grpc_rb_slice_to_ruby_string
VALUE grpc_rb_slice_to_ruby_string(grpc_slice slice)
Definition: rb_byte_buffer.c:58
grpc_raw_byte_buffer_create
GRPCAPI grpc_byte_buffer * grpc_raw_byte_buffer_create(grpc_slice *slices, size_t nslices)
Definition: byte_buffer.cc:34
rb_grpc_imports.generated.h
slice.h
grpc_byte_buffer_length
GRPCAPI size_t grpc_byte_buffer_length(grpc_byte_buffer *bb)
Definition: byte_buffer.cc:92
grpc_byte_buffer_reader_next
GRPCAPI int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader *reader, grpc_slice *slice)
Definition: byte_buffer_reader.cc:66
grpc_rb_byte_buffer_to_s
VALUE grpc_rb_byte_buffer_to_s(grpc_byte_buffer *buffer)
Definition: rb_byte_buffer.c:37
byte_buffer_reader.h
slice
grpc_slice slice
Definition: src/core/lib/surface/server.cc:467
grpc_byte_buffer_reader_init
GRPCAPI int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader *reader, grpc_byte_buffer *buffer)
Definition: byte_buffer_reader.cc:33
grpc.h
grpc_byte_buffer
Definition: grpc_types.h:43
GRPC_SLICE_START_PTR
#define GRPC_SLICE_START_PTR(slice)
Definition: include/grpc/impl/codegen/slice.h:101
grpc_slice
Definition: include/grpc/impl/codegen/slice.h:65
buffer
char buffer[1024]
Definition: libuv/docs/code/idle-compute/main.c:8
rb_byte_buffer.h
GRPC_SLICE_LENGTH
#define GRPC_SLICE_LENGTH(slice)
Definition: include/grpc/impl/codegen/slice.h:104
rb_grpc.h
grpc_slice_from_copied_buffer
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len)
Definition: slice/slice.cc:170
next
AllocList * next[kMaxLevel]
Definition: abseil-cpp/absl/base/internal/low_level_alloc.cc:100
grpc_rb_s_to_byte_buffer
grpc_byte_buffer * grpc_rb_s_to_byte_buffer(char *string, size_t length)
Definition: rb_byte_buffer.c:30
length
std::size_t length
Definition: abseil-cpp/absl/time/internal/test_util.cc:57
grpc_byte_buffer_reader
Definition: impl/codegen/byte_buffer_reader.h:30
reader
void reader(void *n)
Definition: libuv/docs/code/locks/main.c:8
grpc_byte_buffer_reader_destroy
GRPCAPI void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader *reader)
Definition: byte_buffer_reader.cc:45


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:59