You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by je...@apache.org on 2010/11/04 03:23:00 UTC
svn commit: r1030805 - in /trafficserver/traffic/trunk:
librecords/P_RecCore.h librecords/P_RecDefs.h librecords/RecCore.cc
proxy/InkAPI.cc proxy/api/ts/ts.h
Author: jesus
Date: Thu Nov 4 02:23:00 2010
New Revision: 1030805
URL: http://svn.apache.org/viewvc?rev=1030805&view=rev
Log:
TS-508
Generalize RecDumpRecordsHt to use RecDumpRecords which is a callback/map pattern.
Map this into InkAPI with the new
INKRecordDump(INKRecordType rec_type, INKRecordDumpCb callback, void *edata)
function. This doesn't change any APIs, introduces one and should cause no
functional changes in the product.
Documentation of the INKRecordDump function is still required in ts.h
Modified:
trafficserver/traffic/trunk/librecords/P_RecCore.h
trafficserver/traffic/trunk/librecords/P_RecDefs.h
trafficserver/traffic/trunk/librecords/RecCore.cc
trafficserver/traffic/trunk/proxy/InkAPI.cc
trafficserver/traffic/trunk/proxy/api/ts/ts.h
Modified: trafficserver/traffic/trunk/librecords/P_RecCore.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/librecords/P_RecCore.h?rev=1030805&r1=1030804&r2=1030805&view=diff
==============================================================================
--- trafficserver/traffic/trunk/librecords/P_RecCore.h (original)
+++ trafficserver/traffic/trunk/librecords/P_RecCore.h Thu Nov 4 02:23:00 2010
@@ -98,4 +98,7 @@ int RecExecRawStatUpdateFuncs();
void RecDumpRecordsHt(RecT rec_type = RECT_NULL);
+void
+RecDumpRecords(RecT rec_type, RecDumpEntryCb callback, void *edata);
+
#endif
Modified: trafficserver/traffic/trunk/librecords/P_RecDefs.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/librecords/P_RecDefs.h?rev=1030805&r1=1030804&r2=1030805&view=diff
==============================================================================
--- trafficserver/traffic/trunk/librecords/P_RecDefs.h (original)
+++ trafficserver/traffic/trunk/librecords/P_RecDefs.h Thu Nov 4 02:23:00 2010
@@ -171,6 +171,8 @@ struct RecMessageItr
typedef RecMessageHdr RecMessage;
+typedef void (*RecDumpEntryCb) (RecT rec_type, void *edata, int registered, const char *name, int data_type, RecData *datum);
+
typedef int (*RecMessageRecvCb) (RecMessage * msg, RecMessageT msg_type, void *cookie);
#endif
Modified: trafficserver/traffic/trunk/librecords/RecCore.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/librecords/RecCore.cc?rev=1030805&r1=1030804&r2=1030805&view=diff
==============================================================================
--- trafficserver/traffic/trunk/librecords/RecCore.cc (original)
+++ trafficserver/traffic/trunk/librecords/RecCore.cc Thu Nov 4 02:23:00 2010
@@ -878,42 +878,52 @@ RecForceInsert(RecRecord * record)
//-------------------------------------------------------------------------
// RecDumpRecordsHt
//-------------------------------------------------------------------------
+
+static void
+debug_record_callback(RecT rec_type, void *edata, int registered, const char *name, int data_type, RecData *datum)
+{
+ switch(data_type) {
+ case RECD_INT:
+ RecDebug(DL_Note, " ([%d] '%s', '%lld')", registered, name, datum->rec_int);
+ break;
+ case RECD_FLOAT:
+ RecDebug(DL_Note, " ([%d] '%s', '%f')", registered, name, datum->rec_float);
+ break;
+ case RECD_STRING:
+ RecDebug(DL_Note, " ([%d] '%s', '%s')",
+ registered, name, datum->rec_string ? datum->rec_string : "NULL");
+ break;
+ case RECD_COUNTER:
+ RecDebug(DL_Note, " ([%d] '%s', '%lld')", registered, name, datum->rec_counter);
+ break;
+ default:
+ RecDebug(DL_Note, " ([%d] '%s', <? ? ?>)", registered, name);
+ break;
+ }
+}
void
-RecDumpRecordsHt(RecT rec_type)
+RecDumpRecords(RecT rec_type, RecDumpEntryCb callback, void *edata)
{
int i, num_records;
- RecDebug(DL_Note, "Dumping Records:");
-
num_records = g_num_records;
for (i = 0; i < num_records; i++) {
RecRecord *r = &(g_records[i]);
if ((rec_type == RECT_NULL) || (rec_type == r->rec_type)) {
rec_mutex_acquire(&(r->lock));
- switch (r->data_type) {
- case RECD_INT:
- RecDebug(DL_Note, " ([%d] '%s', '%lld')", r->registered, r->name, r->data.rec_int);
- break;
- case RECD_FLOAT:
- RecDebug(DL_Note, " ([%d] '%s', '%f')", r->registered, r->name, r->data.rec_float);
- break;
- case RECD_STRING:
- RecDebug(DL_Note, " ([%d] '%s', '%s')",
- r->registered, r->name, r->data.rec_string ? r->data.rec_string : "NULL");
- break;
- case RECD_COUNTER:
- RecDebug(DL_Note, " ([%d] '%s', '%lld')", r->registered, r->name, r->data.rec_counter);
- break;
- default:
- RecDebug(DL_Note, " ([%d] '%s', <? ? ?>)", r->registered, r->name);
- break;
- }
+ callback(rec_type, edata, r->registered, r->name, r->data_type, &r->data);
rec_mutex_release(&(r->lock));
}
}
}
void
+RecDumpRecordsHt(RecT rec_type) {
+ RecDebug(DL_Note, "Dumping Records:");
+ RecDumpRecords(rec_type, debug_record_callback, NULL);
+}
+
+void
RecGetRecordTree(char *subtree)
{
RecTree *tree = g_records_tree;
Modified: trafficserver/traffic/trunk/proxy/InkAPI.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPI.cc?rev=1030805&r1=1030804&r2=1030805&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPI.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPI.cc Thu Nov 4 02:23:00 2010
@@ -8229,4 +8229,10 @@ INKAIOThreadNumSet(int thread_num)
}
}
+void
+INKRecordDump(INKRecordType rec_type, INKRecordDumpCb callback, void *edata)
+{
+ RecDumpRecords((RecT)rec_type, (RecDumpEntryCb)callback, edata);
+}
+
#endif //INK_NO_API
Modified: trafficserver/traffic/trunk/proxy/api/ts/ts.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/api/ts/ts.h?rev=1030805&r1=1030804&r2=1030805&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/api/ts/ts.h (original)
+++ trafficserver/traffic/trunk/proxy/api/ts/ts.h Thu Nov 4 02:23:00 2010
@@ -2506,6 +2506,43 @@ extern "C"
typedef void *INKTextLogObject;
/**
+ This type represents a context for data records.
+ */
+ typedef enum
+ {
+ INK_RECORDTYPE_NULL = 0,
+ INK_RECORDTYPE_CONFIG,
+ INK_RECORDTYPE_PROCESS,
+ INK_RECORDTYPE_NODE,
+ INK_RECORDTYPE_CLUSTER,
+ INK_RECORDTYPE_LOCAL,
+ INK_RECORDTYPE_PLUGIN,
+ INK_RECORDTYPE_MAX
+ } INKRecordType;
+
+ typedef enum
+ {
+ INK_RECORDDATATYPE_NULL = 0,
+ INK_RECORDDATATYPE_INT,
+ INK_RECORDDATATYPE_FLOAT,
+ INK_RECORDDATATYPE_STRING,
+ INK_RECORDDATATYPE_COUNTER,
+ INK_RECORDDATATYPE_MAX
+ } INKRecordDataType;
+
+ typedef union
+ {
+ int64 rec_int;
+ float rec_float;
+ char *rec_string;
+ int64 rec_counter;
+ } INKRecordData;
+
+ typedef void (*INKRecordDumpCb) (INKRecordType rec_type, void *edata, int registered, const char *name, INKRecordDataType data_type, INKRecordData *datum);
+
+ inkapi void INKRecordDump(INKRecordType rec_type, INKRecordDumpCb callback, void *edata);
+
+ /**
Creates a new custom log file that your plugin can write to. You
can design the fields and inputs to the log file using the