Subject Re[2]: [IBO] Kylix
Author Carlos H. Cantu
Jason, the enhanced features are great ! I can't wait to see it running :)


WarmBoot Informatica -
Interbase-BR -

JW> Dalton,

JW> Actually, I don't have an official list of things accomplished or that I
JW> hope to accomplish.

JW> Here's a rough sketch of what the major items are. There are actually a fair
JW> amount of smaller things I know I am going to forget until I make a focused
JW> effort to compile them all.

JW> Horizontal dataset refinement is the technical term for the most major
JW> feature I have added in. What this means is that you specify a base query
JW> which actually results in a significantly large dataset. (Like over 100K
JW> rows) Then, as you issue commands to the dataset to navigate among these
JW> records IBO will automatically refine itself to pull in those records of
JW> interest only. Internally this affected the buffers quite a bit. Before I
JW> could always assume that the buffer had the BOF position and that it
JW> wouldn't grow in that direction. Now my buffers have to be aware that they
JW> may need to pull in records at the beginning or the end or both if you have
JW> done a locate out in the middle somewhere. As long as you have proper
JW> indexes all dataset navigation commands should complete within 1 or two
JW> seconds. This makes using things like InfoPower with the TDataset stuff
JW> totally rock. Incremental searching is amazingly fast, for example.

JW> TDataset is handling these changes in dataset buffering architecture but
JW> unfortunately the naive IBO controls like TIB_Grid were much less tolerable
JW> to these changes. I am having to make significant alterations to TIB_Grid to
JW> support this more flexible buffering architecture. This is what is actually
JW> holding up the release of the general components to the masses.

JW> The next major feature is the ability to maintain client/side filtering of
JW> records. It is also possible to change the filter logic and refresh without
JW> having to refresh the dataset from the server. There is now a
JW> RefreshFilteredRows method that will recalculate the filtered status of all
JW> records in the buffer and adjust the dataset accordingly as if a refresh had
JW> been done. This has been coupled with the ability to show cached deleted
JW> records or not as well.

JW> CachedUpdates has received a lot of improvements in how it integrates with
JW> the server centric nature of IBO. These two opposed models are able to be
JW> harmonized quite a bit and IBO 4 takes it to a much more accurate and
JW> efficient level of integration.

JW> I have greatly enhanced the session level background processing mechanisms.
JW> Instead of using a timer on the session to fuel things like automatic
JW> Transaction OAT management I have designed and implemented an architecture
JW> that hooks you right into the IDLE cpu message notifications from windows.
JW> This produces much more fluid and efficient handling of background tasks
JW> that IBO relies upon happening.

JW> In addition to the changes above I have tied in other components to this new
JW> architecture. The IB_Events component and all components which descend from
JW> the TIB_Process class are hooked into the sessions ability to fuel passive
JW> processes via idle cpu cycles. Thus, TTimer components should not be
JW> necessary anymore with minimal setup. For the IB_Events, this also takes
JW> care of the synchronization of the event notifications. Part of the
JW> session's new architecture includes a WakeUp notification system designed
JW> just for this.

JW> I have developed a base class for writing NT Services with IBO. It is
JW> possible to write a simple service easy enough but to do it correctly there
JW> are some difficult points to iron out. It involved doing some things that
JW> took quite a bit of head scratching to get just right. The new session
JW> architecture for passive processing fits right into this as the service
JW> application executes in a passive manner.

JW> I have developed some components that are used to provide a top to bottom
JW> full(fuzzy) text searching solution. It isn't 100% server based as the index
JW> needs to be maintained by a client process but it is possible to use it from
JW> any client, whether IBO or not. You just have to have an IBO application
JW> running somewhere to maintain the index. All of the triggers to do it are
JW> build automatically. It also does logging of searches too, including
JW> internal server statistics for performance metering.

JW> I plan to also complete a simple replication module that will follow the
JW> same patter as the above search index maintaing components. There are some
JW> significant similarities in the process of maintain index tables and
JW> replicated tables. This is something I want to finish this week. I already
JW> have replication stuff in place, I just haven't made it generic for release.

