int SpdyStream::onWrite()
{
    LS_DBG_L(this, "SpdyStream::onWrite()");
    if (m_pSpdyConn->isOutBufFull())
        return 0;
    if (m_iWindowOut <= 0)
        return 0;
    setFlag(HIO_FLAG_BUFF_FULL, 0);

    if (isWantWrite())
        getHandler()->onWriteEx();
    if (isWantWrite())
        m_pSpdyConn->continueWrite();
    return 0;
}
Esempio n. 2
0
int DummySpdyConnStream::eventLoop()
{
    int lenInBuff = 0;
    int length;

    while( m_running )
    {
        if(m_InputBuff.empty())
        {
            length = m_Datalen - lenInBuff;
            if(length == 0)
            {
                m_running = 0;
                continue;
            }
            if(length >80)
                length = 80;
            m_InputBuff.append(m_pDatabuff + lenInBuff, length);
            lenInBuff += length;

        }
        if ( isWantRead() && !m_InputBuff.empty())
        {
            getHandler()->onReadEx();
        }
        if ( isWantWrite() )
            getHandler()->onWriteEx();
        
    }
    return 0;    
}
int SpdyStream::onInitConnected()
{
    getHandler()->onInitConnected();
    if (isWantRead())
        getHandler()->onReadEx();
    if (isWantWrite())
        getHandler()->onWriteEx();
    return 0;
}
Esempio n. 4
0
int SpdyStream::onInitConnected()
{
    getHandler()->onInitConnected();
    if (isWantRead())
        getHandler()->onReadEx();
    if (isWantWrite())
        if (next() == NULL)
            m_pSpdyConn->add2PriorityQue(this);
    return 0;
}
int SpdyStream::adjWindowOut(int32_t n)
{
    if (isFlowCtrl())
    {
        m_iWindowOut += n;
        LS_DBG_L(this, "Stream WINDOW_UPDATE: %d, window size: %d ",
                 n, m_iWindowOut);
        if (m_iWindowOut < 0)
        {
            //window overflow
            return LS_FAIL;
        }
        else if (isWantWrite())
            continueWrite();
    }
    return 0;
}