本文整理汇总了C++中request_init函数的典型用法代码示例。如果您正苦于以下问题:C++ request_init函数的具体用法?C++ request_init怎么用?C++ request_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了request_init函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: assert
/* 1 - 7 is the range we use for the global modifiers array
* above */
assert(mods->modifiers > 0);
assert(mods->modifiers <= 7);
assert(mods->modifiers % 2 == 1); /* because we fail odd ones */
assert(mods->status != Success);
assert(mods->pad0 == 0);
assert(mods->pad1 == 0);
}
reply_handler = reply_XIPassiveGrabDevice;
}
static void request_XIPassiveGrabDevice(ClientPtr client, xXIPassiveGrabDeviceReq* req, int error, int errval)
{
int rc;
int modifiers;
rc = ProcXIPassiveGrabDevice(&client_request);
assert(rc == error);
if (rc != Success)
assert(client_request.errorValue == errval);
client_request.swapped = TRUE;
swaps(&req->length);
swapl(&req->time);
swapl(&req->grab_window);
swapl(&req->cursor);
swapl(&req->detail);
swaps(&req->deviceid);
modifiers = req->num_modifiers;
swaps(&req->num_modifiers);
swaps(&req->mask_len);
while(modifiers--)
{
CARD32 *mod = ((CARD32*)(req + 1)) + modifiers;
swapl(mod);
}
rc = SProcXIPassiveGrabDevice(&client_request);
assert(rc == error);
if (rc != Success)
assert(client_request.errorValue == errval);
}
static unsigned char *data[4096]; /* the request buffer */
static void test_XIPassiveGrabDevice(void)
{
int i;
xXIPassiveGrabDeviceReq *request = (xXIPassiveGrabDeviceReq*)data;
unsigned char *mask;
request_init(request, XIPassiveGrabDevice);
request->grab_window = CLIENT_WINDOW_ID;
reply_handler = reply_XIPassiveGrabDevice;
client_request = init_client(request->length, request);
printf("Testing invalid device\n");
request->deviceid = 12;
request_XIPassiveGrabDevice(&client_request, request, BadDevice, request->deviceid);
request->deviceid = XIAllMasterDevices;
printf("Testing invalid grab types\n");
for (i = XIGrabtypeFocusIn + 1; i < 0xFF; i++)
{
request->grab_type = i;
request_XIPassiveGrabDevice(&client_request, request, BadValue, request->grab_type);
}
printf("Testing invalid grab type + detail combinations\n");
request->grab_type = XIGrabtypeEnter;
request->detail = 1;
request_XIPassiveGrabDevice(&client_request, request, BadValue, request->detail);
request->grab_type = XIGrabtypeFocusIn;
request_XIPassiveGrabDevice(&client_request, request, BadValue, request->detail);
request->detail = 0;
printf("Testing invalid masks\n");
mask = (unsigned char*)&request[1];
request->mask_len = bytes_to_int32(XI2LASTEVENT + 1);
request->length += request->mask_len;
SetBit(mask, XI2LASTEVENT + 1);
request_XIPassiveGrabDevice(&client_request, request, BadValue, XI2LASTEVENT + 1);
ClearBit(mask, XI2LASTEVENT + 1);
/* tested all special cases now, test a few valid cases */
/* no modifiers */
request->deviceid = XIAllDevices;
request->grab_type = XIGrabtypeButton;
//.........这里部分代码省略.........
开发者ID:4eremuxa,项目名称:xserver,代码行数:101,代码来源:protocol-xipassivegrabdevice.c
示例2: request_XIQueryDevice
static void request_XIQueryDevice(struct test_data *querydata,
int deviceid, int error)
{
int rc;
ClientRec client;
xXIQueryDeviceReq request;
request_init(&request, XIQueryDevice);
client = init_client(request.length, &request);
reply_handler = reply_XIQueryDevice;
querydata->which_device = deviceid;
request.deviceid = deviceid;
rc = ProcXIQueryDevice(&client);
assert(rc == error);
if (rc != Success)
assert(client.errorValue == deviceid);
reply_handler = reply_XIQueryDevice;
client.swapped = TRUE;
swaps(&request.length);
swaps(&request.deviceid);
rc = SProcXIQueryDevice(&client);
assert(rc == error);
if (rc != Success)
assert(client.errorValue == deviceid);
}
开发者ID:4eremuxa,项目名称:xserver,代码行数:31,代码来源:protocol-xiquerydevice.c
示例3: check
static int check(char *name, int fd) {
struct request_info request;
request_init(&request, RQ_DAEMON, name, RQ_FILE, fd, 0);
fromhost(&request);
return hosts_access(&request);
}
开发者ID:nmacs,项目名称:lm3s-uclinux,代码行数:7,代码来源:libwrap.c
示例4: socket_tcpwrap
bool socket_tcpwrap(int fd, const char *name) {
#ifdef HAVE_LIBWRAP
struct request_info req;
union {
struct sockaddr sa;
struct sockaddr_in in;
struct sockaddr_in6 in6;
struct sockaddr_un un;
struct sockaddr_storage storage;
} sa_union;
socklen_t l = sizeof(sa_union);
if (getsockname(fd, &sa_union.sa, &l) < 0)
return true;
if (sa_union.sa.sa_family != AF_INET &&
sa_union.sa.sa_family != AF_INET6)
return true;
request_init(&req,
RQ_DAEMON, name,
RQ_FILE, fd,
NULL);
fromhost(&req);
if (!hosts_access(&req)) {
log_warning("Connection refused by tcpwrap.");
return false;
}
log_debug("Connection accepted by tcpwrap.");
#endif
return true;
}
开发者ID:terralinux,项目名称:systemd,代码行数:35,代码来源:tcpwrap.c
示例5: http_accept_request_socket
void
http_accept_request_socket(http_conf_t * conf, int fd) {
int confd ;
struct sockaddr addr;
struct sockaddr_in addrIn;
socklen_t addLen = sizeof(struct sockaddr );
while( (confd = accept(fd, &addr, &addLen)) && confd > 0) {
pool_t *p = (pool_t *)pool_create();
http_connect_t * con;
epoll_extra_data_t *data_ptr;
addrIn = *((struct sockaddr_in *) &addr);
data_ptr = (epoll_extra_data_t *)palloc(p, sizeof(epoll_extra_data_t));
con = (http_connect_t *) palloc(p, sizeof(http_connect_t));//换成初始化函数,
con->p= p;
con->fd = confd;
con->in = (request *)request_init(p);
con->out = (response *)response_init(p);
/*char *ip = NULL;
if(addrIn.sin_addr.s_addr) {
ip = inet_ntoa(addrIn.sin_addr);
}
if(ip) {
//con->in->clientIp = (string *) string_init_from_str(p, ip, strlen(ip));
}*/
con->next_handle = accept_handler;
data_ptr->type = SOCKFD;
data_ptr->ptr = (void *) con;
epoll_add_fd(conf->epfd, confd, EPOLL_R, (void *)data_ptr);//对epoll data结构指向的结构体重新封装,分websit
//data struct , connect data struct , file data struct ,
}
}
开发者ID:rentiansheng,项目名称:rhttp,代码行数:34,代码来源:http_request.c
示例6: request_init
//=================================================================================================
void eve::dx11::structured_buffer::init(void)
{
// Call parent class.
eve::dx11::object::init();
request_init();
}
开发者ID:romaincheminade,项目名称:Eve,代码行数:8,代码来源:structured_buffer.cpp
示例7: elm_main
EAPI_MAIN int
elm_main(int argc, char **argv) {
Evas_Object *win = NULL;
Evas_Object *dayselector = NULL;
win = elm_win_add(NULL, "dayselector sample", ELM_WIN_BASIC);
elm_win_title_set(win, "dayselector sample");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
dayselector = elm_dayselector_add(win);
elm_object_text_set(dayselector, "DaySelector!");
request_init();
evas_object_smart_callback_add(win, "focus,in", _register_cb, dayselector);
register_request_listener(EVENT_RESIZE, resize, dayselector);
register_request_listener(EVENT_SET_DISABLED, set_disabled, dayselector);
register_request_listener(EVENT_SET_ENABLED, set_enabled, dayselector);
register_request_listener(EVENT_HIDE, hide, dayselector);
register_request_listener(EVENT_SHOW, show, dayselector);
evas_object_resize(win, 380, 80);
evas_object_resize(dayselector, 120, 40);
evas_object_move(dayselector, 30, 15);
evas_object_show(win);
evas_object_show(dayselector);
elm_run();
request_shutdown();
elm_shutdown();
return 0;
}
开发者ID:loleksak,项目名称:eail-its,代码行数:35,代码来源:dayselector.c
示例8: test_XIQueryDevice
static void test_XIQueryDevice(void)
{
int i;
xXIQueryDeviceReq request;
struct test_data data;
reply_handler = reply_XIQueryDevice;
userdata = &data;
request_init(&request, XIQueryDevice);
printf("Testing XIAllDevices.\n");
request_XIQueryDevice(&data, XIAllDevices, Success);
printf("Testing XIAllMasterDevices.\n");
request_XIQueryDevice(&data, XIAllMasterDevices, Success);
printf("Testing existing device ids.\n");
for (i = 2; i < 6; i++)
request_XIQueryDevice(&data, i, Success);
printf("Testing non-existing device ids.\n");
for (i = 6; i <= 0xFFFF; i++)
request_XIQueryDevice(&data, i, BadDevice);
reply_handler = NULL;
}
开发者ID:4eremuxa,项目名称:xserver,代码行数:27,代码来源:protocol-xiquerydevice.c
示例9: afsocket_sd_process_connection
static gboolean
afsocket_sd_process_connection(AFSocketSourceDriver *self, GSockAddr *client_addr, GSockAddr *local_addr, gint fd)
{
gchar buf[MAX_SOCKADDR_STRING], buf2[MAX_SOCKADDR_STRING];
#if SYSLOG_NG_ENABLE_TCP_WRAPPER
if (client_addr && (client_addr->sa.sa_family == AF_INET
#if SYSLOG_NG_ENABLE_IPV6
|| client_addr->sa.sa_family == AF_INET6
#endif
))
{
struct request_info req;
request_init(&req, RQ_DAEMON, "syslog-ng", RQ_FILE, fd, 0);
fromhost(&req);
if (hosts_access(&req) == 0)
{
msg_error("Syslog connection rejected by tcpd",
evt_tag_str("client", g_sockaddr_format(client_addr, buf, sizeof(buf), GSA_FULL)),
evt_tag_str("local", g_sockaddr_format(local_addr, buf2, sizeof(buf2), GSA_FULL)),
NULL);
return FALSE;
}
}
#endif
if (self->num_connections >= self->max_connections)
{
msg_error("Number of allowed concurrent connections reached, rejecting connection",
evt_tag_str("client", g_sockaddr_format(client_addr, buf, sizeof(buf), GSA_FULL)),
evt_tag_str("local", g_sockaddr_format(local_addr, buf2, sizeof(buf2), GSA_FULL)),
evt_tag_int("max", self->max_connections),
NULL);
return FALSE;
}
else
{
AFSocketSourceConnection *conn;
conn = afsocket_sc_new(client_addr, fd, self->super.super.super.cfg);
afsocket_sc_set_owner(conn, self);
if (log_pipe_init(&conn->super))
{
afsocket_sd_add_connection(self, conn);
self->num_connections++;
log_pipe_append(&conn->super, &self->super.super.super);
}
else
{
log_pipe_unref(&conn->super);
return FALSE;
}
}
return TRUE;
}
开发者ID:jbfuzier,项目名称:syslog-ng,代码行数:57,代码来源:afsocket-source.c
示例10: cs_parse_request
cs_request_t cs_parse_request(char *buf)
{
cs_request_t req;
request_init(&req);
if (buf == NULL) {
E("parameter error.");
return req;
}
char *buf_copy = strdup(buf);
if (buf_copy == NULL) {
E("strncup() failed.");
return req;
}
char *str = buf_copy;
char *token = NULL;
char *saveptr = NULL;
int i = 0;
while (1) {
token = strtok_r(str, ":", &saveptr);
if (token == NULL)
break;
switch (i) {
case 0:
req.req_type = atoi(token);
break;
case 1:
req.name = strdup(token);
break;
case 2:
req.passwd = strdup(token);
break;
case 3:
req.buddy_name = strdup(token);
break;
case 4:
req.content = strdup(token);
break;
case 5:
req.datetime = strdup(token);
break;
default:
DD(i);
break;
}
str = NULL;
i++;
}
//request_dump(&req);
cs_free(&buf_copy);
return req;
}
开发者ID:jesse2013,项目名称:cs,代码行数:57,代码来源:cs_sqlite.c
示例11: do_server_request
static void
do_server_request(struct server *sv, int connfd)
{
int ret;
struct request *rq;
struct file_data *data;
data = file_data_init();
rq = request_init(connfd, data);
if (!rq) {
file_data_free(data);
return;
}
if(cache_active ==1){
pthread_mutex_lock( &conditionMutex);
struct hash_node *cache_stored;
cache_stored= cache_lookup(data->file_name);
if(cache_stored!=NULL){ // check if it populated in the cache{
data->file_buf = Malloc(cache_stored->data->file_size);
strncpy(data->file_buf, cache_stored->data->file_buf, cache_stored->data->file_size);
data->file_size =cache_stored->data->file_size;
}
else{
/* reads file,
* fills data->file_buf with the file contents,
* data->file_size with file size. */
pthread_mutex_unlock( &conditionMutex );
ret = request_readfile(rq);
pthread_mutex_lock( &conditionMutex );
// need to renew the cache
if(data->file_size<max_cache){
if(data->file_size <=(max_cache-cache_current_size) ){
cache_insert(data);
}
else{
cache_evict(data->file_size);
cache_insert(data);
}
}
}
pthread_mutex_unlock( &conditionMutex );
}
else{
ret = request_readfile(rq);
if (!ret)
goto out;
}
/* sends file to client */
request_sendfile(rq);
out:
request_destroy(rq);
file_data_free(data);
}
开发者ID:miki2112,项目名称:multi_threaded_web_server,代码行数:57,代码来源:server_thread.c
示例12: check_access
int
check_access(SVCXPRT *xprt, rpcproc_t proc, rpcprog_t prog, unsigned int rpcbvers)
{
struct netbuf *caller = svc_getrpccaller(xprt);
struct sockaddr *addr = (struct sockaddr *)caller->buf;
#ifdef LIBWRAP
struct request_info req;
#endif
/*
* The older PMAP_* equivalents have the same numbers, so
* they are accounted for here as well.
*/
switch (proc) {
case RPCBPROC_SET:
case RPCBPROC_UNSET:
if (!insecure && !is_loopback(caller)) {
#ifdef RPCBIND_DEBUG
if (debugging)
fprintf(stderr, " declined (non-loopback sender) \n");
#endif
if (verboselog)
logit(log_severity, addr, proc, prog,
" declined (non-loopback sender)");
return 0;
}
break;
case RPCBPROC_GETADDR:
case RPCBPROC_CALLIT:
case RPCBPROC_INDIRECT:
case RPCBPROC_DUMP:
case RPCBPROC_GETTIME:
case RPCBPROC_UADDR2TADDR:
case RPCBPROC_TADDR2UADDR:
case RPCBPROC_GETVERSADDR:
case RPCBPROC_GETADDRLIST:
case RPCBPROC_GETSTAT:
default:
break;
}
#ifdef LIBWRAP
if (addr->sa_family == AF_LOCAL)
return 1;
request_init(&req, RQ_DAEMON, "rpcbind", RQ_CLIENT_SIN, addr, 0);
sock_methods(&req);
if(!hosts_access(&req)) {
logit(deny_severity, addr, proc, prog, ": request from unauthorized host");
return 0;
}
#endif
if (verboselog)
logit(log_severity, addr, proc, prog, "");
return 1;
}
开发者ID:junxzm1990,项目名称:rpcbind,代码行数:56,代码来源:security.c
示例13: test_XIQueryPointer
static void test_XIQueryPointer(void)
{
int i;
xXIQueryPointerReq request;
memset(&request, 0, sizeof(request));
request_init(&request, XIQueryPointer);
reply_handler = reply_XIQueryPointer;
client_request = init_client(request.length, &request);
request.deviceid = XIAllDevices;
request_XIQueryPointer(&client_request, &request, BadDevice);
request.deviceid = XIAllMasterDevices;
request_XIQueryPointer(&client_request, &request, BadDevice);
request.win = root.drawable.id;
test_data.win = &root;
test_data.dev = devices.vcp;
request.deviceid = devices.vcp->id;
request_XIQueryPointer(&client_request, &request, Success);
request.deviceid = devices.vck->id;
request_XIQueryPointer(&client_request, &request, BadDevice);
request.deviceid = devices.mouse->id;
request_XIQueryPointer(&client_request, &request, BadDevice);
request.deviceid = devices.kbd->id;
request_XIQueryPointer(&client_request, &request, BadDevice);
test_data.dev = devices.mouse;
devices.mouse->u.master = NULL; /* Float, kind-of */
request.deviceid = devices.mouse->id;
request_XIQueryPointer(&client_request, &request, Success);
for (i = devices.kbd->id + 1; i <= 0xFFFF; i++)
{
request.deviceid = i;
request_XIQueryPointer(&client_request, &request, BadDevice);
}
request.win = window.drawable.id;
test_data.dev = devices.vcp;
test_data.win = &window;
request.deviceid = devices.vcp->id;
request_XIQueryPointer(&client_request, &request, Success);
test_data.dev = devices.mouse;
request.deviceid = devices.mouse->id;
request_XIQueryPointer(&client_request, &request, Success);
}
开发者ID:Agnarr,项目名称:xserver,代码行数:54,代码来源:protocol-xiquerypointer.c
示例14: peer_ok
int peer_ok(char *prog, int sd)
{
struct request_info request;
request_init(&request, RQ_DAEMON, prog, RQ_FILE, sd, 0);
fromhost(&request);
if (!hosts_access(&request))
return 0;
else
return 1;
}
开发者ID:BwRy,项目名称:tgcd,代码行数:11,代码来源:utils.c
示例15: callback
static void callback(pa_mainloop_api *mainloop, pa_io_event *e, int fd, pa_io_event_flags_t f, void *userdata) {
pa_socket_server *s = userdata;
pa_iochannel *io;
int nfd;
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(s->mainloop == mainloop);
pa_assert(s->io_event == e);
pa_assert(e);
pa_assert(fd >= 0);
pa_assert(fd == s->fd);
pa_socket_server_ref(s);
if ((nfd = pa_accept_cloexec(fd, NULL, NULL)) < 0) {
pa_log("accept(): %s", pa_cstrerror(errno));
goto finish;
}
if (!s->on_connection) {
pa_close(nfd);
goto finish;
}
#ifdef HAVE_LIBWRAP
if (s->tcpwrap_service) {
struct request_info req;
request_init(&req, RQ_DAEMON, s->tcpwrap_service, RQ_FILE, nfd, NULL);
fromhost(&req);
if (!hosts_access(&req)) {
pa_log_warn("TCP connection refused by tcpwrap.");
pa_close(nfd);
goto finish;
}
pa_log_info("TCP connection accepted by tcpwrap.");
}
#endif
/* There should be a check for socket type here */
if (s->type == SOCKET_SERVER_IPV4)
pa_make_tcp_socket_low_delay(fd);
else
pa_make_socket_low_delay(fd);
pa_assert_se(io = pa_iochannel_new(s->mainloop, nfd, nfd));
s->on_connection(s, io, s->userdata);
finish:
pa_socket_server_unref(s);
}
开发者ID:BYSTROSTREL,项目名称:pulseaudio,代码行数:54,代码来源:socket-server.c
示例16: accept_handler
int accept_handler(http_conf *g, http_connect_t *con, struct epoll_event *ev)
{
con->in = (request *)request_init(con->p);
con->out = (response *)request_init(con->p);
read_header(con);
parse_header(con);
epoll_edit_fd(g->epfd, ev, EPOLL_W);
epoll_del_fd(g->epfd, ev);
if(con->in->http_method == _PUT) {
open_write_file(con);
con->next_handle = write_file_content;
}
/*close(con->fd);
pool_destroy(con->p);*/
return 0;
}
开发者ID:wming3,项目名称:devSync,代码行数:21,代码来源:http_request.c
示例17: httpd_listen_in_event
static void
httpd_listen_in_event(int fd, const struct sockaddr *address,
size_t address_length, G_GNUC_UNUSED int uid, void *ctx)
{
struct httpd_output *httpd = ctx;
/* the listener socket has become readable - a client has
connected */
#ifdef HAVE_LIBWRAP
if (address->sa_family != AF_UNIX) {
char *hostaddr = sockaddr_to_string(address, address_length, NULL);
const char *progname = g_get_prgname();
struct request_info req;
request_init(&req, RQ_FILE, fd, RQ_DAEMON, progname, 0);
fromhost(&req);
if (!hosts_access(&req)) {
/* tcp wrappers says no */
g_warning("libwrap refused connection (libwrap=%s) from %s",
progname, hostaddr);
g_free(hostaddr);
close_socket(fd);
g_mutex_unlock(httpd->mutex);
return;
}
g_free(hostaddr);
}
#else
(void)address;
(void)address_length;
#endif /* HAVE_WRAP */
g_mutex_lock(httpd->mutex);
if (fd >= 0) {
/* can we allow additional client */
if (httpd->open &&
(httpd->clients_max == 0 ||
httpd->clients_cnt < httpd->clients_max))
httpd_client_add(httpd, fd);
else
close_socket(fd);
} else if (fd < 0 && errno != EINTR) {
g_warning("accept() failed: %s", g_strerror(errno));
}
g_mutex_unlock(httpd->mutex);
}
开发者ID:Acidburn0zzz,项目名称:mpd,代码行数:52,代码来源:httpd_output_plugin.c
示例18: tcpd_auth
static int tcpd_auth(int connfd)
{
struct request_info request;
int rc;
request_init(&request, RQ_DAEMON, PROGNAME, RQ_FILE, connfd, 0);
fromhost(&request);
rc = hosts_access(&request);
if (rc == 0)
return -1;
return 0;
}
开发者ID:AD5GB,项目名称:kernel_n5_3.10-experimental,代码行数:13,代码来源:usbipd.c
示例19: auth_libwrap
static int auth_libwrap(CLI *c) {
#ifdef USE_LIBWRAP
struct request_info request;
int fd[2];
int result=0; /* deny by default */
if(pipe(fd)<0) {
ioerror("pipe");
return -1;
}
if(alloc_fd(fd[0]) || alloc_fd(fd[1]))
return -1;
switch(fork()) {
case -1: /* error */
close(fd[0]);
close(fd[1]);
ioerror("fork");
return -1;
case 0: /* child */
close(fd[0]); /* read side */
request_init(&request,
RQ_DAEMON, c->opt->servname, RQ_FILE, c->local_rfd.fd, 0);
fromhost(&request);
result=hosts_access(&request);
write_blocking(c, fd[1], (u8 *)&result, sizeof(result));
/* ignore the returned error */
close(fd[1]); /* write side */
_exit(0);
default: /* parent */
close(fd[1]); /* write side */
read_blocking(c, fd[0], (u8 *)&result, sizeof(result));
/* ignore the returned error */
close(fd[0]); /* read side */
/* no need to wait() for zombies here:
* - in UCONTEXT/PTHREAD mode they're removed using the signal pipe
* - in FORK mode they're removed with the client process */
}
if(!result) {
s_log(LOG_WARNING, "Connection from %s REFUSED by libwrap",
c->accepting_address);
s_log(LOG_DEBUG, "See hosts_access(5) manual for details");
return -1; /* FAILED */
}
s_log(LOG_DEBUG, "Connection from %s permitted by libwrap",
c->accepting_address);
#endif
return 0; /* OK */
}
开发者ID:niubl,项目名称:camera_project,代码行数:49,代码来源:client.old.c
示例20: tcpwrap_client_handle
static void tcpwrap_client_handle(struct tcpwrap_client *client, int check_fd,
const char *daemon_name)
{
struct request_info request;
request_init(&request, RQ_DAEMON, daemon_name,
RQ_FILE, check_fd, 0);
fromhost(&request);
if (!hosts_access(&request))
(void)write_full(client->fd, "0\n", 2);
else
(void)write_full(client->fd, "1\n", 2);
exit(0);
}
开发者ID:Raffprta,项目名称:core,代码行数:15,代码来源:tcpwrap.c
注:本文中的request_init函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论