#include < memory>
#include < string>
#include < iostream>
#include < uvw/loop.h>
#include < uvw/tcp.h>
#include < uvw/timer.h>
int main () {
std::shared_ptr<uvw::Loop> loop (uvw::Loop::getDefault ());
auto tcp = loop->resource <uvw::TCPHandle>();
tcp->once <uvw::ConnectEvent>([](auto & evt, auto & handle) -> void {
std::cout << " ConnectEvent" << std::endl;
handle.read ();
});
tcp->on <uvw::ErrorEvent>([](auto & evt, auto & handle) -> void {
std::cout << " ErrorEvent " << evt.what () << " : " << evt.name () << std::endl;
});
tcp->once <uvw::CloseEvent>([](auto & evt, auto & handle) -> void {
std::cout << " CloseEvent " << std::endl;
});
tcp->once <uvw::EndEvent>([](auto & evt, auto & handle) -> void {
std::cout << " EndEvent " << std::endl;
handle.close ();
});
tcp->on <uvw::DataEvent>([](auto & evt, auto & handle) -> void {
std::cout << " DataEvent " << evt.length << std::endl;
});
tcp->on <uvw::WriteEvent>([](auto & evt, auto & handle) -> void {
std::cout << " WriteEvent " << std::endl;
});
tcp->connect (" 127.0.0.1" , 1234 );
auto timer = loop->resource <uvw::TimerHandle>();
timer->on <uvw::TimerEvent>([tcp](auto & evt, auto & handle) -> void {
std::cout << " TimerEvent " << std::endl;
// tcp->shutdown();
tcp->close ();
handle.close ();
});
timer->start (std::chrono::milliseconds { 2000 }, std::chrono::milliseconds { 0 });
loop->run ();
return 0 ;
}
ErrorEvent connection refused : ECONNREFUSED
<루프 종료>
정상 연결 (EndEvent에서 close 호출 안함)
ConnectEvent
DataEvent 12
DataEvent 8
<서버측에서 연결 끊음>
EndEvent
<루프 종료>
정상 연결 (EndEvent에서 close 호출)
ConnectEvent
DataEvent 12
DataEvent 8
<서버측에서 연결 끊음>
EndEvent
CloseEvent
<루프 종료>
정상 연결 (Client 측에서 shutdown 호출)
ConnectEvent
TimerEvent (shutdown 호출)
EndEvent
CloseEvent
<루프 종료>
정상 연결 (Client 측에서 close 호출)
ConnectEvent
TimerEvent
CloseEvent
<루프 종료>