under construction under construction
Under construction

ITimerManager

The timer manager takes care of the management of the current timers. Timers in nyssr.net are messages that are sent to their target after a certain time.

Get the timer manager

The manager is fetched as a singleton from the service registry:

final ITimerManager tm = CServiceRegistry.getInstance()
                                         .getService(ITimerManager.class);

As always, make sure that the service starter of your package has a dependency on the ITimerManager to ensure that the service already exists.

Start a timer

One way to start a timer is to use the corresponding methods of the timer manager directly. The method requires

  • a record ID to identify the message
  • a target address for which target the message is to be received
  • a timeout in milliseconds (when does the message arrive)
  • a flag whether the message should be repeated
  • an optional record for payload data
long createAndStartTimer(@NotNull IId aMID,
                         @NotNull CTargetAddress aAddress,
                         long aDelay,
                         boolean aRepeat,
                         @Nullable CRecord aRecord);

The method returns a handle that can be used to identify the timer. Thus, other methods can be called to manage the timer. An invalid handle is ITimerManager.INVALID (0).

A timeout of less than 10 ms makes little sense, because the resolution of the timers does not allow this.

Be careful when using repeated timers:

If the application is at breakpoint during debugging, more timers are produced.

If the processing of a timer takes longer than the timeout, further timer messages are also sent. For short timeouts, it is usually better to use one-time timers. After processing the timer event, a new timer can then be raised.

Dismissing a timer

The timer can be stopped at any time. A timer that is not to be repeated is automatically deleted after the message is sent.

boolean dismissTimer(long aHandle);

The method returns false if the timer was not found.

Resetting a timer

A timer can be reset at any time. With this method it is stopped, but not deleted, but restarted immediately.

boolean resetTimer(long aHandle);

The method returns false if the timer was not found.

Check a timer

It can be checked whether a timer still exists.

boolean isTimerActive(long aHandle);

The method returns false if the timer was not found.

Likewise, it can be checked whether a timer is known for a given record ID and a destination address.

long getTimerHandle(@NotNull IId aMID,
                    @NotNull CTargetAddress aReceiver);

A return value of ITimerManager.INVALID (0) means that no timer was found.

Homepage of nyssr.net and RemoteSkin