Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZTIMERSET(3)			  CZMQ Manual			  ZTIMERSET(3)

NAME
       ztimerset - Class for timer set

SYNOPSIS
       //  This	is a draft class, and may change without notice. It is disabled	in
       //  stable builds by default. If	you use	this in	applications, please ask
       //  for it to be	pushed to stable state.	Use --enable-drafts to enable.
       #ifdef CZMQ_BUILD_DRAFT_API
       // Callback function for	timer event.
       typedef void (ztimerset_fn) (
	   int timer_id, void *arg);

       //  *** Draft method, for development use, may change without warning ***
       //  Create new timer set.
       CZMQ_EXPORT ztimerset_t *
	   ztimerset_new (void);

       //  *** Draft method, for development use, may change without warning ***
       //  Destroy a timer set
       CZMQ_EXPORT void
	   ztimerset_destroy (ztimerset_t **self_p);

       //  *** Draft method, for development use, may change without warning ***
       //  Add a timer to the set. Returns timer id if OK, -1 on failure.
       CZMQ_EXPORT int
	   ztimerset_add (ztimerset_t *self, size_t interval, ztimerset_fn handler, void *arg);

       //  *** Draft method, for development use, may change without warning ***
       //  Cancel a timer. Returns 0 if	OK, -1 on failure.
       CZMQ_EXPORT int
	   ztimerset_cancel (ztimerset_t *self,	int timer_id);

       //  *** Draft method, for development use, may change without warning ***
       //  Set timer interval. Returns 0 if OK,	-1 on failure.
       //  This	method is slow,	canceling the timer and	adding a new one yield better performance.
       CZMQ_EXPORT int
	   ztimerset_set_interval (ztimerset_t *self, int timer_id, size_t interval);

       //  *** Draft method, for development use, may change without warning ***
       //  Reset timer to start	interval counting from current time. Returns 0 if OK, -1 on failure.
       //  This	method is slow,	canceling the timer and	adding a new one yield better performance.
       CZMQ_EXPORT int
	   ztimerset_reset (ztimerset_t	*self, int timer_id);

       //  *** Draft method, for development use, may change without warning ***
       //  Return the time until the next interval.
       //  Should be used as timeout parameter for the zpoller wait method.
       //  The timeout is in msec.
       CZMQ_EXPORT int
	   ztimerset_timeout (ztimerset_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Invoke callback function of all timers which	their interval has elapsed.
       //  Should be call after	zpoller	wait method.
       //  Returns 0 if	OK, -1 on failure.
       CZMQ_EXPORT int
	   ztimerset_execute (ztimerset_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Self	test of	this class.
       CZMQ_EXPORT void
	   ztimerset_test (bool	verbose);

       #endif // CZMQ_BUILD_DRAFT_API
       Please add '@interface' section in './../src/ztimerset.c'.

DESCRIPTION
       ztimerset - timer set

       Please add @discuss section in ./../src/ztimerset.c.

EXAMPLE
       From ztimerset_test method.

	   //  Simple create/destroy test
	   ztimerset_t *self = ztimerset_new ();
	   assert (self);

	   //  Adding timer
	   bool	timer_invoked =	false;
	   int timer_id	= ztimerset_add	(self, 100, handler, &timer_invoked);
	   assert (timer_id != -1);
	   int rc = ztimerset_execute (self);
	   assert (rc == 0);
	   assert (!timer_invoked);
	   int timeout = ztimerset_timeout (self);
	   assert (timeout > 0);
	   zclock_sleep	(timeout);
	   rc =	ztimerset_execute (self);
	   assert (rc == 0);
	   assert (timer_invoked);

	   //  Cancel timer
	   timeout = ztimerset_timeout (self);
	   assert (timeout > 0);
	   rc =	ztimerset_cancel (self,	timer_id);
	   assert (rc == 0);
	   timeout = ztimerset_timeout (self);
	   assert(timeout == -1);

	   //  Reset a timer
	   timer_id = ztimerset_add (self, 100,	handler, &timer_invoked);
	   assert (timer_id != -1);
	   timeout = ztimerset_timeout (self);
	   assert (timeout > 0);
	   zclock_sleep	(timeout / 2);
	   timeout = ztimerset_timeout (self);
	   rc =	ztimerset_reset(self, timer_id);
	   assert (rc == 0);
	   int timeout2	= ztimerset_timeout (self);
	   assert (timeout2 > timeout);
	   rc =	ztimerset_cancel (self,	timer_id);
	   assert (rc == 0);

	   //  Set interval
	   timer_id = ztimerset_add (self, 100,	handler, &timer_invoked);
	   assert (timer_id != -1);
	   timeout = ztimerset_timeout (self);
	   rc =	ztimerset_set_interval(self, timer_id, 200);
	   timeout2 = ztimerset_timeout	(self);
	   assert (timeout2 > timeout);

	   ztimerset_destroy (&self);

	   #if defined (__WINDOWS__)
	   zsys_shutdown();
	   #endif

AUTHORS
       The czmq	manual was written by the authors in the AUTHORS file.

RESOURCES
       Main web	site:

       Report bugs to the email	<zeromq-dev@lists.zeromq.org[1]>

COPYRIGHT
       Copyright (c) the Contributors as noted in the AUTHORS file. This file
       is part of CZMQ,	the high-level C binding for 0MQ:
       http://czmq.zeromq.org. This Source Code	Form is	subject	to the terms
       of the Mozilla Public License, v. 2.0. If a copy	of the MPL was not
       distributed with	this file, You can obtain one at
       http://mozilla.org/MPL/2.0/. LICENSE included with the czmq
       distribution.

NOTES
	1. zeromq-dev@lists.zeromq.org
	   mailto:zeromq-dev@lists.zeromq.org

CZMQ 4.2.1			  11/01/2025			  ZTIMERSET(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ztimerset&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help