| /** @file |
| |
| Public Rec defines and types |
| |
| @section license License |
| |
| 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. |
| */ |
| |
| #ifndef _I_REC_DEFS_H_ |
| #define _I_REC_DEFS_H_ |
| |
| #include "Compatability.h" |
| #include "ink_mutex.h" |
| #include "ink_rwlock.h" |
| #include "I_RecMutex.h" |
| |
| #define STAT_PROCESSOR |
| |
| //------------------------------------------------------------------------- |
| // Error Values |
| //------------------------------------------------------------------------- |
| |
| enum RecErrT |
| { |
| REC_ERR_FAIL = -1, |
| REC_ERR_OKAY = 0 |
| }; |
| |
| //------------------------------------------------------------------------- |
| // Types |
| //------------------------------------------------------------------------- |
| |
| #define RecStringNull NULL |
| |
| typedef ink64 RecInt; |
| typedef ink64 RecLLong; |
| typedef float RecFloat; |
| typedef char *RecString; |
| typedef const char *RecStringConst; |
| typedef ink64 RecCounter; |
| |
| enum RecT |
| { |
| RECT_NULL = 0, |
| RECT_CONFIG, |
| RECT_PROCESS, |
| RECT_NODE, |
| RECT_CLUSTER, |
| RECT_LOCAL, |
| RECT_PLUGIN, |
| RECT_MAX |
| }; |
| |
| enum RecDataT |
| { |
| RECD_NULL = 0, |
| RECD_INT, |
| RECD_FLOAT, |
| RECD_STRING, |
| RECD_COUNTER, |
| |
| #if defined(STAT_PROCESSOR) |
| RECD_STAT_CONST, // Added for the StatProcessor |
| RECD_STAT_FX, // Added for the StatProcessor |
| #endif |
| RECD_LLONG, |
| RECD_MAX |
| }; |
| |
| enum RecPersistT |
| { |
| RECP_NULL, |
| RECP_PERSISTENT, |
| RECP_NON_PERSISTENT |
| }; |
| |
| enum RecUpdateT |
| { |
| RECU_NULL, // default: don't know the behavior |
| RECU_DYNAMIC, // config can be updated dynamically w/ traffic_line -x |
| RECU_RESTART_TS, // config requires TS to be restarted to take effect |
| RECU_RESTART_TM, // config requires TM/TS to be restarted to take effect |
| RECU_RESTART_TC // config requires TC/TM/TS to be restarted to take effect |
| }; |
| |
| enum RecCheckT |
| { |
| RECC_NULL, // default: no check type defined |
| RECC_STR, // config is a string |
| RECC_INT, // config is an integer with a range |
| RECC_IP // config is an ip address |
| }; |
| |
| enum RecModeT |
| { |
| RECM_NULL, |
| RECM_CLIENT, |
| RECM_SERVER, |
| RECM_STAND_ALONE |
| }; |
| |
| enum RecAccessT |
| { |
| RECA_NULL, |
| RECA_NO_ACCESS, |
| RECA_READ_ONLY |
| }; |
| |
| //------------------------------------------------------------------------- |
| // Data Union |
| //------------------------------------------------------------------------- |
| |
| union RecData |
| { |
| RecInt rec_int; |
| RecLLong rec_llong; |
| RecFloat rec_float; |
| RecString rec_string; |
| RecCounter rec_counter; |
| }; |
| |
| //------------------------------------------------------------------------- |
| // RawStat Structures |
| //------------------------------------------------------------------------- |
| |
| struct RecRawStat |
| { |
| ink64 sum; |
| ink64 count; |
| // XXX - these will waist some space because they are only needed for the globals |
| // this is a fix for bug TS-162, so I am trying to do as few code changes as |
| // possible, this should be revisted -bcall |
| ink64 last_sum; // value from the last global sync |
| ink64 last_count; // value from the last global sync |
| }; |
| |
| // WARNING! It's advised that developers do not modify the contents of |
| // the RecRawStatBlock. ^_^ |
| |
| struct RecRawStatBlock |
| { |
| ink_off_t ethr_stat_offset; // thread local raw-stat storage |
| RecRawStat **global; // global raw-stat storage (ptr to RecRecord) |
| int num_stats; // number of stats in this block |
| int max_stats; // maximum number of stats for this block |
| ink_mutex mutex; |
| }; |
| |
| //------------------------------------------------------------------------- |
| // RecCore Callback Types |
| //------------------------------------------------------------------------- |
| |
| typedef int (*RecConfigUpdateCb) (const char *name, RecDataT data_type, RecData data, void *cookie); |
| |
| typedef int (*RecStatUpdateFunc) (const char *name, RecDataT data_type, |
| RecData * data, RecRawStatBlock * rsb, int id, void *cookie); |
| |
| typedef int (*RecRawStatSyncCb) (const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id); |
| |
| //------------------------------------------------------------------------- |
| // RecTree Defines |
| //------------------------------------------------------------------------- |
| |
| #define REC_VAR_NAME_DELIMITOR '.' |
| #define REC_VAR_NAME_WILDCARD '*' |
| |
| // System Defaults |
| extern char system_root_dir[PATH_NAME_MAX + 1]; |
| extern char system_local_state_dir[PATH_NAME_MAX + 1]; |
| extern char system_config_directory[PATH_NAME_MAX + 1]; |
| extern char system_log_dir[PATH_NAME_MAX + 1]; |
| |
| #endif |