AmendHub

Download (as of this amendment):

julienxx

/

EasyNet

/

amendments

/

8

refact GiveTime -> Deadline/Idle


julienxx made amendment 8 about 14 hours ago
--- EasyNet.c Sun Oct 25 17:40:19 2026 +++ EasyNet.c Sun Oct 25 18:33:43 2026 @@ -10,11 +10,19 @@ struct EasyNetConn { UInt32 timeoutTicks; }; -static void GiveTime(void) +static UInt32 Deadline(EasyNetConn *conn) { + return TickCount() + conn->timeoutTicks; +} + +static Boolean Idle(UInt32 deadline) +{ EventRecord event; + if(TickCount() > deadline) + return false; WaitNextEvent(0, &event, 1, NULL); + return true; } OSStatus EasyNet_Init(void) @@ -77,7 +85,7 @@ OSStatus EasyNet_Connect(const char *host, UInt16 port err = kOTNoDataErr; /* wait for conn */ - deadline = TickCount() + conn->timeoutTicks; + deadline = Deadline(conn); while(err == kOTNoDataErr) { event = OTLook(conn->ep); if(event == T_CONNECT) { @@ -85,10 +93,8 @@ OSStatus EasyNet_Connect(const char *host, UInt16 port } else if(event == T_DISCONNECT) { OTRcvDisconnect(conn->ep, NULL); err = kEasyNetConnectFailedErr; - } else if(TickCount() > deadline) { + } else if(!Idle(deadline)) { err = kEasyNetTimeoutErr; - } else { - GiveTime(); } } if(err != noErr) @@ -110,17 +116,16 @@ OSStatus EasyNet_Send(EasyNetConn *conn, const void *d OTResult result; UInt32 deadline; - deadline = TickCount() + conn->timeoutTicks; + deadline = Deadline(conn); while(length > 0) { result = OTSnd(conn->ep, (void *) p, length, 0); if(result >0) { p+= result; length -= result; - deadline = TickCount() + conn->timeoutTicks; + deadline = Deadline(conn); } else if(result == kOTFlowErr) { - if(TickCount() > deadline) + if(!Idle(deadline)) return kEasyNetTimeoutErr; - GiveTime(); } else if(result == kOTLookErr) { return kEasyNetDisconnectedErr; } else { @@ -162,9 +167,8 @@ long EasyNet_Receive(EasyNetConn *conn, void *buf, lon return result; } - if(TickCount() > deadline) + if(!Idle(deadline)) return kEasyNetTimeoutErr; - GiveTime(); } }