122 lines
2.9 KiB
C
122 lines
2.9 KiB
C
|
/*
|
||
|
* randchnl.h
|
||
|
*
|
||
|
* Copyright (c) 1995 by DataBeam Corporation, Lexington, KY
|
||
|
*
|
||
|
* Abstract:
|
||
|
* This is the interface file for the RandomChannelGenerator class. This
|
||
|
* class inherits from the RandomNumberGenerator class. On instantiation,
|
||
|
* instances of this class will internally generate a random number which
|
||
|
* falls within the allowable range of dynamic channel values. Channel
|
||
|
* assignments are then generated by incrementing this value each time a
|
||
|
* new assignment is requested. Once the maximum allowable value has been
|
||
|
* assigned, the next value to be generated "wraps around" to the minimum
|
||
|
* allowable value.
|
||
|
*
|
||
|
* Obviously, this class does not generate completely random channel
|
||
|
* values for each request. With a completely random generator, it is
|
||
|
* possible to delete a channel in MCS, and then have the random number
|
||
|
* generator assign the same value as the deleted channel before all
|
||
|
* components of the system even know that the channel was deleted to
|
||
|
* start with, thus causing erratic behavior in the system. In this
|
||
|
* class, no channel can be reassigned until all other possible channels
|
||
|
* have been assigned.
|
||
|
*
|
||
|
* This class can be modifed in the future to incorporate additional
|
||
|
* "randomness" into the algorithm and still not reassign any channel
|
||
|
* numbers before all other possible values are used. This, however,
|
||
|
* would be at the expense of performance and/or memory resources.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*
|
||
|
* Author:
|
||
|
* Alan D. May
|
||
|
*/
|
||
|
#ifndef _RANDOM_CHANNEL_GENERATOR_
|
||
|
#define _RANDOM_CHANNEL_GENERATOR_
|
||
|
|
||
|
#include "databeam.h"
|
||
|
#include "random.h"
|
||
|
|
||
|
/*
|
||
|
* The definition of the RandomChannelGenerator class.
|
||
|
*/
|
||
|
class RandomChannelGenerator
|
||
|
{
|
||
|
public:
|
||
|
RandomChannelGenerator ();
|
||
|
virtual ~RandomChannelGenerator ();
|
||
|
RandomValue GetRandomChannel ();
|
||
|
|
||
|
private:
|
||
|
ULong Current_Channel;
|
||
|
};
|
||
|
typedef RandomChannelGenerator * PRandomChannelGenerator;
|
||
|
|
||
|
/*
|
||
|
* RandomChannelGenerator ()
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* The constructor creates a random channel generator object by calling the
|
||
|
* constructor for the parent class, RandomNumberGenerator. This then
|
||
|
* automatically seeds the random number generator with the current time.
|
||
|
* The default algorithm will be used.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* None.
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None.
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* ~RandomChannelGenerator ()
|
||
|
*
|
||
|
* Public
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This is the destructor for the RandomChannelGenerator class.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* None.
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None.
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* RandomValue GetRandomChannel ()
|
||
|
*
|
||
|
* Public
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This method returns a valid dynamic channel number.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* None.
|
||
|
*
|
||
|
* Return Value:
|
||
|
* A RandomValue in the range of valid dynamic channel values.
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
#endif
|