1: #NS2_有线部分\EndDelay.awk
2:
3: BEGIN {
4:     #Initialize the variable
5:     MaxID = 0;
6:     i = 0;
7: }
8:
9: {
10: #Event Abbreviation Type Value
11: #%g %d %d %s %d %s %d %d.%d %d.%d %d %d
12: #Normal Event
13:         #r: Receive
14:         #d: Drop
15:         #e: Error
16:         #+: Enqueue
17:         #-: Dequeue
18: #double  Time
19: #int  (Link-layer) Source Node
20: #int  (Link-layer) Destination Node
21: #string  Packet Name
22: #int  Packet Size
23: #string  Flags
24: #int  Flow ID
25: #int  (Network-layer) Source Address
26: #int  Source Port
27: #int  (Network-layer) Destination Address
28: #int  Destination Port
29: #int  Sequence Number
30: #int  Unique Packet ID
31:
32:     #Evaluate the fields to new viariables
33:     EVENT       = $1;
34:     TIME        = $2;
35:     SRCNODE     = $3
36:     DSTNODE     = $4;
37:     PKTNAME     = $5;
38:     PKTSIZE     = $6;
39:     FLAGS       = $7;
40:     FLOWID      = $8;
41:     SRCADDPORT  = $9;
42:     DSTADDPORT  = $10;
43:     SEQNO       = $11;
44:     PKTID       = $12;
45:
46:     #Record the maxmum
47:     if (PKTID > MaxID)
48:         MaxID = PKTID;
49:
50:     #Record the transmitter time
51:     if (StartTime[PKTID] == 0)
52:         StartTime[PKTID] = TIME;
53:
54:
55:     if (EVENT == "r" && FLOWID == 1)
56:     {
57: #        printf("after: %s\t%d\t%s\n", EVENT, FLOWID, TIME);
58:         EndTime[PKTID] = TIME;
59: #        printf("%g %d %d %s %d %s %d %d.%d %d.%d %d %d\n", EVENT, TIME, FLOWID, PKTID);
60: #        printf("after: %s    %d    %s    %d\n", EVENT, FLOWID, EndTime[PKTID], PKTID);
61: #        if (EVENT == "r")
62: #        {
63: #            EndTime[PKTID] = TIME;
64: #        }
65:
66:     }
67:     else
68:     {
69:         EndTime[PKTID] = -1;
70:
71:     }
72:
73:
74: }
75:
76: END {
77:     for (PKTID = 0; PKTID <= MaxID; PKTID ++)
78:     {
79:         Start = StartTime[PKTID];
80:         End = EndTime[PKTID];
81:         Delay = End - Start;
82:         if (Delay >= 0)
83:             printf("%f\t%f\n", Start, Delay);
84: #        packet_duration = EndTime[PKTID] - StartTime[PKTID];
85:
86: #            printf("%f\t%f\n", start, packet_duration);
87:     }
88: }
89: