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();
}
}