Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
z
Classes
Class List
Class Hierarchy
Class Members
All
:
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Properties
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Related Functions
:
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
grpc
src
php
ext
grpc
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 <php.h>
20
21
// The include file must place here under <php.h> for fixing compile error.
22
// See: https://github.com/grpc/grpc/pull/12360#issuecomment-326484589
23
#include "
byte_buffer.h
"
24
25
#include <
grpc/byte_buffer_reader.h
>
26
27
grpc_byte_buffer
*
string_to_byte_buffer
(
char
*
string
,
size_t
length
) {
28
grpc_slice
slice
=
grpc_slice_from_copied_buffer
(
string
,
length
);
29
grpc_byte_buffer
*
buffer
=
grpc_raw_byte_buffer_create
(&
slice
, 1);
30
grpc_slice_unref
(
slice
);
31
return
buffer
;
32
}
33
34
zend_string*
byte_buffer_to_zend_string
(
grpc_byte_buffer
*
buffer
) {
35
grpc_byte_buffer_reader
reader
;
36
if
(
buffer
== NULL || !
grpc_byte_buffer_reader_init
(&
reader
,
buffer
)) {
37
/* TODO(dgq): distinguish between the error cases. */
38
return
NULL;
39
}
40
41
const
size_t
length
=
grpc_byte_buffer_length
(
reader
.buffer_out);
42
zend_string* zstr = zend_string_alloc(
length
, 0);
43
44
char
*
buf
= ZSTR_VAL(zstr);
45
grpc_slice
next
;
46
while
(
grpc_byte_buffer_reader_next
(&
reader
, &
next
) != 0) {
47
const
size_t
next_len =
GRPC_SLICE_LENGTH
(
next
);
48
memcpy
(
buf
,
GRPC_SLICE_START_PTR
(
next
), next_len);
49
buf
+= next_len;
50
grpc_slice_unref
(
next
);
51
}
52
53
*
buf
=
'\0'
;
54
55
return
zstr;
56
}
grpc_slice_unref
GPRAPI void grpc_slice_unref(grpc_slice s)
Definition:
slice_api.cc:32
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
buf
voidpf void * buf
Definition:
bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
grpc_byte_buffer_length
GRPCAPI size_t grpc_byte_buffer_length(grpc_byte_buffer *bb)
Definition:
byte_buffer.cc:92
string_to_byte_buffer
grpc_byte_buffer * string_to_byte_buffer(char *string, size_t length)
Definition:
byte_buffer.c:27
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
byte_buffer_reader.h
byte_buffer_to_zend_string
zend_string * byte_buffer_to_zend_string(grpc_byte_buffer *buffer)
Definition:
byte_buffer.c:34
memcpy
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
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_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
GRPC_SLICE_LENGTH
#define GRPC_SLICE_LENGTH(slice)
Definition:
include/grpc/impl/codegen/slice.h:104
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
length
std::size_t length
Definition:
abseil-cpp/absl/time/internal/test_util.cc:57
byte_buffer.h
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
Author(s):
autogenerated on Thu Mar 13 2025 02:58:41