virtualboolon_heartbeat_error()=0;//heartbeat timed out, return true to continue heartbeat function (useful for UDP)
//if ASCS_DELAY_CLOSE is equal to zero, in this callback, socket guarantee that there's no any other async call associated it,
// include user timers(created by set_timer()) and user async calls(started via post() or defer()), this means you can clean up any resource
// include user timers(created by set_timer()) and user async calls(started via post(), dispatch() or defer()), this means you can clean up any resource
// in this socket except this socket itself, because this socket maybe is being maintained by object_pool.
//otherwise (bigger than zero), socket simply call this callback ASCS_DELAY_CLOSE seconds later after link down, no any guarantees.