MCPcopy Create free account
hub / github.com/F-Stack/f-stack / OutputNotify

Method OutputNotify

adapter/micro_thread/mt_net.cpp:1396–1443  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1394}
1395
1396int CSockLink::OutputNotify()
1397{
1398 int32_t ret = 0;
1399
1400 this->_last_access = mt_time_ms();
1401
1402 if (_state & LINK_CONNECTING)
1403 {
1404 _state &= ~LINK_CONNECTING;
1405 _state |= LINK_CONNECTED;
1406
1407 CNetHandler* item = NULL;
1408 CNetHandler* tmp = NULL;
1409 TAILQ_FOREACH_SAFE(item, &_wait_connect, _link_entry, tmp)
1410 {
1411 NotifyThread(item, 0);
1412 item->SwitchToIdle();
1413 }
1414 }
1415
1416 if (_proto_type == NET_PROTO_UDP)
1417 {
1418 ret = SendCacheUdp(NULL, 0);
1419 }
1420 else
1421 {
1422 ret = SendCacheTcp(NULL, 0);
1423 }
1424
1425 if (ret < 0)
1426 {
1427 MTLOG_ERROR("Send on link failed, close it, ret %d[%m]", ret);
1428 _errno = RC_SEND_FAIL;
1429 this->Destroy();
1430 return ret;
1431 }
1432
1433 if (TAILQ_EMPTY(&_wait_send))
1434 {
1435 this->DisableOutput();
1436 if (!MtFrame::Instance()->KqueueCtrlDel(_fd, KQ_EVENT_WRITE))
1437 {
1438 MTLOG_ERROR("socket epoll mng failed[%m], wait timeout");
1439 }
1440 }
1441
1442 return 0;
1443}
1444
1445int CSockLink::HangupNotify()
1446{

Callers

nothing calls this directly

Calls 5

DestroyMethod · 0.95
mt_time_msFunction · 0.85
SwitchToIdleMethod · 0.80
DisableOutputMethod · 0.80
KqueueCtrlDelMethod · 0.80

Tested by

no test coverage detected