Class: Curl::Multi

Inherits:
Object
  • Object
show all
Defined in:
ext/multi.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'ext/multi.c', line 108

static VALUE rb_curl_multi_initialize(int argc, VALUE *argv, VALUE self) {
	rb_curl_multi *rb_cmh;

	Data_Get_Struct(self, rb_curl_multi, rb_cmh);

	rb_cmh->cmh = curl_multi_init();
	if (!rb_cmh->cmh) {
		rb_raise(rb_eRuntimeError, "Failed to initialize multi handle");
	}

	rb_cmh->self = self;

	return self;
}

Class Method Details

.strerror(errornum) ⇒ Object



8
9
10
11
12
13
14
# File 'ext/multi.c', line 8

static VALUE rb_curl_multi_strerror(VALUE self, VALUE errornum) {
	const char *error_str;

	error_str = curl_multi_strerror(NUM2LONG(errornum));

	return rb_str_new2(error_str);
}

Instance Method Details

#add_handleObject

#cleanupObject

#performObject



84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'ext/multi.c', line 84

static VALUE rb_curl_multi_perform(VALUE self) {
	rb_curl_multi *rb_cmh;
	int running_handles;

	Data_Get_Struct(self, rb_curl_multi, rb_cmh);

	do {
		curl_multi_perform(rb_cmh->cmh, &running_handles);

		curl_multi_wait(rb_cmh->cmh, NULL, 0, 100000, NULL);
	} while (running_handles);

	return LONG2NUM(0);
}

#remove_handleObject

#setopt(opt, val) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'ext/multi.c', line 65

static VALUE rb_curl_multi_setopt(VALUE self, VALUE opt, VALUE val) {
	CURLMcode cm_err_code;
	rb_curl_multi *rb_cmh;
	long option = NUM2LONG(opt);

	Data_Get_Struct(self, rb_curl_multi, rb_cmh);

	switch (option) {
		case CURLMOPT_MAXCONNECTS:
		case CURLMOPT_PIPELINING:
			cm_err_code = curl_multi_setopt(rb_cmh->cmh, option, NUM2LONG(val));
			break;
		default:
			rb_raise(rb_eTypeError, "Unsupported option.");
	}

	return LONG2NUM(cm_err_code);
}