Annotation of sbbs/javascript/include/mozilla/nspr/obsolete/pralarm.h, revision 1.1.1.1

1.1       root        1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
                      2: /* 
                      3:  * The contents of this file are subject to the Mozilla Public
                      4:  * License Version 1.1 (the "License"); you may not use this file
                      5:  * except in compliance with the License. You may obtain a copy of
                      6:  * the License at http://www.mozilla.org/MPL/
                      7:  * 
                      8:  * Software distributed under the License is distributed on an "AS
                      9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                     10:  * implied. See the License for the specific language governing
                     11:  * rights and limitations under the License.
                     12:  * 
                     13:  * The Original Code is the Netscape Portable Runtime (NSPR).
                     14:  * 
                     15:  * The Initial Developer of the Original Code is Netscape
                     16:  * Communications Corporation.  Portions created by Netscape are 
                     17:  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
                     18:  * Rights Reserved.
                     19:  * 
                     20:  * Contributor(s):
                     21:  * 
                     22:  * Alternatively, the contents of this file may be used under the
                     23:  * terms of the GNU General Public License Version 2 or later (the
                     24:  * "GPL"), in which case the provisions of the GPL are applicable 
                     25:  * instead of those above.  If you wish to allow use of your 
                     26:  * version of this file only under the terms of the GPL and not to
                     27:  * allow others to use your version of this file under the MPL,
                     28:  * indicate your decision by deleting the provisions above and
                     29:  * replace them with the notice and other provisions required by
                     30:  * the GPL.  If you do not delete the provisions above, a recipient
                     31:  * may use your version of this file under either the MPL or the
                     32:  * GPL.
                     33:  */
                     34: 
                     35: /*
                     36: ** File:       pralarm.h
                     37: ** Description:    API to periodic alarms.
                     38: **
                     39: **
                     40: ** Alarms are defined to invoke some client specified function at 
                     41: ** a time in the future. The notification may be a one time event
                     42: ** or repeated at a fixed interval. The interval at which the next
                     43: ** notification takes place may be modified by the client code only
                     44: ** during the respective notification.
                     45: **
                     46: ** The notification is delivered on a thread that is part of the
                     47: ** alarm context (PRAlarm). The thread will inherit the priority
                     48: ** of the Alarm creator.
                     49: **
                     50: ** Any number of periodic alarms (PRAlarmID) may be created within
                     51: ** the context of a single alarm (PRAlarm). The notifications will be
                     52: ** scheduled as close to the desired time as possible.
                     53: **
                     54: ** Repeating periodic notifies are expected to run at a fixed rate.
                     55: ** That rate is expressed as some number of notifies per period where
                     56: ** the period is much larger than a PRIntervalTime (see prinrval.h).
                     57: */
                     58: 
                     59: #if !defined(pralarm_h)
                     60: #define pralarm_h
                     61: 
                     62: #include "prtypes.h"
                     63: #include "prinrval.h"
                     64: 
                     65: 
                     66: PR_BEGIN_EXTERN_C
                     67: 
                     68: /**********************************************************************/
                     69: /************************* TYPES AND CONSTANTS ************************/
                     70: /**********************************************************************/
                     71: 
                     72: typedef struct PRAlarm PRAlarm;
                     73: typedef struct PRAlarmID PRAlarmID;
                     74: 
                     75: typedef PRBool (PR_CALLBACK *PRPeriodicAlarmFn)(
                     76:     PRAlarmID *id, void *clientData, PRUint32 late);
                     77: 
                     78: /**********************************************************************/
                     79: /****************************** FUNCTIONS *****************************/
                     80: /**********************************************************************/
                     81: 
                     82: /***********************************************************************
                     83: ** FUNCTION:    PR_CreateAlarm
                     84: ** DESCRIPTION:
                     85: **  Create an alarm context.
                     86: ** INPUTS:      void
                     87: ** OUTPUTS:     None
                     88: ** RETURN:      PRAlarm*
                     89: **  
                     90: ** SIDE EFFECTS:
                     91: **  This creates an alarm context, which is an object used for subsequent
                     92: **  notification creations. It also creates a thread that will be used to
                     93: ** deliver the notifications that are expected to be defined. The client
                     94: ** is resposible for destroying the context when appropriate.
                     95: ** RESTRICTIONS:
                     96: **  None. 
                     97: ** MEMORY:      The object (PRAlarm) and a thread to support notifications.
                     98: ** ALGORITHM:   N/A
                     99: ***********************************************************************/
                    100: NSPR_API(PRAlarm*) PR_CreateAlarm(void);
                    101: 
                    102: /***********************************************************************
                    103: ** FUNCTION:    PR_DestroyAlarm
                    104: ** DESCRIPTION:
                    105: **  Destroys the context created by PR_CreateAlarm().
                    106: ** INPUTS:      PRAlarm*
                    107: ** OUTPUTS:     None
                    108: ** RETURN:      PRStatus
                    109: **  
                    110: ** SIDE EFFECTS:
                    111: **  This destroys the context that was created by PR_CreateAlarm().
                    112: **  If there are any active alarms (PRAlarmID), they will be cancelled.
                    113: **  Once that is done, the thread that was used to deliver the alarms
                    114: **  will be joined. 
                    115: ** RESTRICTIONS:
                    116: **  None. 
                    117: ** MEMORY:      N/A
                    118: ** ALGORITHM:   N/A
                    119: ***********************************************************************/
                    120: NSPR_API(PRStatus) PR_DestroyAlarm(PRAlarm *alarm);
                    121: 
                    122: /***********************************************************************
                    123: ** FUNCTION:    PR_SetAlarm
                    124: ** DESCRIPTION:
                    125: **  Creates a periodic notifier that is to be delivered to a specified
                    126: **  function at some fixed interval.
                    127: ** INPUTS:      PRAlarm *alarm              Parent alarm context
                    128: **              PRIntervalTime period       Interval over which the notifies
                    129: **                                          are delivered.
                    130: **              PRUint32 rate               The rate within the interval that
                    131: **                                          the notifies will be delivered.
                    132: **              PRPeriodicAlarmFn function  Entry point where the notifies
                    133: **                                          will be delivered.
                    134: ** OUTPUTS:     None
                    135: ** RETURN:      PRAlarmID*                  Handle to the notifier just created
                    136: **                                          or NULL if the request failed.
                    137: **  
                    138: ** SIDE EFFECTS:
                    139: **  A periodic notifier is created. The notifications will be delivered
                    140: **  by the alarm's internal thread at a fixed interval whose rate is the
                    141: **  number of interrupts per interval specified. The first notification
                    142: **  will be delivered as soon as possible, and they will continue until
                    143: **  the notifier routine indicates that they should cease of the alarm
                    144: **  context is destroyed (PR_DestroyAlarm).
                    145: ** RESTRICTIONS:
                    146: **  None. 
                    147: ** MEMORY:      Memory for the notifier object.
                    148: ** ALGORITHM:   The rate at which notifications are delivered are stated
                    149: **              to be "'rate' notifies per 'interval'". The exact time of
                    150: **              the notification is computed based on a epoch established
                    151: **              when the notifier was set. Each notification is delivered
                    152: **              not ealier than the epoch plus the fixed rate times the
                    153: **              notification sequence number. Such notifications have the
                    154: **              potential to be late by not more than 'interval'/'rate'.
                    155: **              The amount of lateness of one notification is taken into
                    156: **              account on the next in an attempt to avoid long term slew.  
                    157: ***********************************************************************/
                    158: NSPR_API(PRAlarmID*) PR_SetAlarm(
                    159:     PRAlarm *alarm, PRIntervalTime period, PRUint32 rate,
                    160:     PRPeriodicAlarmFn function, void *clientData);
                    161: 
                    162: /***********************************************************************
                    163: ** FUNCTION:    PR_ResetAlarm
                    164: ** DESCRIPTION:
                    165: **  Resets an existing alarm.
                    166: ** INPUTS:      PRAlarmID *id               Identify of the notifier.
                    167: **              PRIntervalTime period       Interval over which the notifies
                    168: **                                          are delivered.
                    169: **              PRUint32 rate               The rate within the interval that
                    170: **                                          the notifies will be delivered.
                    171: ** OUTPUTS:     None
                    172: ** RETURN:      PRStatus                    Indication of completion.
                    173: **  
                    174: ** SIDE EFFECTS:
                    175: **  An existing alarm may have its period and rate redefined. The
                    176: **  additional side effect is that the notifier's epoch is recomputed.
                    177: **  The first notification delivered by the newly refreshed alarm is
                    178: **  defined to be 'interval'/'rate' from the time of the reset.
                    179: ** RESTRICTIONS:
                    180: **  This function may only be called in the notifier for that alarm.
                    181: ** MEMORY:      N/A.
                    182: ** ALGORITHM:   See PR_SetAlarm().  
                    183: ***********************************************************************/
                    184: NSPR_API(PRStatus) PR_ResetAlarm(
                    185:    PRAlarmID *id, PRIntervalTime period, PRUint32 rate);
                    186: 
                    187: PR_END_EXTERN_C
                    188: 
                    189: #endif /* !defined(pralarm_h) */
                    190: 
                    191: /* prinrval.h */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.