本文整理汇总了C++中curl_multi_setopt函数的典型用法代码示例。如果您正苦于以下问题:C++ curl_multi_setopt函数的具体用法?C++ curl_multi_setopt怎么用?C++ curl_multi_setopt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了curl_multi_setopt函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: php_http_client_curl_event_dtor
static void php_http_client_curl_event_dtor(void **context)
{
php_http_client_curl_event_context_t *ctx = *context;
php_http_client_curl_t *curl;
#if DBG_EVENTS
fprintf(stderr, "D");
#endif
curl = ctx->client->ctx;
curl_multi_setopt(curl->handle->multi, CURLMOPT_SOCKETDATA, NULL);
curl_multi_setopt(curl->handle->multi, CURLMOPT_SOCKETFUNCTION, NULL);
curl_multi_setopt(curl->handle->multi, CURLMOPT_TIMERDATA, NULL);
curl_multi_setopt(curl->handle->multi, CURLMOPT_TIMERFUNCTION, NULL);
if (event_initialized(ctx->timeout) && event_pending(ctx->timeout, EV_TIMEOUT, NULL)) {
event_del(ctx->timeout);
}
efree(ctx->timeout);
event_base_free(ctx->evbase);
efree(ctx);
*context = NULL;
}
开发者ID:m6w6,项目名称:ext-http,代码行数:25,代码来源:php_http_client_curl_event.c
示例2: event_base_new
static void *php_http_client_curl_event_init(php_http_client_t *client)
{
php_http_client_curl_t *curl = client->ctx;
php_http_client_curl_event_context_t *ctx;
struct event_base *evb = event_base_new();
#if DBG_EVENTS
fprintf(stderr, "I");
#endif
if (!evb) {
return NULL;
}
ctx = ecalloc(1, sizeof(*ctx));
ctx->client = client;
ctx->evbase = evb;
ctx->timeout = ecalloc(1, sizeof(struct event));
curl_multi_setopt(curl->handle->multi, CURLMOPT_SOCKETDATA, ctx);
curl_multi_setopt(curl->handle->multi, CURLMOPT_SOCKETFUNCTION, php_http_client_curl_event_socket);
curl_multi_setopt(curl->handle->multi, CURLMOPT_TIMERDATA, ctx);
curl_multi_setopt(curl->handle->multi, CURLMOPT_TIMERFUNCTION, php_http_client_curl_event_timer);
return ctx;
}
开发者ID:m6w6,项目名称:ext-http,代码行数:26,代码来源:php_http_client_curl_event.c
示例3: main
int main(int argc, char **argv)
{
GlobalInfo *g;
CURLMcode rc;
GMainLoop*gmain;
int fd;
GIOChannel* ch;
g=g_malloc0(sizeof(GlobalInfo));
fd=init_fifo();
ch=g_io_channel_unix_new(fd);
g_io_add_watch(ch,G_IO_IN,fifo_cb,g);
gmain=g_main_loop_new(NULL,FALSE);
g->multi = curl_multi_init();
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
curl_multi_setopt(g->multi, CURLMOPT_TIMERFUNCTION, update_timeout_cb);
curl_multi_setopt(g->multi, CURLMOPT_TIMERDATA, g);
/* we don't call any curl_multi_socket*() function yet as we have no handles
added! */
g_main_loop_run(gmain);
curl_multi_cleanup(g->multi);
return 0;
}
开发者ID:Aakanksha,项目名称:c-twitter,代码行数:26,代码来源:ghiper.c
示例4: main
int main(int argc, char **argv) {
int i;
loop = uv_default_loop();
if (curl_global_init(CURL_GLOBAL_ALL)) {
fprintf(stderr, "Could not init cURL\n");
return 1;
}
uv_timer_init(loop, &timeout);
curl_handle = curl_multi_init();
curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
char upstream[128];
memset(upstream,0,128);
snprintf(upstream,128,"%d:%s:%d",i,"upstream",i+1);
add_download(upstream,strlen(upstream));
uv_run(loop, UV_RUN_DEFAULT);
curl_multi_cleanup(curl_handle);
return 0;
}
开发者ID:heysion,项目名称:httppost,代码行数:25,代码来源:main.c
示例5: do_multi_setopt_callable
static PyObject *
do_multi_setopt_callable(CurlMultiObject *self, int option, PyObject *obj)
{
/* We use function types here to make sure that our callback
* definitions exactly match the <curl/multi.h> interface.
*/
const curl_multi_timer_callback t_cb = multi_timer_callback;
const curl_socket_callback s_cb = multi_socket_callback;
switch(option) {
case CURLMOPT_SOCKETFUNCTION:
curl_multi_setopt(self->multi_handle, CURLMOPT_SOCKETFUNCTION, s_cb);
curl_multi_setopt(self->multi_handle, CURLMOPT_SOCKETDATA, self);
Py_INCREF(obj);
self->s_cb = obj;
break;
case CURLMOPT_TIMERFUNCTION:
curl_multi_setopt(self->multi_handle, CURLMOPT_TIMERFUNCTION, t_cb);
curl_multi_setopt(self->multi_handle, CURLMOPT_TIMERDATA, self);
Py_INCREF(obj);
self->t_cb = obj;
break;
default:
PyErr_SetString(PyExc_TypeError, "callables are not supported for this option");
return NULL;
}
Py_RETURN_NONE;
}
开发者ID:Charlesdong,项目名称:pycurl,代码行数:28,代码来源:multi.c
示例6: main
int main(int argc, char **argv)
{
loop = uv_default_loop();
if (argc <= 1)
return 0;
if (curl_global_init(CURL_GLOBAL_ALL)) {
fprintf(stderr, "Could not init cURL\n");
return 1;
}
uv_timer_init(loop, &timeout);
curl_handle = curl_multi_init();
curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
while (argc-- > 1) {
add_download(argv[argc], argc);
}
uv_run(loop, UV_RUN_DEFAULT);
curl_multi_cleanup(curl_handle);
return 0;
}
开发者ID:CarloWood,项目名称:curl,代码行数:26,代码来源:multi-uv.c
示例7: main
int main(int argc, char **argv)
{
GlobalInfo g;
CURLMcode rc;
(void)argc;
(void)argv;
memset(&g, 0, sizeof(GlobalInfo));
g.loop = ev_default_loop(0);
init_fifo(&g);
g.multi = curl_multi_init();
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
g.timer_event.data = &g;
g.fifo_event.data = &g;
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
/* we don't call any curl_multi_socket*() function yet as we have no handles
added! */
ev_loop(g.loop, 0);
curl_multi_cleanup(g.multi);
return 0;
}
开发者ID:1498636925,项目名称:curl,代码行数:28,代码来源:evhiperfifo.c
示例8: main
int main(int argc, char **argv)
{
GlobalInfo g;
(void)argc;
(void)argv;
memset(&g, 0, sizeof(GlobalInfo));
g.evbase = event_base_new();
init_fifo(&g);
g.multi = curl_multi_init();
g.timer_event = evtimer_new(g.evbase, timer_cb, &g);
/* setup the generic multi interface options we want */
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
/* we don't call any curl_multi_socket*() function yet as we have no handles
added! */
event_base_dispatch(g.evbase);
/* this, of course, won't get called since only way to stop this program is
via ctrl-C, but it is here to show how cleanup /would/ be done. */
clean_fifo(&g);
event_free(g.timer_event);
event_base_free(g.evbase);
curl_multi_cleanup(g.multi);
return 0;
}
开发者ID:princejeru10,项目名称:theswissvet.com,代码行数:31,代码来源:hiperfifo.c
示例9: main
int main(int argc, char **argv)
{
GlobalInfo g;
CURLMcode rc;
(void)argc;
(void)argv;
memset(&g, 0, sizeof(GlobalInfo));
g.loop = ev_default_loop(0);
init_fifo(&g);
g.multi = curl_multi_init();
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
g.timer_event.data = &g;
g.fifo_event.data = &g;
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
do
{
rc = curl_multi_socket_all(g.multi, &g.still_running);
} while ( CURLM_CALL_MULTI_PERFORM == rc );
ev_loop(g.loop, 0);
curl_multi_cleanup(g.multi);
return 0;
}
开发者ID:WiseMan787,项目名称:ralink_sdk,代码行数:29,代码来源:evhiperfifo.c
示例10: main
int main(int argc, char **argv)
{
GlobalInfo *g;
CURLMcode rc;
GMainLoop*gmain;
int fd;
GIOChannel* ch;
g=g_malloc0(sizeof(GlobalInfo));
fd=init_fifo();
ch=g_io_channel_unix_new(fd);
g_io_add_watch(ch,G_IO_IN,fifo_cb,g);
gmain=g_main_loop_new(NULL,FALSE);
g->multi = curl_multi_init();
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
curl_multi_setopt(g->multi, CURLMOPT_TIMERFUNCTION, update_timeout_cb);
curl_multi_setopt(g->multi, CURLMOPT_TIMERDATA, g);
do {
rc = curl_multi_socket_all(g->multi, &g->still_running);
} while (CURLM_CALL_MULTI_PERFORM == rc);
g_main_loop_run(gmain);
curl_multi_cleanup(g->multi);
return 0;
}
开发者ID:499940913,项目名称:moon,代码行数:25,代码来源:ghiper.c
示例11: main
int main(int argc, char **argv)
{
GlobalInfo g;
(void)argc;
(void)argv;
memset(&g, 0, sizeof(GlobalInfo));
event_init();
init_fifo(&g);
g.multi = curl_multi_init();
evtimer_set(&g.timer_event, timer_cb, &g);
/* setup the generic multi interface options we want */
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
/* we don't call any curl_multi_socket*() function yet as we have no handles
added! */
event_dispatch();
curl_multi_cleanup(g.multi);
return 0;
}
开发者ID:Aakanksha,项目名称:c-twitter,代码行数:25,代码来源:hiperfifo.c
示例12: main
int main(int argc, char **argv)
{
GlobalInfo g;
CURLMcode rc;
(void)argc;
(void)argv;
memset(&g, 0, sizeof(GlobalInfo));
g.multi = curl_multi_init();
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
new_conn((char *)"www.google.com", &g); /* add a URL */
/* enter io_service run loop */
io_service.run();
curl_multi_cleanup(g.multi);
fprintf(MSG_OUT, "\ndone.\n");
return 0;
}
开发者ID:AVGirl,项目名称:wingup,代码行数:27,代码来源:asiohiper.cpp
示例13: _php_curl_multi_setopt
static int _php_curl_multi_setopt(php_curlm *mh, zend_long option, zval *zvalue, zval *return_value) /* {{{ */
{
CURLMcode error = CURLM_OK;
switch (option) {
#if LIBCURL_VERSION_NUM >= 0x071000 /* 7.16.0 */
case CURLMOPT_PIPELINING:
#endif
#if LIBCURL_VERSION_NUM >= 0x071003 /* 7.16.3 */
case CURLMOPT_MAXCONNECTS:
#endif
#if LIBCURL_VERSION_NUM >= 0x071e00 /* 7.30.0 */
case CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE:
case CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE:
case CURLMOPT_MAX_HOST_CONNECTIONS:
case CURLMOPT_MAX_PIPELINE_LENGTH:
case CURLMOPT_MAX_TOTAL_CONNECTIONS:
#endif
{
zend_long lval = zval_get_long(zvalue);
if (option == CURLMOPT_PIPELINING && (lval & 1)) {
#if LIBCURL_VERSION_NUM >= 0x073e00 /* 7.62.0 */
php_error_docref(NULL, E_WARNING, "CURLPIPE_HTTP1 is no longer supported");
#else
php_error_docref(NULL, E_DEPRECATED, "CURLPIPE_HTTP1 is deprecated");
#endif
}
error = curl_multi_setopt(mh->multi, option, lval);
break;
}
#if LIBCURL_VERSION_NUM > 0x072D00 /* Available since 7.45.0 */
case CURLMOPT_PUSHFUNCTION:
if (mh->handlers->server_push == NULL) {
mh->handlers->server_push = ecalloc(1, sizeof(php_curlm_server_push));
} else if (!Z_ISUNDEF(mh->handlers->server_push->func_name)) {
zval_ptr_dtor(&mh->handlers->server_push->func_name);
mh->handlers->server_push->fci_cache = empty_fcall_info_cache;
}
ZVAL_COPY(&mh->handlers->server_push->func_name, zvalue);
mh->handlers->server_push->method = PHP_CURL_USER;
error = curl_multi_setopt(mh->multi, option, _php_server_push_callback);
if (error != CURLM_OK) {
return 0;
}
error = curl_multi_setopt(mh->multi, CURLMOPT_PUSHDATA, mh);
break;
#endif
default:
php_error_docref(NULL, E_WARNING, "Invalid curl multi configuration option");
error = CURLM_UNKNOWN_OPTION;
break;
}
SAVE_CURLM_ERROR(mh, error);
return error != CURLM_OK;
}
开发者ID:dstogov,项目名称:php-src,代码行数:59,代码来源:multi.c
示例14: init_multi_handler
void init_multi_handler() {
m_handler = curl_multi_init();
if (NULL == m_handler)
throw MyException("can't init curl");
curl_multi_setopt(m_handler, CURLMOPT_MAXCONNECTS, CONNECTIONS_MAX_NUMBER);
curl_multi_setopt(m_handler, CURLMOPT_PIPELINING, 1L);
}
开发者ID:yang-guangliang,项目名称:mobile_crawler,代码行数:8,代码来源:crawler.hpp
示例15: curl_multi_setopt
void CurlPoller::run()
{
curl_multi_setopt(m_curlm, CURLMOPT_TIMERFUNCTION, timer_callback);
curl_multi_setopt(m_curlm, CURLMOPT_TIMERDATA, &m_curlTimeout);
while(!m_bAbort)
pollingCycle(false);
}
开发者ID:LubosD,项目名称:fatrat,代码行数:8,代码来源:CurlPoller.cpp
示例16: events_setup
/*
* events_setup()
*
* Do the multi handle setups that only event-based transfers need.
*/
static void events_setup(struct Curl_multi *multi, struct events *ev)
{
/* timer callback */
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, events_timer);
curl_multi_setopt(multi, CURLMOPT_TIMERDATA, ev);
/* socket callback */
curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, events_socket);
curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, ev);
}
开发者ID:robertop,项目名称:curl,代码行数:15,代码来源:easy.c
示例17: lm_init_io
/**
* Initializes the input/output part of the
* specified metha object
**/
M_CODE
lm_init_io(io_t *io, metha_t *m)
{
io->m = m;
#ifdef WIN32
io->synchronous = 1;
#endif
if (io->synchronous)
return M_OK;
if (!(io->multi_h = curl_multi_init())) {
LM_ERROR(m, "could not create CURL multi interface");
return M_FAILED;
}
if (!(io->share_h = curl_share_init())) {
LM_ERROR(m, "could not create CURL share interface");
return M_ERROR;
}
if (pipe(io->msg_fd) != 0) {
LM_ERROR(m, "pipe() failed: %s", strerror(errno));
return M_FAILED;
}
if (!(io->queue.pos = malloc(QUEUE_INIT_SIZE*sizeof(ioqp_t))))
return M_OUT_OF_MEM;
io->queue.allocsz = QUEUE_INIT_SIZE;
io->queue.size = 0;
io->started = 0;
pthread_mutex_init(&io->queue_mtx, 0);
pthread_rwlock_init(&io->cookies_mtx, 0);
pthread_rwlock_init(&io->dns_mtx, 0);
pthread_rwlock_init(&io->share_mtx, 0);
if (io->cookies)
curl_share_setopt(io->share_h, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt(io->share_h, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
curl_share_setopt(io->share_h, CURLSHOPT_LOCKFUNC, &lm_iothr_lock_shared_cb);
curl_share_setopt(io->share_h, CURLSHOPT_UNLOCKFUNC, &lm_iothr_unlock_shared_cb);
curl_share_setopt(io->share_h, CURLSHOPT_USERDATA, io);
curl_multi_setopt(io->multi_h, CURLMOPT_SOCKETFUNCTION, &lm_iothr_socket_cb);
curl_multi_setopt(io->multi_h, CURLMOPT_SOCKETDATA, io);
curl_multi_setopt(io->multi_h, CURLMOPT_TIMERFUNCTION, &lm_iothr_set_timer_cb);
curl_multi_setopt(io->multi_h, CURLMOPT_TIMERDATA, io);
/*curl_multi_setopt(io->multi_h, CURLMOPT_PIPELINING, 1);*/
return M_OK;
}
开发者ID:nicholaides,项目名称:Methanol-Web-Crawler,代码行数:57,代码来源:io.c
示例18: _io_service
http_client::http_client(boost::asio::io_service& io_service) :
_io_service(io_service),
_timer(_io_service),
_keepalive_timer(_io_service) {
_multi = curl_multi_init();
curl_multi_setopt(_multi, CURLMOPT_SOCKETFUNCTION, _sock_cb);
curl_multi_setopt(_multi, CURLMOPT_SOCKETDATA, this);
curl_multi_setopt(_multi, CURLMOPT_TIMERFUNCTION, _multi_timer_cb);
curl_multi_setopt(_multi, CURLMOPT_TIMERDATA, this);
_keepalive_timer.expires_from_now(boost::chrono::milliseconds(1000));
_keepalive_timer.async_wait(boost::bind(&http_client::keepalivetimer_cb, this, _1));
}
开发者ID:bitbouncer,项目名称:csi-http-client,代码行数:12,代码来源:http_client.cpp
示例19: socket_factory_
ConnectionManager::ConnectionManager(const std::shared_ptr<SocketFactory>& socket_factory,
const std::shared_ptr<SocketWatcher>& socket_watcher,
const std::shared_ptr<Timer>& timer) :
socket_factory_(socket_factory),
socket_watcher_(socket_watcher),
timer_(timer) {
multi_handle_ = curl_multi_init();
curl_multi_setopt(multi_handle_, CURLMOPT_TIMERFUNCTION, CurlTimerCallback);
curl_multi_setopt(multi_handle_, CURLMOPT_TIMERDATA, this);
curl_multi_setopt(multi_handle_, CURLMOPT_SOCKETFUNCTION, CurlSocketCallback);
curl_multi_setopt(multi_handle_, CURLMOPT_SOCKETDATA, this);
}
开发者ID:Zplutor,项目名称:curlion,代码行数:13,代码来源:connection_manager.cpp
示例20: debug_curl_multi_setopt
CURLMcode debug_curl_multi_setopt(CURLM* multi_handle, CURLMoption option, ...)
{
CURLMcode ret = CURLM_UNKNOWN_OPTION; // Suppress compiler warning.
va_list ap;
union param_type {
long along;
void* ptr;
curl_off_t offset;
} param;
unsigned int param_type = (option / 10000) * 10000;
va_start(ap, option);
switch (param_type)
{
case CURLOPTTYPE_LONG:
param.along = va_arg(ap, long);
break;
case CURLOPTTYPE_OBJECTPOINT:
case CURLOPTTYPE_FUNCTIONPOINT:
param.ptr = va_arg(ap, void*);
break;
case CURLOPTTYPE_OFF_T:
param.offset = va_arg(ap, curl_off_t);
break;
default:
std::cerr << "Extracting param_type failed; option = " << option << "; param_type = " << param_type << std::endl;
std::exit(EXIT_FAILURE);
}
va_end(ap);
switch (param_type)
{
case CURLOPTTYPE_LONG:
ret = curl_multi_setopt(multi_handle, option, param.along);
Dout(dc::curl, "curl_easy_setopt(" << (AICURLM*)multi_handle << ", " << option << ", " << param.along << "L) = " << ret);
break;
case CURLOPTTYPE_OBJECTPOINT:
ret = curl_multi_setopt(multi_handle, option, param.ptr);
Dout(dc::curl, "curl_easy_setopt(" << (AICURLM*)multi_handle << ", " << option << ", (object*)0x" << std::hex << (size_t)param.ptr << std::dec << ") = " << ret);
break;
case CURLOPTTYPE_FUNCTIONPOINT:
ret = curl_multi_setopt(multi_handle, option, param.ptr);
Dout(dc::curl, "curl_easy_setopt(" << (AICURLM*)multi_handle << ", " << option << ", (function*)0x" << std::hex << (size_t)param.ptr << std::dec << ") = " << ret);
break;
case CURLOPTTYPE_OFF_T:
ret = curl_multi_setopt(multi_handle, option, param.offset);
Dout(dc::curl, "curl_easy_setopt(" << (AICURLM*)multi_handle << ", " << option << ", (curl_off_t)" << param.offset << ") = " << ret);
break;
default: // Stop compiler complaining about no default.
break;
}
return ret;
}
开发者ID:Nekrofage,项目名称:SingularityViewer,代码行数:51,代码来源:debug_libcurl.cpp
注:本文中的curl_multi_setopt函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论