bes  Updated for version 3.20.6
TheBESKeys Class Reference

mapping of key/value pairs defining different behaviors of an application. More...

#include <TheBESKeys.h>

Collaboration diagram for TheBESKeys:
Collaboration graph

Public Types

typedef std::map< std::string, std::vector< std::string > >::const_iterator Keys_citer
 

Public Member Functions

virtual void dump (std::ostream &strm) const
 dumps information about this object More...
 
void get_value (const std::string &s, std::string &val, bool &found)
 Retrieve the value of a given key, if set. More...
 
void get_values (const std::string &s, std::vector< std::string > &vals, bool &found)
 Retrieve the values of a given key, if set. More...
 
Keys_citer keys_begin ()
 
Keys_citer keys_end ()
 
std::string keys_file_name () const
 
bool read_bool_key (const std::string &key, bool default_value)
 Read a boolean-valued key from the bes.conf file. More...
 
int read_int_key (const std::string &key, int default_value)
 Read an integer-valued key from the bes.conf file. More...
 
std::string read_string_key (const std::string &key, const std::string &default_value)
 Read a string-valued key from the bes.conf file. More...
 
void set_key (const std::string &key, const std::string &val, bool addto=false)
 allows the user to set key/value pairs from within the application. More...
 
void set_key (const std::string &pair)
 allows the user to set key/value pairs from within the application. More...
 
virtual ~TheBESKeys ()
 cleans up the key/value pair mapping More...
 

Static Public Member Functions

static TheBESKeysTheKeys ()
 

Static Public Attributes

static TheBESKeys_instance = 0
 
static std::string ConfigFile = ""
 

Protected Member Functions

 TheBESKeys (const std::string &keys_file_name)
 default constructor that reads loads key/value pairs from the specified file. More...
 

Detailed Description

mapping of key/value pairs defining different behaviors of an application.

TheBESKeys provides a mechanism to define the behavior of an application given key/value pairs. For example, how authentication will work, database access information, level of debugging and where log files are to be located.

Key/value pairs can be loaded from an external initialization file or set within the application itself, for example from the command line.

