blob: 64c282772a5980a41017304c7e375500f4ba91d0 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* etch_config.h -- configuration items and file
*/
#ifndef ETCHCONFIG_H
#define ETCHCONFIG_H
#include "etch.h"
#if(0)
_________________________________________________________________________________
example of adding a config entry to etch:
1) decide on an external config item name, e.g., myMaxClients.
2) add an internal name for the new entry to the etch_config struct below, e.g.,
int my_max_clients;
3) add a default value for the item to the defaults section below, e.g.,
#define ETCHCONFIGDEF_MY_MAX_CLIENTS 8
4) using the internal name from (2), and the default value from (3), add a
default setter for the item to etch_reset_config() in etch_config.c; e.g.,
config.my_max_clients = ETCHCONFIGDEF_MY_MAX_CLIENTS;
5) add a key for the item to the end of the ordinals section below, e.g.,
#define ETCHCONFIGKEY_MY_MAX_CLIENTS 21 /* value will be previous key + 1 */
6) using the key from (5) and the external name from (1), ad an entry to the
config_keys table found in etch_read_configfile() in etch_config.c; e.g.,
{ETCHCONFIGKEY_MY_MAX_CLIENTS, "myMaxClients"},
7. using the key from (5) and the internal name from (2), add an edit and
assignment for the item to etchconfig_assign_value() in etch_config.c; e.g.,
case ETCHCONFIGKEY_MY_MAX_CLIENTS:
if (datatype != ETCHCONFIG_DATATYPE_INT) result = -1;
else config.my_max_clients = ivalue;
break;
8. add the external name from (1), plus a value, to etch-c.config, e.g.,
myMaxClients = 4 # your optional comment here
9. optionally add some code to etch to put the configured value to use, e.g.,
if (etch_clients_count < config.my_max_clients)
etch_clients_count++;
else etchlog(ETCHETCH, ETCHLOG_ERROR, "max clients exceeded\n");
10. build the etch runtime, and link an etch executable.
11. start up the executable from (10), and test.
_________________________________________________________________________________
#endif
/* default values for each config item */
#define ETCHCONFIGDEF_LOG_LEVEL 'X'
#define ETCHCONFIGDEF_MAX_LOGFILES 20
#define ETCHCONFIGDEF_MAX_LOGLINES 4000
#define ETCHCONFIGDEF_LOGCOUNT_GRACE 10
#define ETCHCONFIGDEF_IS_LOG_TO_FILE TRUE
#define ETCHCONFIGDEF_IS_LOG_TO_CONSOLE TRUE
#define ETCHCONFIGDEF_IS_VALIDATE_ON_READ TRUE
#define ETCHCONFIGDEF_IS_VALIDATE_ON_WRITE TRUE
#define ETCHCONFIGDEF_IS_DESTROY_MESSAGES_WITH_MAILBOX FALSE
#define ETCHCONFIGDEF_IS_LOG_MEMORY_LEAK_DETAIL TRUE
#define ETCHCONFIGDEF_DEFAULT_MAILBOX_READ_WAITMS 3000
#define ETCHCONFIGDEF_SLEEP_SECONDS_PRIOR_CLIENT_EXIT 0
#define ETCHCONFIGDEF_EXAMPLE_STRING_VALUE "examplevalue"
/* unique ordinal key for each config file item. each configured item
* (but not computed items) must have an entry here.
*/
#define ETCHCONFIGKEY_TEST_STRING 1 /* internal testing use */
#define ETCHCONFIGKEY_TEST_INT 2 /* internal testing use */
#define ETCHCONFIGKEY_TEST_BOOL 3 /* internal testing use */
#define ETCHCONFIGKEY_TEST_FIXED 4 /* internal testing use */
#define ETCHCONFIGKEY_LOG_LEVEL 5
#define ETCHCONFIGKEY_ETCH_WATCH_ID 6
#define ETCHCONFIGKEY_IS_LOG_TO_FILE 7
#define ETCHCONFIGKEY_IS_LOG_TO_CONSOLE 8
#define ETCHCONFIGKEY_IS_VALIDATE_ON_READ 9
#define ETCHCONFIGKEY_IS_VALIDATE_ON_WRITE 10
#define ETCHCONFIGKEY_MAX_LOGFILES 11
#define ETCHCONFIGKEY_MAX_LOGLINES 12
#define ETCHCONFIGKEY_IS_DESTROY_MESSAGES_WITH_MAILBOX 13
#define ETCHCONFIGKEY_IS_DISPLAY_MEMORY_LEAK_DETAIL 14
#define ETCHCONFIGKEY_DEFAULT_MAILBOX_READ_WAITMS 15
#define ETCHCONFIGKEY_SLEEP_SECONDS_PRIOR_CLIENT_EXIT 16
/**
* configuration items
* the config struct and global are defined in etch.h - copied here for reference
*/
#if(0)
typedef struct etch_config
{
int memory_watch_id; /* memory alloc id */
int default_mailbox_read_waitms;
int sleepSecondsPriorClientExit; /* for use when stepping thru server */
int max_log_files; /* max log files in a single log directory */
int max_log_lines; /* max lines in a single log file */
int loglevel; /* computed 0, 1, 2, 3, 4 */
unsigned char log_level; /* X, D, I, W, E */
unsigned char is_log_to_file;
unsigned char is_log_to_console;
unsigned char is_validate_on_write;
unsigned char is_validate_on_read;
unsigned char is_log_memory_leak_detail;
unsigned char is_destroy_messages_with_mailbox;
char example_string[ETCHCONFIGDEF_EXAMPLE_STRING_MAXLEN+1];
} etch_config;
etch_config config; /* global config items */
#endif
int etch_read_configfile();
int etch_reset_config (const int is_client);
int get_etch_loglevel (const unsigned char);
#endif /* #ifndef ETCHCONFIG_H */