JW> I am working on making IBO tolerate broken connections much better. Along
JW> with this, I am making it so that you can actually allow a transparent
JW> disconnect from the connection and when activity starts up again reconnect
JW> transparently. There will be timing configurations similar to the
JW> transaction OAT handling mechanisms. One example of how this could be useful
JW> is an application goes idle for 15 minutes and there are no active
JW> transactions. The app will simply let the connection handle go by
JW> disconnecting it. When the user returns they go to use their application and
JW> they are notified that the application is resuming itself. After it performs
JW> the reconnection it will reallocate all the statement handles and flag all
JW> queries to reprepare themselves.

JW> I have split up IBO into separate packages for better support of runtime
JW> packages. I also have specific designtime packages too. There will be four
JW> major runtime packages. Core components, tools/utility components, visual
JW> components and forms/dialogs. One designtime package will bring these into
JW> the IDE and this will be the native stuff. For the TDataset stuff it will
JW> need the core runtime and there will be a runtime just for the TDataset
JW> based classes. There will also be a separate designtime only package to
JW> bring these into the IDE. I will also have separate packages for the IBOWeb
JW> internet stuff, replication components and the full text components.

JW> Geoff introduced the usage of interfaces to make it easier to integrate
JW> controls into TIB_Grid and other external processing, like mask handling,
JW> into core IBO classes without requiring that the necessary files be compiled
JW> and hard linked to IBO. This will allow Geoff to maintain his components in
JW> separate packages from the IBO components. It will also allow me to have
JW> more "stable" releases and still allow 3rd party people to integrate with
JW> IBO better.

JW> I added in the ability to support macro processing in the SQL and other
JW> properties of the statement/dataset/script. Some of this work actually
JW> leaked into 3.6 because I needed it there. Pretend you never saw it there.
JW> <g> A number of other things that were to be 4 only leaked as well. I don't
JW> remember what all they were.

JW> I'm sure there is more but I'm itching to get back to coding... <g>

JW> Helen, please make a note of this email. This will help with our release
JW> notes.

JW> Regards,
JW> Jason Wharton
JW> CPS - Mesa AZ

JW> ----- Original Message -----
JW> From: "Dalton Calford" <dcalford@...>
JW> To: <>
JW> Sent: Monday, May 07, 2001 6:48 AM
JW> Subject: Re: [IBO] Kylix

>> Hi Jason,
>> I have seen you refer to IBO 4, but have not seen what you hope to have in
>> it. Do you have a .plan or .readme that details where you hope IB04 will
JW> be
>> when you release it?
>> best regards
>> Dalton
>> On Monday 07 May 2001 09:15, you wrote:
>> > Ken,
>> >
>> > Sorry I didn't answer this sooner.
>> > The port to Kylix will be completed soon after IBO 4 is completed.
>> > That is going to put it around June or July sometime.
>> > I hope to have a BETA much sooner than that so you can all at least be
>> > playing, prototyping, etc. with it.
>> >
>> > It is time I started assembling a list of who all wants the IBO Kylix
>> > when it is ready.
>> >
>> > PS. I already am working on it and continue to work on it. I'm not just
>> > waiting to finish IBO 4 before I start on it.
>> >
>> > Jason Wharton
>> > CPS - Mesa AZ
>> >
>> >
>> >
>> > ----- Original Message -----
>> > From: "Kenneth Wilcox" <kwilcox@...>
>> > To: <>
>> > Sent: Wednesday, May 02, 2001 7:39 AM
>> > Subject: [IBO] Kylix
>> >
>> > > var
>> > > date: TDateTime;
>> > > begin
>> > > if not (IBOPrortedToKylix) then
>> > > date := GetReleaseDateInformation
>> > > else
>> > > date := LastUploadDate;
>> > >
>> > > ShowMessage('The value of date is: ' + DateTimeToStr(date));
>> > > end;
>> > >
>> > > What's the value of date?
>> > >
>> > > Sorry, my native language is PASCAL.
>> > >
>> > > Ken
>> > >
>> > >
>> > >
>> > >
>> > > Your use of Yahoo! Groups is subject to
>> >
>> > Your use of Yahoo! Groups is subject to
>> Your use of Yahoo! Groups is subject to

JW> Your use of Yahoo! Groups is subject to