Exemplo n.º 1
0
void OfflineService::onAvatarOffline(const Tracing & trace, zsummer::proto4z::ReadStream &rs)
{
    AvatarOffline offline;
    rs >> offline;
    offline.timestamp = getNowTime();
    offline.status = 0;
    offline.id = _offlineNextID++;
    _offlines.insertToDB(offline, std::bind(&OfflineService::onInsert,
        std::static_pointer_cast<OfflineService>(shared_from_this()), _1, _2));
}
Exemplo n.º 2
0
void Service::cleanCallback()
{
    time_t now = getNowTime();
    if (now - _callbackCleanTS > 180)
    {
        _callbackCleanTS = now;
        for (auto iter = _cbs.begin(); iter != _cbs.end();)
        {
            if (now - iter->second.first > 600)
            {
                LOGW("Service::cleanCallback  " << *this << " waiting callback timeout. cbid=" << iter->first << ", call time=" << iter->second.first);
                iter = _cbs.erase(iter);
            }
            else
            {
                iter++;
            }
        }
    }
}
Exemplo n.º 3
0
void HFViewport::onTouchesMoved(const std::vector<Touch*>& pTouches, Event *pEvent)
{
    if (notMove) {
        return;
    }
    CC_ASSERT(this->m_TargetNode);
    if( m_TargetNode == NULL )
        return;
    
    vector<CCTouch*> tmpTouches;
    auto tmpIt = pTouches.begin();
    while (tmpIt != pTouches.end()) {
        auto tmpTouch = dynamic_cast<CCTouch*>(*tmpIt);
        if (mFingerMap.find(tmpTouch->getID()) != mFingerMap.end()) {
            tmpTouches.push_back(tmpTouch);
        }
        ++tmpIt;
    }
    switch(tmpTouches.size())
    {
        case 1:
        {
            CCTouch* ptouch = *tmpTouches.begin();
            if (!m_bTouchMoved && !moveableCheck(ptouch)) {
                return;
            }
            
            CC_BREAK_IF(this->mTouchMode != TouchMode_Scroll);
            
            if (!mForceStopScroll && mMovable) {
                CCPoint newPoint, moveDistance;
                stepScroll(ptouch);
                m_tTouchTime = getNowTime();
                newPoint     = this->convertTouchToNodeSpace(ptouch);
                moveDistance = ccpSub(newPoint, m_tTouchPoint);
                
                if (!mIsProcessingScroll) {
                    m_tTouchPoint = CCPointZero;
                }
                
                float dis = 0.0f;
                dis = sqrtf(moveDistance.x*moveDistance.x + moveDistance.y*moveDistance.y);
                
                if (fabs(convertDistanceFromPointToInch(dis)) < MOVE_INCH )
                {
                    //CCLOG("Invalid movement, distance = [%f, %f], disInch = %f", moveDistance.x, moveDistance.y);
                    return;
                }
                if (!m_bTouchMoved)
                {
                    moveDistance = CCPointZero;
                }
                m_tTouchPoint = newPoint;
                m_bTouchMoved = true;
                m_tScrollDistance = moveDistance;
                
            }
        }
            break;
        case 2:
            CC_BREAK_IF(this->mTouchMode != TouchMode_Zoom);
            do
            {
                CCTouch* objTouch1 = *tmpTouches.begin();
                CCTouch* objTouch2 = tmpTouches.back();
                stepZoom(objTouch1->getLocation(), objTouch2->getLocation());
            }
            while(0);
            break;
        default:
            CCLOG("move:Touch not support with %d fingers", pTouches.size());
            mFingerMap.clear();
    }
}
Exemplo n.º 4
0
void HFViewport::onTouchesEnded(const std::vector<Touch*>& pTouches, Event *pEvent)
{
    CC_ASSERT(this->m_TargetNode);
    if( !m_TargetNode )
        return;
    
    if(pTouches.empty()) {
        return;
    }
    m_doubleClicked = false;
    switch(mFingerMap.size())
    {
        case 1:
        {
            if(isInAutoZoom)
            {
                endZoom();
                isInAutoZoom = false;
                mTouchMode = TouchMode_Scroll;
                
            }
            CCTouch* ptouch =getAnyTouchObject(pTouches);
            CCLOG("touchMoved posX:%f, posY:%f", ptouch->getLocation().x, ptouch->getLocation().y);
            
            if (!moveableCheck(ptouch)) {
                CCLOG("skip in touched moved!");
                // this is a single touch action
                if (mTouchDelegate) {
                    auto singleTouch = this->m_TargetNode->convertToNodeSpace(ptouch->getLocation());
                    CCLOG("fire single touch! x:%f,y:%f",singleTouch.x,singleTouch.y);
                    mTouchDelegate->onSingleTouchEnd(singleTouch);
                    mTouchDelegate->onSingleTouchEnd(ptouch);
                    mFingerMap.clear();
                }
                return;
            }
            
            CC_BREAK_IF(this->mTouchMode != TouchMode_Scroll);
            CCTouch* objTouch = dynamic_cast<CCTouch*>(*pTouches.begin());
            CC_ASSERT(objTouch);
            
            CCLOG(" x:%f,  y:%f", objTouch->getLocation().x, objTouch->getLocation().y);

            if (!mForceStopScroll) { 
                endScroll(objTouch);
            }
            mIsScrollBegan = false;
            long time = getNowTime();
            if (time - m_tTouchTime >= 80) {
                m_tScrollDistance = CCPointZero;
            }
            mFingerMap.clear();
        }
            break;
        case 2:{
            CCLOG("end zoom------- end %d, finger(s)", pTouches.size());
            for (auto touchItem: pTouches) {
                auto touchItemP = dynamic_cast<CCTouch*>(touchItem);
                mFingerMap.erase(touchItemP->getID());
            }
            if (mFingerMap.size()) {
                isInAutoZoom = true;
                mTouchMode = TouchMode_Zoom;
                mIsScrollBegan = false;
            }else
            {
                endZoom();
            }
        }
            break;
        default:
            if(isInAutoZoom)
            {
                endZoom();
                isInAutoZoom = false;
            }
            mIsScrollBegan = false;
            break;
    }
    if (pTouches.size() == 0)
    {
        m_bTouchMoved = false;
    }
}
Exemplo n.º 5
0
ui64 Service::makeCallback(const ServiceCallback &cb)
{
    ui64 cbid = ++_callbackSeq;
    _cbs.insert(std::make_pair(cbid, std::make_pair(getNowTime(), cb)));
    return cbid;
}
Exemplo n.º 6
0
int64_t TimeTick::elapseInMicroseconds() const {
  int64_t nowsec, nowusec;
  getNowTime(nowsec, nowusec);
  int64_t delta = nowsec * kMicrosecondsPerSecond + nowusec - us_;
  return delta;
}