00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef _I_REC_PROCESS_H_
00025 #define _I_REC_PROCESS_H_
00026 
00027 #include "I_RecCore.h"
00028 #include "I_EventSystem.h"
00029 
00030 
00031 
00032 
00033 
00034 int RecProcessInit(RecModeT mode_type, Diags * diags = NULL);
00035 int RecProcessInitMessage(RecModeT mode_type);
00036 int RecProcessStart(void);
00037 
00038 
00039 
00040 
00041 void RecProcess_set_raw_stat_sync_interval_ms(int ms);
00042 void RecProcess_set_config_update_interval_ms(int ms);
00043 void RecProcess_set_remote_sync_interval_ms(int ms);
00044 
00045 
00046 
00047 
00048 RecRawStatBlock *RecAllocateRawStatBlock(int num_stats);
00049 
00050 int _RecRegisterRawStat(RecRawStatBlock * rsb, RecT rec_type, const char *name, RecDataT data_type, RecPersistT persist_type, int id, RecRawStatSyncCb sync_cb);
00051 #define RecRegisterRawStat(rsb, rec_type, name, data_type, persist_type, id, sync_cb) \
00052   _RecRegisterRawStat((rsb), (rec_type), (name), (data_type), REC_PERSISTENCE_TYPE(persist_type), (id), (sync_cb))
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 int RecRawStatSyncSum(const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id);
00069 int RecRawStatSyncCount(const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id);
00070 int RecRawStatSyncAvg(const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id);
00071 int RecRawStatSyncHrTimeAvg(const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id);
00072 int RecRawStatSyncIntMsecsToFloatSeconds(const char *name, RecDataT data_type,
00073                                          RecData * data, RecRawStatBlock * rsb, int id);
00074 int RecRawStatSyncMHrTimeAvg(const char *name, RecDataT data_type, RecData * data, RecRawStatBlock * rsb, int id);
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 inline int RecIncrRawStat(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr = 1);
00085 inline int RecIncrRawStatSum(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr = 1);
00086 inline int RecIncrRawStatCount(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr = 1);
00087 int RecIncrRawStatBlock(RecRawStatBlock * rsb, EThread * ethread, RecRawStat * stat_array);
00088 
00089 int RecSetRawStatSum(RecRawStatBlock * rsb, int id, int64_t data);
00090 int RecSetRawStatCount(RecRawStatBlock * rsb, int id, int64_t data);
00091 int RecSetRawStatBlock(RecRawStatBlock * rsb, RecRawStat * stat_array);
00092 
00093 int RecGetRawStatSum(RecRawStatBlock * rsb, int id, int64_t * data);
00094 int RecGetRawStatCount(RecRawStatBlock * rsb, int id, int64_t * data);
00095 
00096 
00097 
00098 
00099 
00100 int RecIncrGlobalRawStat(RecRawStatBlock * rsb, int id, int64_t incr = 1);
00101 int RecIncrGlobalRawStatSum(RecRawStatBlock * rsb, int id, int64_t incr = 1);
00102 int RecIncrGlobalRawStatCount(RecRawStatBlock * rsb, int id, int64_t incr = 1);
00103 
00104 int RecSetGlobalRawStatSum(RecRawStatBlock * rsb, int id, int64_t data);
00105 int RecSetGlobalRawStatCount(RecRawStatBlock * rsb, int id, int64_t data);
00106 
00107 int RecGetGlobalRawStatSum(RecRawStatBlock * rsb, int id, int64_t * data);
00108 int RecGetGlobalRawStatCount(RecRawStatBlock * rsb, int id, int64_t * data);
00109 
00110 RecRawStat *RecGetGlobalRawStatPtr(RecRawStatBlock * rsb, int id);
00111 int64_t *RecGetGlobalRawStatSumPtr(RecRawStatBlock * rsb, int id);
00112 int64_t *RecGetGlobalRawStatCountPtr(RecRawStatBlock * rsb, int id);
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 inline RecRawStat *
00121 raw_stat_get_tlp(RecRawStatBlock * rsb, int id, EThread * ethread)
00122 {
00123   ink_assert((id >= 0) && (id < rsb->max_stats));
00124   if (ethread == NULL) {
00125     ethread = this_ethread();
00126   }
00127   return (((RecRawStat *) ((char *) (ethread) + rsb->ethr_stat_offset)) + id);
00128 }
00129 
00130 inline int
00131 RecIncrRawStat(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr)
00132 {
00133   RecRawStat *tlp = raw_stat_get_tlp(rsb, id, ethread);
00134   tlp->sum += incr;
00135   tlp->count += 1;
00136   return REC_ERR_OKAY;
00137 }
00138 
00139 inline int
00140 RecDecrRawStat(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t decr)
00141 {
00142   RecRawStat *tlp = raw_stat_get_tlp(rsb, id, ethread);
00143   tlp->sum -= decr;
00144   tlp->count += 1;
00145   return REC_ERR_OKAY;
00146 }
00147 
00148 inline int
00149 RecIncrRawStatSum(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr)
00150 {
00151   RecRawStat *tlp = raw_stat_get_tlp(rsb, id, ethread);
00152   tlp->sum += incr;
00153   return REC_ERR_OKAY;
00154 }
00155 
00156 inline int
00157 RecIncrRawStatCount(RecRawStatBlock * rsb, EThread * ethread, int id, int64_t incr)
00158 {
00159   RecRawStat *tlp = raw_stat_get_tlp(rsb, id, ethread);
00160   tlp->count += incr;
00161   return REC_ERR_OKAY;
00162 }
00163 
00164 #endif