Sha256: 11b2196cd5e478f684f2b4fad44b6117b87cca32e141d3faf88c20d759f87558

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

#pragma once

#include "RhoStd.h"
#include "IRhoThreadImpl.h"
#include "AutoPointer.h"

namespace rho {
namespace common {

struct IRhoClassFactory;
class CRhoThread : public IRhoRunnable
{
    CAutoPtr<IRhoThreadImpl> m_pImpl;
    static const int TS_NONE = 0;
    static const int TS_WAIT = 1;
    static const int TS_STOPPING = 2;
    static const int TS_RUNNING = 4;

    int m_nState;
public:

    CRhoThread(IRhoClassFactory* factory);
    virtual ~CRhoThread(void){};

    virtual void start(EPriority ePriority);
    virtual void stop(unsigned int nTimeoutToKill){ m_nState |= TS_STOPPING; m_pImpl->stop(nTimeoutToKill); m_nState &= ~TS_STOPPING; }
    virtual void wait(unsigned int nTimeout){ m_nState |= TS_WAIT; m_pImpl->wait(nTimeout); m_nState &= ~TS_WAIT; }
    virtual void stopWait(){ if (isWaiting()) m_pImpl->stopWait(); }
    virtual void sleep(unsigned int nTimeout){ m_pImpl->sleep(nTimeout); }
    virtual void run() = 0;
    virtual void runObject()
    {
        run();
        m_nState = TS_NONE;
    }

    boolean isStopping(){return (m_nState&TS_STOPPING) != 0;}
    boolean isWaiting(){return (m_nState&TS_WAIT) != 0;}
    boolean isRunning(){return (m_nState&TS_RUNNING) != 0;}

};

}
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rhodes-2.0.3 platform/shared/common/RhoThread.h