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)); }
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++; } } } }
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(); } }
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; } }
ui64 Service::makeCallback(const ServiceCallback &cb) { ui64 cbid = ++_callbackSeq; _cbs.insert(std::make_pair(cbid, std::make_pair(getNowTime(), cb))); return cbid; }
int64_t TimeTick::elapseInMicroseconds() const { int64_t nowsec, nowusec; getNowTime(nowsec, nowusec); int64_t delta = nowsec * kMicrosecondsPerSecond + nowusec - us_; return delta; }