| 1820 | } |
| 1821 | |
| 1822 | void OnSend(const TErrorCode& ec, size_t amount, IHandlingContext&) { |
| 1823 | Y_UNUSED(amount); |
| 1824 | if (ec) { |
| 1825 | OnError(); |
| 1826 | } else { |
| 1827 | ProcessPipeline(); |
| 1828 | } |
| 1829 | |
| 1830 | if (SeenMessageWithoutKeepalive_) { |
| 1831 | TErrorCode shutdown_ec; |
| 1832 | AS_->Shutdown(TTcpSocket::ShutdownBoth, shutdown_ec); |
| 1833 | } |
| 1834 | } |
| 1835 | |
| 1836 | public: |
| 1837 | bool IsCanceled() const noexcept { |