These are C APIs I'm talking about.  It's not possible to add an
option to these and maintain binary compatibility with existing
applications.  A new API that behaves the way we wish it to behave
really is the only option.

Rick

On Mon, Sep 22, 2008 at 5:13 PM, Chip Davis <[EMAIL PROTECTED]> wrote:
> Well, you know you can trust me to have an orthogonal take on this...
>
> IMHO, the only problem with the OS/2-style RexxCreateQueue is that it tries to
> subsume two discrete operations: 1) verifying whether a queue by the supplied
> name already exists, and 2) creating a new queue.
>
> This is a fine idea if most of the time, you simply want to create a queue and
> don't care what it is named.  One call to RexxCreateQueue and a uniquely-named
> queue is created, the name returned to you, and you're off to the races.
>
> However, if you simply want to verify that a specific queue has already been
> created, it still takes two operations because sometimes the first step will
> have created a new queue that you don't want, so now you must delete it.
>
> Also, if you want to create a specific named queue, it often requires a 
> minimum
> of three operations: 1) attempt to create a queue by that name, 2) verify 
> that a
> queue by that name doesn't already exist and if so, delete the uniquely-named
> queue created by step 1, and 3) come up with different name and try again.  If
> you do this in a loop and append an index to the name to attempt to make it
> unique, this could go on for quite a few iterations.
>
> On the face of it, this is exactly the same problem as creating a temporary 
> work
> file.  When you open "temp.wrk", the return code tells you whether or not a 
> file
> by that name already exists.  The open operation doesn't automagically create 
> a
> "temp.wrk1" that you have to come back and erase if you don't want it.
>
> So rather than create a whole 'nother RexxCreateQueue (which is the perfect
> name) why not simply add an option to make it return a null string instead of
> mindlessly creating a unique queue?  That separates the query operation from 
> the
> create operation, and avoids having to come up with yet another very similar
> function with a slightly different name.
>
> This would kill several birds with a single stone.  If the major objection is
> the automatic creation of a unique queue, that behavior can be suppressed in
> favor of a string such as Stream('temp.wrk','c','query exists') returns.  It
> also satisfies the RFE for a RexxQueueExists operation.  And it would be
> backwards-compatible in exactly the same way as the explicit OPEN and CLOSE
> operations were added to Stream.
>
> It seems to me that any conceptual parallelism between the Queue and Stream
> operations should be exploited.
>
> -Chip-
>
> On 9/22/08 13:31 Rick McGuire said:
>> Given that this has all been rewritten anyway, I'd like a "do over" on
>> something I did 20 years ago.  The RexxCreateQueue API will create a
>> new queue with a unique name if the requested name already exists.  I
>> really don't remember why we decided to do it this way with the
>> original OS/2 implementation 20 years ago, but I have a vague memory
>> that it was something the OS/2 people wanted.  Frankly, this has
>> generally not worked out real well.  In most cases, the create
>> operation is called for the purposed of creating the queue if it
>> doesn't already exists.  The current behavior means the caller need to
>> check the returned name and then delete the additional queue if one
>> was created.  Generally, a pain.
>>
>> I'd like to create a new version of the API (and expose it in the
>> RxQueue() function and the RexxQueue class) that behaves the way
>> people generally want this to work, which is to make sure that the
>> queue exists.  This is fairly easy to do....the biggest hang up is
>> what to call the operation?  The best I've come up with so far is
>> RexxOpenQueue(), but it's not create an open operation.
>> RexxGetQueue() might also work, but a Get implies something is
>> returned, which is not really the case.
>>
>> We have an RFE for an exists operation also, so I'll probably add a
>> RexxQueueExists() API at the same time.
>>
>> Rick
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to