轮训添加 调用线程处理

This commit is contained in:
yangyakun
2023-07-04 18:30:17 +08:00
parent e1e978625e
commit 59c346536e
5 changed files with 42 additions and 23 deletions

View File

@@ -30,7 +30,7 @@ import com.mogo.och.common.module.manager.loopmanager.LoopInfo
import com.mogo.och.bus.passenger.bean.response.*
import com.mogo.och.bus.passenger.callback.*
import com.mogo.och.bus.passenger.constant.CharterPassengerConst
import com.mogo.och.common.module.manager.loopmanager.BusPassengerModelLoopManager
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
import com.mogo.och.bus.passenger.utils.VoiceFocusManager
@@ -186,12 +186,12 @@ object CharterPassengerModel {
// 2 、打开空调暖风机灯设置页面
// 3、车控页面、
// 4、打开选择线路页面
BusPassengerModelLoopManager.removeLoopFunction(TAGLOGIN)
BizLoopManager.removeLoopFunction(TAGLOGIN)
CallerLogger.d(M_BUS_P + TAG, "结束登录状态轮询")
// 启动订单轮
startOrderLoop()
} else {
BusPassengerModelLoopManager.setLoopFunction(
BizLoopManager.setLoopFunction(
TAGLOGIN,
LoopInfo(3, ::queryLoginStatus)
)
@@ -337,7 +337,7 @@ object CharterPassengerModel {
* 启动订单轮训
*/
private fun startOrderLoop() {
BusPassengerModelLoopManager.setLoopFunction(
BizLoopManager.setLoopFunction(
TAGORDER,
LoopInfo(3, ::queryOrder)
)
@@ -348,7 +348,7 @@ object CharterPassengerModel {
* 启动订单轮训
*/
private fun endOrderLoop() {
BusPassengerModelLoopManager.removeLoopFunction(TAGORDER)
BizLoopManager.removeLoopFunction(TAGORDER)
CallerLogger.d(M_BUS_P + TAG, "结束订单轮询")
}
@@ -489,7 +489,7 @@ object CharterPassengerModel {
* 启动订单轮训
*/
private fun startCarStatusLoop() {
BusPassengerModelLoopManager.setLoopFunction(TAGCARSTATUS, LoopInfo(3, ::queryCarStatus))
BizLoopManager.setLoopFunction(TAGCARSTATUS, LoopInfo(3, ::queryCarStatus))
CallerLogger.d(M_BUS_P + TAG, "启动车态轮询")
}
@@ -497,7 +497,7 @@ object CharterPassengerModel {
* 启动订单轮训
*/
private fun endCarStatusLoop() {
BusPassengerModelLoopManager.removeLoopFunction(TAGCARSTATUS)
BizLoopManager.removeLoopFunction(TAGCARSTATUS)
CallerLogger.d(M_BUS_P + TAG, "结束车态轮询")
}
@@ -548,7 +548,7 @@ object CharterPassengerModel {
* 启动时间校准轮训
*/
private fun startCalibrationLoop() {
BusPassengerModelLoopManager.setLoopFunction(
BizLoopManager.setLoopFunction(
TAGCALIBRATION,
LoopInfo(120, ::queryBusinessTime, immediately = true)
)
@@ -559,7 +559,7 @@ object CharterPassengerModel {
* 停止时间校准轮训
*/
private fun endCalibrationLoop() {
BusPassengerModelLoopManager.removeLoopFunction(TAGCALIBRATION)
BizLoopManager.removeLoopFunction(TAGCALIBRATION)
CallerLogger.d(M_BUS_P + TAG, "结束时间校准轮询")
}
@@ -656,7 +656,7 @@ object CharterPassengerModel {
* 启动路距计算
*/
private fun startCalculateDistanceLoop() {
BusPassengerModelLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance))
BizLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance))
CallerLogger.d(M_BUS_P + TAG, "开始路距计算")
}
@@ -667,7 +667,7 @@ object CharterPassengerModel {
* ③ 到站成功后
*/
private fun endCalculateDistanceLoop() {
BusPassengerModelLoopManager.removeLoopFunction(TAGDISTANCE)
BizLoopManager.removeLoopFunction(TAGDISTANCE)
CallerLogger.d(M_BUS_P + TAG, "结束路距计算")
}

View File

@@ -20,7 +20,7 @@ import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
import com.mogo.och.bus.passenger.model.OrderStatusEnum
import com.mogo.och.common.module.manager.loopmanager.BusPassengerModelLoopManager
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
@@ -187,7 +187,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
CallerLogger.d(M_BUS_P + TAG, "onDestroy")
RxUtils.disposeSubscribe(subscribeSelectLine)
RxUtils.disposeSubscribe(subscribeSelectSite)
BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
CharterPassengerModel.setStatusChangeListener(TAG,null)
CallerTelematicListenerManager.removeListener(TAG)
}
@@ -230,7 +230,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
mView?.hideDataDriverRefuse()
}
RxUtils.disposeSubscribe(subscribeSelectSite)
BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
}
}
}
@@ -270,7 +270,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
}
mView?.hideDataWaitDriverMsg()
// 启动查看和司机端链接
BusPassengerModelLoopManager.setLoopFunction(
BizLoopManager.setLoopFunction(
TAGLINELOOP,
LoopInfo(3, ::checkServerStatus)
)
@@ -284,7 +284,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
private fun checkServerStatus() {
if (!CallerTelematicManager.getClientConnStatus()) {
ToastCharterUtils.showShort("断开和司机端连接、请联系安全员")
BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
mView?.hideDataDriverRefuse()
CallerLogger.d(M_BUS_P + TAG, "endAni666")
}

View File

@@ -12,10 +12,11 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.och.common.module.manager.loopmanager.BusPassengerModelLoopManager
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
import com.mogo.och.common.module.manager.loopmanager.LoopInfo
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import com.zhjt.service.chain.ChainLog
import io.reactivex.schedulers.Schedulers
import mogo.telematics.pad.MessagePad
import java.util.concurrent.ConcurrentHashMap
@@ -190,7 +191,9 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
* 启动路距计算
*/
private fun startCalculateDistanceLoop() {
BusPassengerModelLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance))
BizLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance,
scheduler = Schedulers.computation()
))
d(SceneConstant.M_BUS_P + TAG, "开始路距计算")
}
@@ -198,7 +201,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{
* 结束启动路距计算
*/
private fun endCalculateDistanceLoop() {
BusPassengerModelLoopManager.removeLoopFunction(TAGDISTANCE)
BizLoopManager.removeLoopFunction(TAGDISTANCE)
d(SceneConstant.M_BUS_P + TAG, "结束路距计算")
}

View File

@@ -4,6 +4,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.ConcurrentHashMap
@@ -14,7 +15,7 @@ import java.util.concurrent.TimeUnit
*
* 管理轮询逻辑订单轮询新单轮询新单抢单结果轮询等等
*/
object BusPassengerModelLoopManager {
object BizLoopManager {
private val TAG = "BusPassengerModelLoopManager"
@@ -66,8 +67,21 @@ object BusPassengerModelLoopManager {
aLong?.let {
if (it % loopInfo.interval == 0L) {
try {
loopInfo.function.invoke()
CallerLogger.d(TAG, "${aLong}对象${loopInfo}正在执行方法${tag}")
if(loopInfo.scheduler!=null) {
Observable.just(tag).observeOn(loopInfo.scheduler)
.subscribe(object :Observer<String>{
override fun onSubscribe(d: Disposable) {}
override fun onError(e: Throwable) {}
override fun onComplete() {
loopInfo.function.invoke()
CallerLogger.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
}
override fun onNext(t: String) {}
})
}else{
loopInfo.function.invoke()
CallerLogger.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
}
}catch (e:Throwable){
e.printStackTrace()
CallerLogger.e(TAG,"$tag:--$e")

View File

@@ -1,3 +1,5 @@
package com.mogo.och.common.module.manager.loopmanager
data class LoopInfo(val interval:Long,val function: () -> Unit,val immediately:Boolean=false)
import io.reactivex.Scheduler
data class LoopInfo(val interval:Long,val function: () -> Unit,val immediately:Boolean=false,var scheduler: Scheduler? = null)