141 AddFileLog('[IPC in] '+s[1]+' ticks '+IntToStr(lastcmd^.loTime)); |
141 AddFileLog('[IPC in] '+s[1]+' ticks '+IntToStr(lastcmd^.loTime)); |
142 end |
142 end |
143 end; |
143 end; |
144 |
144 |
145 procedure IPCCheckSock; |
145 procedure IPCCheckSock; |
146 const ss: shortstring = ''; |
|
147 var i: LongInt; |
146 var i: LongInt; |
148 s: shortstring; |
147 s: shortstring; |
149 begin |
148 begin |
150 if IPCSock = nil then |
149 if IPCSock = nil then |
151 exit; |
150 exit; |
152 |
151 |
153 fds^.numsockets:= 0; |
152 fds^.numsockets:= 0; |
154 SDLNet_AddSocket(fds, IPCSock); |
153 SDLNet_AddSocket(fds, IPCSock); |
155 |
154 |
156 while SDLNet_CheckSockets(fds, 0) > 0 do |
155 while SDLNet_CheckSockets(fds, 0) > 0 do |
157 begin |
156 begin |
158 i:= SDLNet_TCP_Recv(IPCSock, @s[1], 255 - Length(ss)); |
157 i:= SDLNet_TCP_Recv(IPCSock, @s[1], 255 - Length(SocketString)); |
159 if i > 0 then |
158 if i > 0 then |
160 begin |
159 begin |
161 s[0]:= char(i); |
160 s[0]:= char(i); |
162 ss:= ss + s; |
161 SocketString:= SocketString + s; |
163 while (Length(ss) > 1) and (Length(ss) > byte(ss[1])) do |
162 while (Length(SocketString) > 1) and (Length(SocketString) > byte(SocketString[1])) do |
164 begin |
163 begin |
165 ParseIPCCommand(copy(ss, 2, byte(ss[1]))); |
164 ParseIPCCommand(copy(SocketString, 2, byte(SocketString[1]))); |
166 Delete(ss, 1, Succ(byte(ss[1]))) |
165 Delete(SocketString, 1, Succ(byte(SocketString[1]))) |
167 end |
166 end |
168 end |
167 end |
169 else |
168 else |
170 OutError('IPC connection lost', true) |
169 OutError('IPC connection lost', true) |
171 end; |
170 end; |