* fixed for 1.0.x

This commit is contained in:
peter 2003-09-28 09:38:17 +00:00
parent 9419bb3993
commit 94a60f4975

View File

@ -25,11 +25,11 @@ type
TAsyncData = record
IsRunning, DoBreak: Boolean;
HasCallbacks: Boolean; // True as long as callbacks are set
HasCallbacks: Boolean; // True as long as callbacks are set
FirstTimer: Pointer;
FirstIOCallback: Pointer;
CurIOCallback: Pointer; // current callback being processed within 'run'
NextIOCallback: Pointer; // next callback to get processed within 'run'
CurIOCallback: Pointer; // current callback being processed within 'run'
NextIOCallback: Pointer; // next callback to get processed within 'run'
FDData: Pointer;
HighestHandle: LongInt;
end;
@ -108,24 +108,34 @@ begin
begin
CurIOCallback := PIOCallbackData(Handle^.Data.CurIOCallback);
Handle^.Data.NextIOCallback := CurIOCallback^.Next;
if ({$ifdef VER1_0}FD_IsSet{$else}fpFD_ISSET{$endif}(CurIOCallback^.IOHandle,CurReadFDSet)>=0) and
({$ifdef VER1_0}FD_IsSet{$else}fpFD_ISSET{$endif}(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[0])>=0) and
Assigned(CurIOCallback^.ReadCallback) then
{$ifdef VER1_0}
if (FD_IsSet(CurIOCallback^.IOHandle,CurReadFDSet)) and
(FD_IsSet(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[0])) and
{$else}
if (fpFD_ISSET(CurIOCallback^.IOHandle,CurReadFDSet)>=0) and
(fpFD_ISSET(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[0])>=0) and
{$endif}
Assigned(CurIOCallback^.ReadCallback) then
begin
CurIOCallback^.ReadCallback(CurIOCallback^.ReadUserData);
if Handle^.Data.DoBreak then
break;
CurIOCallback^.ReadCallback(CurIOCallback^.ReadUserData);
if Handle^.Data.DoBreak then
break;
end;
CurIOCallback := PIOCallbackData(Handle^.Data.CurIOCallback);
if Assigned(CurIOCallback) and
({$ifdef VER1_0}FD_IsSet{$else}fpFD_ISSET{$endif}(CurIOCallback^.IOHandle, CurWriteFDSet)>=0) and
({$ifdef VER1_0}FD_IsSet{$else}fpFD_ISSET{$endif}(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[1])>=0) and
Assigned(CurIOCallback^.WriteCallback) then
{$ifdef VER1_0}
(FD_IsSet(CurIOCallback^.IOHandle, CurWriteFDSet)) and
(FD_IsSet(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[1])) and
{$else}
(fpFD_ISSET(CurIOCallback^.IOHandle, CurWriteFDSet)>=0) and
(fpFD_ISSET(CurIOCallback^.IOHandle, PFDSet(Handle^.Data.FDData)[1])>=0) and
{$endif}
Assigned(CurIOCallback^.WriteCallback) then
begin
CurIOCallback^.WriteCallback(CurIOCallback^.WriteUserData);
if Handle^.Data.DoBreak then
break;
CurIOCallback^.WriteCallback(CurIOCallback^.WriteUserData);
if Handle^.Data.DoBreak then
break;
end;
Handle^.Data.CurIOCallback := Handle^.Data.NextIOCallback;
@ -173,9 +183,9 @@ begin
Open_RdWr:
begin
if cbRead in CallbackTypes then
{$ifdef VER1_0}FD_Set{$else}fpFD_SET{$endif}(Data^.IOHandle, PFDSet(Handle^.Data.FDData)[0]);
if cbWrite in CallbackTypes then
{$ifdef VER1_0}FD_Set{$else}fpFD_SET{$endif}(Data^.IOHandle, PFDSet(Handle^.Data.FDData)[1]);
{$ifdef VER1_0}FD_Set{$else}fpFD_SET{$endif}(Data^.IOHandle, PFDSet(Handle^.Data.FDData)[0]);
if cbWrite in CallbackTypes then
{$ifdef VER1_0}FD_Set{$else}fpFD_SET{$endif}(Data^.IOHandle, PFDSet(Handle^.Data.FDData)[1]);
end;
end;
end;
@ -193,10 +203,11 @@ function asyncGetTicks: Int64; cdecl;
var
Time: TimeVal;
begin
fpGetTimeOfDay({$ifndef ver1_0}@time,nil{$else}time{$endif});
{$ifdef ver1_0}
GetTimeOfDay(time);
Result := Int64(Time.Sec) * 1000 + Int64(Time.USec div 1000);
{$else}
fpGetTimeOfDay(@time,nil);
Result := Int64(Time.tv_Sec) * 1000 + Int64(Time.tv_USec div 1000);
{$endif}
end;
@ -207,7 +218,10 @@ end.
{
$Log$
Revision 1.6 2003-09-19 17:46:23 marco
Revision 1.7 2003-09-28 09:38:17 peter
* fixed for 1.0.x
Revision 1.6 2003/09/19 17:46:23 marco
* Unix reform stage III aftermath
Revision 1.5 2002/09/25 21:53:39 sg