Lists information about a tracing model element.
struct resbuf
*tpm_traceelemget(
ade_id trace_id,
ade_id elem_id);
Returns an information list in a resbuf or NULL
| trace_id | Tracing model ID returned by tpm_tracealloc |
| elem_id | Trace element ID |
The contents of a resbuf for a node element could be as follows.
| Restype | Resval |
|---|---|
| RTLB | |
| RTSHORT | -1 |
| RTSHORT | 1 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 40 |
| RTREAL | 0.000000 |
| RTDOTE |
The contents of a resbuf for a link element could be as follows.
| Restype | Resval |
|---|---|
| RTLB | |
| RTSHORT | -1 |
| RTSHORT | 2 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 1 |
| RTREAL | 9.000000 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 2 |
| RTREAL | 18.000000 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 40 |
| RTREAL | 3.000000 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 41 |
| RTREAL | 3.000000 |
| RTDOTE | |
| RTLB | |
| RTSHORT | 70 |
| RTSHORT | 0 |
| RTDOTE |
The list format depends on the element type. For each a-list, the first component is an integer code for the information type, and the second is the information.
| (-1 . elem_code) | Element type code (RTSHORT). With node lists, always 1, meaning node element. |
| (40 . resistance) | Node resistance (RTREAL). |
| (-1 . elem_code) | Element type code (RTSHORT). With link lists, always 2, meaning link element. |
| ( 1 . topo_id) | Topology ID of start node (RTREAL). |
| ( 2 . topo_id) | Topology ID of end node (RTREAL). |
| (40 . fwd_resist) | Forward resistance (RTREAL). |
| (41 . rev_resist) | Reverse resistance (RTREAL). |
| (70 . link_dir) | Link direction (RTSHORT): -1, 0, or 1. -1 = Reverse 0 = Bidirectional 1 = Forward |
The following sample opens a network trace topology for read using tpm_acopen(). A tracing model is allocated using tpm_tracealloc() with the topology id returned by tpm_acopen(). A trace element id is obtained using tpm_elemid(), which is used in the call to tpm_traceelemget(). A resbuf is populated with information associated with the specified element, a portion of which is then displayed. The resbuf is then released as required.
char* pszTopoName = "BestRouteTopology1";
int topoWriteAccess = 0;
ade_id topoId = tpm_acopen(pszTopoName, topoWriteAccess);
ade_id traceId = tpm_tracealloc(topoId, NULL, NULL, NULL, NULL);
int elementType = 2;
long elementIndex = 5;
ade_id elementID = tpm_elemid(topoId, elementType, elementIndex);
struct resbuf* pTraceElementInfoRb = tpm_traceelemget(traceId, elementID);
if (NULL != pTraceElementInfoRb){
struct resbuf* rb = pTraceElementInfoRb;
while(NULL != rb) {
if (rb->restype == RTSHORT) {
const int nTraceVal = rb->resval.rint;
switch(nTraceVal)
{
case 1:
acutPrintf(
"\nThe topology id of the starting node is: %0.lf"
, rb->rbnext->resval.rreal);
break;
case 70:
acutPrintf(
"\nThe element direction is: %d"
, rb->rbnext->resval.rint);
break;
default:
break;
}
}
rb = rb->rbnext;
}
}
else {
acutPrintf(
"\nThe specified element was not found.");
}
acutRelRb(pTraceElementInfoRb);
tpm_acclose(topoId);


