public function flush()
    {
        if (!$this->write_ || TStringFuncFactory::create()->strlen($this->wBuf_) == 0) {
            return $this->transport_->flush();
        }

        $out = pack('N', TStringFuncFactory::create()->strlen($this->wBuf_));
        $out .= $this->wBuf_;

        // Note that we clear the internal wBuf_ prior to the underlying write
        // to ensure we're in a sane state (i.e. internal buffer cleaned)
        // if the underlying write throws up an exception
        $this->wBuf_ = '';
        $this->transport_->write($out);
        $this->transport_->flush();
    }