blob: 4914d4f4af86dd5b394c32db448365d0f1f4dcfe [file] [log] [blame]
/** @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