/// 检查监控
/// \param[in] *sm
/// \return void
void 
skynet_monitor_check(struct skynet_monitor *sm) {
	if (sm->version == sm->check_version) { // 如果版本等于检查版本
		if (sm->destination) { // 目的是否存在
			skynet_context_endless(sm->destination);
			skynet_error(NULL, "A message from [ :%08x ] to [ :%08x ] maybe in an endless loop (version = %d)", sm->source , sm->destination, sm->version);
		}
	} else { // 否则检查版本等于版本
		sm->check_version = sm->version;
	}
}
Example #2
0
void 
skynet_monitor_check(struct skynet_monitor *sm) {
	if (sm->version == sm->check_version) {
		if (sm->destination) {
			skynet_context_endless(sm->destination);
			skynet_error(NULL, "A message from [ :%08x ] to [ :%08x ] maybe in an endless loop", sm->source , sm->destination);
		}
	} else {
		sm->check_version = sm->version;
	}
}
Example #3
0
// check 函数和上面的 trigger 函数不是运行在同一个线程的
void 
skynet_monitor_check(struct skynet_monitor *sm) {
	if (sm->version == sm->check_version) {
		if (sm->destination) {		// skynet_context 在 dispatch_message 数据之后, 会设置 destination 参数为 0.
			skynet_context_endless(sm->destination);
			skynet_error(NULL, "A message from [ :%08x ] to [ :%08x ] maybe in an endless loop (version = %d)", sm->source, sm->destination, sm->version);
		}
	} else {
		sm->check_version = sm->version;
	}
}