If from a file the key/value pair is set one per line and cannot span multiple lines. Comments are allowed using the pound (#) character. For example:

#
# Who is responsible for this server
#
BES.ServerAdministrator=email:support@opendap.org

#
# Default server port and unix socket information and whether the server
#is secure or not.
#
BES.ServerPort=10022
BES.ServerUnixSocket=/tmp/bes.socket
BES.ServerSecure=no
* 

Key/value pairs can also be set by passing in a key=value string, or by passing in a key and value string to the object.

BES provides a single object for access to a single BESKeys object, TheBESKeys.

Definition at line 80 of file TheBESKeys.h.

Constructor & Destructor Documentation

◆ TheBESKeys()

TheBESKeys::TheBESKeys ( const std::string &  keys_file_name)
protected

default constructor that reads loads key/value pairs from the specified file.

This constructor uses the specified file to load key/value pairs. This file holds different key/value pairs for the application, one key/value pair per line separated by an equal (=) sign.

key=value

Comments are allowed in the file and must begin with a pound (#) sign at the beginning of the line. No comments are allowed at the end of lines.

Exceptions
BESInternalFatalErrorthrown if there is an error reading the initialization file or a syntax error in the file, i.e. a malformed key/value pair.

Definition at line 113 of file TheBESKeys.cc.

◆ ~TheBESKeys()

TheBESKeys::~TheBESKeys ( )
virtual

cleans up the key/value pair mapping

Definition at line 128 of file TheBESKeys.cc.

Member Function Documentation

◆ dump()

void TheBESKeys::dump ( std::ostream &  strm) const
virtual

dumps information about this object

Displays the pointer value of this instance along with all of the keys.

Parameters
strmC++ i/o stream to dump the information to

Implements BESObj.

Definition at line 402 of file TheBESKeys.cc.

◆ get_value()

void TheBESKeys::get_value ( const std::string &  s,
std::string &  val,
bool &  found 
)

Retrieve the value of a given key, if set.

This method allows the user of BESKeys to retrieve the value of the specified key. If multiple values are set then an exception is thrown.

Parameters
sThe key the user is looking for
valThe value of the key the user is looking for
foundSet to true of the key is set or false if the key is not set. The value of a key can be set to the empty string, which is why this boolean is provided.
Exceptions
BESSyntaxUserErrorif multiple values are available for the specified key

Definition at line 272 of file TheBESKeys.cc.

◆ get_values()

void TheBESKeys::get_values ( const std::string &  s,
std::vector< std::string > &  vals,
bool &  found 
)

Retrieve the values of a given key, if set.

This method allows the user of BESKeys to retrieve the value of the specified key.

Parameters
sThe key the user is looking for
valsThe value set for the specified key
foundSet to true of the key is set or false if the key is not set. The value of a key can be set to the empty string, which is why this boolean is provided.

Definition at line 303 of file TheBESKeys.cc.

◆ read_bool_key()

bool TheBESKeys::read_bool_key ( const std::string &  key,
bool  default_value 
)

Read a boolean-valued key from the bes.conf file.

Look-up the bes key

  • key and return its value if set. If the key is not set, return the default value.
Parameters
keyThe key to loop up
default_valueReturn this value if
  • key is not found.
Returns
The boolean value of
  • key. The value of the key is true if the key is set to "true", "yes", or "on", otherwise the key value is interpreted as false. If
  • key is not set, return
  • default_value.

Definition at line 326 of file TheBESKeys.cc.

◆ read_int_key()

int TheBESKeys::read_int_key ( const std::string &  key,
int  default_value 
)

Read an integer-valued key from the bes.conf file.

Look-up the bes key

  • key and return its value if set. If the key is not set, return the default value.
Parameters
keyThe key to loop up
default_valueReturn this value if
  • key is not found.
Returns
The integer value of
  • key.

Definition at line 376 of file TheBESKeys.cc.

◆ read_string_key()

string TheBESKeys::read_string_key ( const std::string &  key,
const std::string &  default_value 
)

Read a string-valued key from the bes.conf file.

Look-up the bes key

  • key and return its value if set. If the key is not set, return the default value.
Parameters
keyThe key to loop up
default_valueReturn this value if
  • key is not found.
Returns
The string value of
  • key.

Definition at line 351 of file TheBESKeys.cc.

◆ set_key() [1/2]

void TheBESKeys::set_key ( const std::string &  key,
const std::string &  val,
bool  addto = false 
)

allows the user to set key/value pairs from within the application.

This method allows users of BESKeys to set key/value pairs from within the application, such as for testing purposes, key/value pairs from the command line, etc...

If addto is set to true then the value is added to the list of values for key

If addto is false, and the key is already set then this value replaces all values for the key

Parameters
keyname of the key/value pair to be set
valvalue of the key to be set
addtoSpecifies whether to add the value to the key or set the value. Default is to set, not add to

Definition at line 224 of file TheBESKeys.cc.

◆ set_key() [2/2]

void TheBESKeys::set_key ( const std::string &  pair)

allows the user to set key/value pairs from within the application.

This method allows users of BESKeys to set key/value pairs from within the application, such as for testing purposes, key/value pairs from the command line, etc...

If the key is already set then this value replaces the value currently held in the keys map.

Parameters
pairthe key/value pair passed as key=value

Definition at line 249 of file TheBESKeys.cc.

◆ TheKeys()

TheBESKeys * TheBESKeys::TheKeys ( )
static

Access to the singleton.

Definition at line 62 of file TheBESKeys.cc.

Member Data Documentation

◆ ConfigFile

string TheBESKeys::ConfigFile = ""
static

TheBESKeys::ConfigFile provides a way for the daemon and test code to set the location of a particular configuration file.

Definition at line 149 of file TheBESKeys.h.


The documentation for this class was generated from the following files: