ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/client/FBEvents.pas
(Generate patch)

Comparing ibx/trunk/fbintf/client/FBEvents.pas (file contents):
Revision 47 by tony, Mon Jan 9 15:31:51 2017 UTC vs.
Revision 263 by tony, Thu Dec 6 15:55:01 2018 UTC

# Line 60 | Line 60
60   {                                                                        }
61   {************************************************************************}
62   unit FBEvents;
63 + {$IFDEF MSWINDOWS}
64 + {$DEFINE WINDOWS}
65 + {$ENDIF}
66  
67   {$IFDEF FPC}
68 < {$mode objfpc}{$H+}
68 > {$mode delphi}
69   {$interfaces COM}
70   {$ENDIF}
71  
# Line 80 | Line 83 | type
83      FEvents: TStringList;
84      FAttachment: IAttachment;
85      FEventCounts: TEventCounts;
86 +    FFirebirdClientAPI: TFBClientAPI;
87    protected
88 <    FEventBuffer: PChar;
88 >    FEventBuffer: PByte;
89      FEventBufferLen: integer;
90 <    FResultBuffer: PChar;
90 >    FResultBuffer: PByte;
91      FEventHandler: TEventHandler;
92      FCriticalSection: TCriticalSection;
93      FInWaitState: boolean;
# Line 99 | Line 103 | type
103      {IEvents}
104      procedure GetEvents(EventNames: TStrings);
105      procedure SetEvents(EventNames: TStrings); overload;
106 <    procedure SetEvents(Event: string); overload;
106 >    procedure SetEvents(Event: AnsiString); overload;
107      procedure Cancel;
108      function ExtractEventCounts: TEventCounts;
109      function GetAttachment: IAttachment;
# Line 119 | Line 123 | const
123   procedure TFBEvents.CreateEventBlock;
124   var
125    i: integer;
126 <  EventNames: array of PChar;
126 >  EventNames: array of PAnsiChar;
127 >  EventName: AnsiString;
128   begin
129 <  with FirebirdClientAPI do
129 >  with FFirebirdClientAPI do
130    begin
131      if FEventBuffer <> nil then
132        isc_free( FEventBuffer);
# Line 133 | Line 138 | begin
138      setlength(EventNames,MaxEvents);
139      try
140        for i := 0 to FEvents.Count-1 do
141 <        EventNames[i] := PChar(FEvents[i]);
141 >      begin
142 >        EventName := FEvents[i];
143 >        EventNames[i] := PAnsiChar(EventName);
144 >      end;
145  
146        FEventBufferlen := isc_event_block(@FEventBuffer,@FResultBuffer,
147                            FEvents.Count,
# Line 186 | Line 194 | begin
194  
195    FillChar(EventCountList,sizeof(EventCountList),0);
196  
197 <  with FirebirdClientAPI do
197 >  with FFirebirdClientAPI do
198       isc_event_counts( @EventCountList, FEventBufferLen, FEventBuffer, FResultBuffer);
199    j := 0;
200 <  P := EventCountList;
200 >  P := @EventCountList;
201    for i := 0 to FEvents.Count - 1 do
202    begin
203      if EventCountList[i] <> 0 then
# Line 209 | Line 217 | constructor TFBEvents.Create(DBAttachmen
217   begin
218    inherited Create(aMonitor);
219    FAttachment := DBAttachment;
220 +  FFirebirdClientAPI := DBAttachment.getFirebirdAPI as TFBClientAPI;
221    if Events.Count > MaxEvents then
222      IBError(ibxeMaximumEvents, [nil]);
223  
# Line 222 | Line 231 | destructor TFBEvents.Destroy;
231   begin
232    if assigned(FCriticalSection) then FCriticalSection.Free;
233    if assigned(FEvents) then FEvents.Free;
234 <  with FirebirdClientAPI do
234 >  with FFirebirdClientAPI do
235    begin
236      if FEventBuffer <> nil then
237        isc_free( FEventBuffer);
# Line 239 | Line 248 | end;
248  
249   procedure TFBEvents.SetEvents(EventNames: TStrings);
250   begin
251 +  {$ifdef Unix}
252 +  if (EventNames.Count > 0) and not IsMultiThread then
253 +    IBError(ibxeMultiThreadRequired,['Firebird Events Handling']);
254 +  {$endif}
255    if EventNames.Text <> FEvents.Text then
256    begin
257      Cancel;
# Line 247 | Line 260 | begin
260    end;
261   end;
262  
263 < procedure TFBEvents.SetEvents(Event: string);
263 > procedure TFBEvents.SetEvents(Event: AnsiString);
264   var S: TStringList;
265   begin
266    S := TStringList.Create;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines