
EventBufferEvent::setCallbacks 함수를 사용하여 callback 함수를 설정할 때,
- readable callback 함수는 데이터가 읽을 수 있는 상태일 때 호출됩니다.
- writable callback 함수는 데이터가 쓸 수 있는 상태일 때 호출됩니다.
- error callback 함수는 오류가 발생했을 때 호출됩니다.
- drain callback 함수는 버퍼가 비어 있을 때 호출됩니다.
이 callback 함수들은 순서대로 호출됩니다.
EventBufferEvent 객체의 상태는 다음과 같습니다.
- readable: 데이터가 읽을 수 있는 상태
- writable: 데이터가 쓸 수 있는 상태
- error: 오류가 발생한 상태
- drain: 버퍼가 비어 있는 상태
callback 함수를 설정하는 방법은 다음과 같습니다.
- EventBufferEvent::setCallbacks 함수를 사용하여 callback 함수를 설정할 수 있습니다.
- 함수의 매개변수는 readable, writable, error, drain callback 함수를 설정할 때 사용됩니다.
callback 함수를 설정할 때 사용하는 매개변수는 다음과 같습니다.
- readable: readable callback 함수
- writable: writable callback 함수
- error: error callback 함수
- drain: drain callback 함수
callback 함수를 설정하고 나면, EventBufferEvent 객체의 상태가 다음과 같이 변합니다.
- readable callback 함수가 설정되면, EventBufferEvent 객체의 상태는 readable 상태가 됩니다.
- writable callback 함수가 설정되면, EventBufferEvent 객체의 상태는 writable 상태가 됩니다.
- error callback 함수가 설정되면, EventBufferEvent 객체의 상태는 error 상태가 됩니다.
- drain callback 함수가 설정되면, EventBufferEvent 객체의 상태는 drain 상태가 됩니다.
callback 함수를 설정하는 예제는 다음과 같습니다.
```cpp
#include
#include
#include
#include
int main() {
// EventBufferEvent 객체 생성
struct event_base* base = event_base_new();
struct event* ev = event_new(base, -1, 0, NULL, NULL);
struct event_buffer* buf = event_buffer_new(NULL, NULL, NULL, NULL, NULL);
// callback 함수 설정
event_buffer_set_readcb(buf, readable_callback, NULL);
event_buffer_set_writecb(buf, writable_callback, NULL);
event_buffer_set_errorcb(buf, error_callback, NULL);
event_buffer_set_draincb(buf, drain_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// EventBufferEvent 객체 사용
event_add(ev, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 삭제
event_buffer_set_readcb(buf, NULL, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 다시 설정
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 다시 설정
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 삭제
event_buffer_set_readcb(buf, NULL, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 삭제
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, NULL, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하고 재정의
event_buffer_set_readcb(buf, new_readable_callback, NULL);
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: " << event_buffer_get_status(buf) << std::endl;
// callback 함수 재정의하지 않고 재정의
event_buffer_set_readcb(buf, readable_callback, NULL);
// EventBufferEvent 객체의 상태 확인
std::cout << "EventBufferEvent 객체의 상태: "
2025-05-17 03:43