2013年1月29日 星期二

How to use TimerHandler ??

  1. 建議以process專屬的MQ, 設置定時器, 儘可能避免以外部process進行定時器的設置, 造成日後難以追查觸發的來源或控管不易
  2. 建議有限度地新增定時觸發事件, 以避免降低系統效能

#設置計時器, 以給定的MQ為觸發對象
TimerHandler::TimerHandler (char *mq_name);
  mq_name: process專屬的MQ名稱

ex:
TimerHandler timer (MQ_EDPLCRCV);

#新增定時觸發事件
TimerHandler::add (char *tm_name, int msec, int msg_id, void *msg, int msg_size);
  tm_name: 定時事件名稱
  msec : 間隔時間 (毫秒 milli-seconds)
  msg_id: 觸發事件代碼
  msg: 觸發資料
  msg_size: 觸發資料長度

ex:
timer.add (“Timer_AliveMsg”, 30000, MSG_TIMER_ALIVEMSG, 0, 0);
timer.add (“Timer_Hello”, 30000, MSG_TIMER_HELLO, "hello world", strlen("hello world"));

#啟動/停止/重置
TimerHandler::set_enable (char *tm_name, bool run_it);
  tm_name: 定時事件名稱
  run_it: 啟動/重置(enable), 停止(disable)

ex:
timer.set_enable (“Timer_AliveMsg”, true);
timer.set_enable (“Timer_AliveMsg”, false);

#移除定時觸發事件
TimerHandler::remove (char *tm_name);
  tm_name: 定時事件名稱

ex:
timer.remove ("Timer_AliveMsg");

#設置間隔時間 (milli-seconds)
TimerHandler::set_interval (char *tm_name, int msec);
  tm_name: 定時事件名稱
  msec: 間隔時間 (毫秒 milli-seconds)

ex:
timer.set_interval ("Timer_AliveMsg", 10000);

沒有留言:

張貼留言