00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "PingStats.h"
00010 #include <math.h>
00011
00012 @implementation PingStats
00013
00014 - (id) init {
00015 self = [super init];
00016 if (self != nil) {
00017 iloss_sc = 0;
00018 iloss_cs = 0;
00019 tloss_sc = 0;
00020 tloss_cs = 0;
00021 lag = 0;
00022 av = 0;
00023 sd = 0;
00024 }
00025 return self;
00026 }
00027
00028 - (void) setIncrementalLossServerToClient: (int) rate_sc ClientToServer: (int) rate_cs {
00029 iloss_sc = rate_sc;
00030 iloss_cs = rate_cs;
00031 }
00032
00033 - (void) setTotalLossServerToClient: (int) rate_sc ClientToServer: (int) rate_cs {
00034 tloss_sc = rate_sc;
00035 tloss_cs = rate_cs;
00036 }
00037
00038 - (void) setLag: (int)newLag {
00039 lag = newLag;
00040 }
00041
00042 - (void) setRoundTripTime: (int)time {
00043 av = time;
00044 }
00045
00046 - (void) setStandardDeviation: (int)deviation {
00047 sd = deviation;
00048 }
00049
00050 - (int) incrementalLossFromServerToClient {
00051 return iloss_sc;
00052 }
00053
00054 - (int) incrementalLossFromClientToServer {
00055 return iloss_cs;
00056 }
00057
00058 - (int) totalLossFromServerToClient {
00059 return tloss_sc;
00060 }
00061
00062 - (int) totalLossFromClientToServer {
00063 return tloss_cs;
00064 }
00065
00066 - (int) lagOfLastPing {
00067 return lag;
00068 }
00069
00070 - (int) roundTripTime {
00071 return av;
00072 }
00073
00074 - (int) standardDeviation {
00075 return av;
00076 }
00077
00078 - (void) calculateLag {
00079
00080 double s2;
00081 int sum;
00082 int n;
00083
00084 if (lag > 2000) {
00085
00086 return;
00087 }
00088
00089 sum += lag;
00090 s2 += (lag * lag);
00091
00092 if (++n != 1) {
00093 av = sum / n;
00094 sd = sqrt((double)((s2 - av * sum) / (n - 1)));
00095 }
00096 }
00097
00098 @end