Comm/PingStats.m

00001 //-------------------------------------------
00002 // File:  PingStats.m
00003 // Class: PingStats
00004 // 
00005 // Created by Chris Lukassen 
00006 // Copyright (c) 2006 Luky Soft
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;   // inc % loss 0--100, server to client
00018         iloss_cs = 0;   // inc % loss 0--100, client to server
00019         tloss_sc = 0;   // total % loss 0--100, server to client
00020         tloss_cs = 0;   // total % loss 0--100, client to server
00021         lag = 0;                // delay in ms of last ping
00022         av = 0;         // rt time
00023         sd = 0;         // std deviation
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                 // probably ghostbusted
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

Generated on Sat Aug 26 21:14:10 2006 for MacTrek by  doxygen 1.4.7