Hi Sharon,
Thanks for the pointer. I was trying to use it in a staf library and
that is why I was worried about queue getting the incorrect notification.
This is the function structure
------------
sub WatchHandles ( $$ )
{
my ($handleRef, $timeout) = @_;
my %handle = %$handleRef;
my $handleSize = scalar keys %handle;
my $handleList = "";
#This is the step to populate the list of handles which this function will watch
while (my ($handleKey, $value) = each (%handle) ) {
$handleList = $handleList . " handle $handleKey ";
}
#SubmitSTAFCommandwithReturn is the function which will submit the STAF command
using PLSTAF
my $resultRef = SubmitSTAFCommandwithReturn("local", "queue", "get wait
$timeout $handleList");
}
--------------
Now my above command is timing out all the times. When I was not using
$handleList(list of process handles) it used to get the notification. But I was
worried if there are multiple calls to this function it may not function
correctly.
I can monitor all the handles periodically but that is not the optimal solution.
Thanks,
Arvind
--- On Fri, 10/24/08, Sharon Lucas <[EMAIL PROTECTED]> wrote:
> From: Sharon Lucas <[EMAIL PROTECTED]>
> Subject: Re: [staf-users] Queue service question
> To: [email protected]
> Cc: [EMAIL PROTECTED]
> Date: Friday, October 24, 2008, 8:14 AM
> Or, you can use the KEY option when starting a process. The
> key is
> included in the STAF/Process/End notification message. So,
> you can use a
> specific key for one set of processes and another key for
> another set of
> processes and check the key in the STAF/Process/End
> notification message
> after each QUEUE GET request.
>
> Or, note that when using the NOTIFY ONEND option on a
> PROCESS START
> request, you can specify an additional option on what
> handle number (via
> the NOTIFY ONEND HANDLE <Handle#>) or handle name
> (via the NOTIFY ONEND
> NAME <HandleName> to send the notification to
> (otherwise, it defaults to
> sending the STAF/Process/End message to the handle that
> submitted the
> process). See the STAF User's Guide for more
> information on these
> options.
>
> Note that if you don't want a notification message for
> a process, don't
> specify the NOTIFY ONEND message.
>
> --------------------------------------------------------------
> Sharon Lucas
> IBM Austin, [EMAIL PROTECTED]
> (512) 838-8347 or Tieline 678-8347
>
>
>
>
> David Bender/Austin/[EMAIL PROTECTED]
> 10/23/2008 01:07 PM
>
> To
> [email protected]
> cc
> [EMAIL PROTECTED]
> Subject
> Re: [staf-users] Queue service question
>
>
>
>
>
>
>
> You will probably need to keep track of the handle numbers
> that get
> returned from the PROCESS START NOTIFY ONEND requests, and
> check the
> incoming messages on the queue to determine if the
> message's request
> number is one that you are interested in.
>
> If you are really doing these requests from the command
> line, then you
> could use different static handles, such as:
>
> # Create a static handle and submit 2 process start
> requests
>
> $ STAF local HANDLE CREATE HANDLE NAME MyHandle1
> Response
> --------
> 23
>
> $ export STAF_STATIC_HANDLE=23
>
> $ STAF local PROCESS START SHELL COMMAND date RETURNSTDOUT
> NOTIFY ONEND
> Response
> --------
> 24
>
> $ STAF local PROCESS START SHELL COMMAND date RETURNSTDOUT
> NOTIFY ONEND
> Response
> --------
> 25
>
> # Create a second static handle and submit 2 process start
> requests
>
> $ STAF local HANDLE CREATE HANDLE NAME MyHandle2
> Response
> --------
> 26
>
> $ export STAF_STATIC_HANDLE=26
>
> $ STAF local PROCESS START SHELL COMMAND date RETURNSTDOUT
> NOTIFY ONEND
> Response
> --------
> 27
>
> $ STAF local PROCESS START SHELL COMMAND date RETURNSTDOUT
> NOTIFY ONEND
> Response
> --------
> 28
>
> # Use the first static handle and submit a queue get,
> notice we get the
> queued message for process handle 24
>
> $ export STAF_STATIC_HANDLE=23
>
> $ STAF local QUEUE GET WAIT 5000
> Response
> --------
> {
> Priority : 5
> Date-Time : 20081023-12:58:51
> Machine : local://local
> Handle Name: STAF_Process
> Handle : 1
> User : none://anonymous
> Type : STAF/Process/End
> Message : {
> endTimestamp: 20081023-12:58:51
> fileList : [
> {
> data: The current date is: Thu 10/23/2008
> Enter the new date: (mm-dd-yy)
> rc : 0
> }
> ]
> handle : 24
> key :
> rc : 1
> }
> }
>
> # Use the second static handle and submit some queue gets,
> notice we get
> the queued messages for process handles 27 and 28
>
> $ export STAF_STATIC_HANDLE=26
>
> $ STAF local QUEUE GET WAIT 5000
> Response
> --------
> {
> Priority : 5
> Date-Time : 20081023-12:59:25
> Machine : local://local
> Handle Name: STAF_Process
> Handle : 1
> User : none://anonymous
> Type : STAF/Process/End
> Message : {
> endTimestamp: 20081023-12:59:25
> fileList : [
> {
> data: The current date is: Thu 10/23/2008
> Enter the new date: (mm-dd-yy)
> rc : 0
> }
> ]
> handle : 27
> key :
> rc : 1
> }
> }
>
> $ STAF local QUEUE GET WAIT 5000
> Response
> --------
> {
> Priority : 5
> Date-Time : 20081023-12:59:26
> Machine : local://local
> Handle Name: STAF_Process
> Handle : 1
> User : none://anonymous
> Type : STAF/Process/End
> Message : {
> endTimestamp: 20081023-12:59:26
> fileList : [
> {
> data: The current date is: Thu 10/23/2008
> Enter the new date: (mm-dd-yy)
> rc : 0
> }
> ]
> handle : 28
> key :
> rc : 1
> }
> }
>
> $ STAF local QUEUE GET WAIT 5000
> Error submitting request, RC: 37
>
> # Now switch back to the first static handle and submit
> some queue gets,
> notice we get the queued message for process handle 25
>
> $ export STAF_STATIC_HANDLE=23
>
> $ STAF local QUEUE GET WAIT 5000
> Response
> --------
> {
> Priority : 5
> Date-Time : 20081023-12:58:52
> Machine : local://local
> Handle Name: STAF_Process
> Handle : 1
> User : none://anonymous
> Type : STAF/Process/End
> Message : {
> endTimestamp: 20081023-12:58:52
> fileList : [
> {
> data: The current date is: Thu 10/23/2008
> Enter the new date: (mm-dd-yy)
> rc : 0
> }
> ]
> handle : 25
> key :
> rc : 1
> }
> }
>
> $ STAF local QUEUE GET WAIT 5000
> Error submitting request, RC: 37
>
>
> David Bender
> STAF/STAX Development
> 8-1268 (512-838-1268)
> IBM Austin Bldg. 903-5B002
> Internet: [EMAIL PROTECTED]
>
>
>
> Arvind Chandra <[EMAIL PROTECTED]>
> 10/23/2008 12:04 PM
>
> Please respond to
> [EMAIL PROTECTED]
>
>
> To
> [email protected], David
> Bender/Austin/[EMAIL PROTECTED]
> cc
>
> Subject
> Re: [staf-users] Queue service question
>
>
>
>
>
>
>
>
> Hi David,
> Thanks for the response. I now have a followup question
> again about
> queues.
> This is my scenario. I launch 4 processes in async mode
> with notify
> onend option using process service. Then I run staf local
> queue get wait
> <timeout>
>
> But immediately after that I launch 4 other processes
> in async mode
> with notfiy onend option using process service. Then I run
> staf local
> queue get wait <anothertimout>
>
> How do I ensure that process launched in the second
> set not end up
> getting into first queue.
> Thanks,
> Arvind
>
>
> --- On Wed, 10/22/08, David Bender
> <[EMAIL PROTECTED]> wrote:
>
> > From: David Bender <[EMAIL PROTECTED]>
> > Subject: Re: [staf-users] Queue service question
> > To: [email protected]
> > Cc: [EMAIL PROTECTED]
> > Date: Wednesday, October 22, 2008, 2:16 PM
> > You can use the QUEUE DELETE request to delete all
> messages
> > in the queue.
> > So for example:
> >
> > $ STAF local HANDLE CREATE HANDLE NAME MyHandle
> > Response
> > --------
> > 198
> >
> > $ export STAF_STATIC_HANDLE=198
> >
> > # Execute a process with notify onend, and do a queue
> get
> > wait
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 200
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Response
> > --------
> > {
> > Priority : 5
> > Date-Time : 20081022-16:09:58
> > Machine : local://local
> > Handle Name: STAF_Process
> > Handle : 1
> > User : none://anonymous
> > Type : STAF/Process/End
> > Message : {
> > endTimestamp: 20081022-16:09:58
> > fileList : [
> > {
> > data: The current date is: Wed 10/22/2008
> > Enter the new date: (mm-dd-yy)
> > rc : 0
> > }
> > ]
> > handle : 200
> > key :
> > rc : 1
> > }
> > }
> >
> > # Now execute 3 processes with notify onend, and then
> do 4
> > queue get waits
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 201
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 202
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 203
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Response
> > --------
> > {
> > Priority : 5
> > Date-Time : 20081022-16:11:39
> > Machine : local://local
> > Handle Name: STAF_Process
> > Handle : 1
> > User : none://anonymous
> > Type : STAF/Process/End
> > Message : {
> > endTimestamp: 20081022-16:11:39
> > fileList : [
> > {
> > data: The current date is: Wed 10/22/2008
> > Enter the new date: (mm-dd-yy)
> > rc : 0
> > }
> > ]
> > handle : 201
> > key :
> > rc : 1
> > }
> > }
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Response
> > --------
> > {
> > Priority : 5
> > Date-Time : 20081022-16:11:40
> > Machine : local://local
> > Handle Name: STAF_Process
> > Handle : 1
> > User : none://anonymous
> > Type : STAF/Process/End
> > Message : {
> > endTimestamp: 20081022-16:11:40
> > fileList : [
> > {
> > data: The current date is: Wed 10/22/2008
> > Enter the new date: (mm-dd-yy)
> > rc : 0
> > }
> > ]
> > handle : 202
> > key :
> > rc : 1
> > }
> > }
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Response
> > --------
> > {
> > Priority : 5
> > Date-Time : 20081022-16:11:40
> > Machine : local://local
> > Handle Name: STAF_Process
> > Handle : 1
> > User : none://anonymous
> > Type : STAF/Process/End
> > Message : {
> > endTimestamp: 20081022-16:11:40
> > fileList : [
> > {
> > data: The current date is: Wed 10/22/2008
> > Enter the new date: (mm-dd-yy)
> > rc : 0
> > }
> > ]
> > handle : 203
> > key :
> > rc : 1
> > }
> > }
> >
> > # Now execute 3 processes with notify onend, and then
> do a
> > queue get wait
> > followed by a queue delete
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 204
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 205
> >
> > $ STAF local PROCESS START SHELL COMMAND date
> RETURNSTDOUT
> > NOTIFY ONEND
> > Response
> > --------
> > 206
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Response
> > --------
> > {
> > Priority : 5
> > Date-Time : 20081022-16:13:03
> > Machine : local://local
> > Handle Name: STAF_Process
> > Handle : 1
> > User : none://anonymous
> > Type : STAF/Process/End
> > Message : {
> > endTimestamp: 20081022-16:13:03
> > fileList : [
> > {
> > data: The current date is: Wed 10/22/2008
> > Enter the new date: (mm-dd-yy)
> > rc : 0
> > }
> > ]
> > handle : 204
> > key :
> > rc : 1
> > }
> > }
> >
> > $ STAF local QUEUE DELETE
> > Response
> > --------
> > 2
> >
> > $ STAF local QUEUE GET WAIT 5000
> > Error submitting request, RC: 37
> >
> > # Notice that the result buffer of the QUEUE DELETE
> > indicates that 2
> > messages were deleted from the queue, and the
> subsequent
> > QUEUE GET WAIT
> > times out.
> >
> > David Bender
> > STAF/STAX Development
> > 8-1268 (512-838-1268)
> > IBM Austin Bldg. 903-5B002
> > Internet: [EMAIL PROTECTED]
> >
> >
> >
> >
> > Arvind Chandra <[EMAIL PROTECTED]>
> > 10/22/2008 03:43 PM
> > Please respond to
> > [EMAIL PROTECTED]
> >
> >
> > To
> > [email protected]
> > cc
> >
> > Subject
> > [staf-users] Queue service question
> >
> >
> >
> >
> >
> >
> > Hi,
> > This is my scenario. I issue 10 process commands
> with
> > the options
> > "notify onend" option on my local machine.
> Then I
> > issue command
> > staf local get wait <timeoutvalue>
> >
> > Now when 1st process finishes the queue command
> returns
> > and that is
> > expected. Then I examine the result of the completed
> > process. After that I
> > again issue the command
> > staf local get wait <anothertimeoutvalue>
> >
> > Problem happens when multiple process finish. Now
> when
> > I issue the
> > command
> > staf local get wait <anothertimeoutvalue>
> > This is probably because it has the notification
> from
> > the second
> > completed process.
> > Is there a way I can clear the queue before
> issuing
> > the command
> > again.
> > Thanks,
> > Arvind
> >
> >
> >
> >
> >
> -------------------------------------------------------------------------
> > 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=/
> > _______________________________________________
> > staf-users mailing list
> > [email protected]
> >
> https://lists.sourceforge.net/lists/listinfo/staf-users
>
>
>
> -------------------------------------------------------------------------
> 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=/
> _______________________________________________
> staf-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/staf-users
-------------------------------------------------------------------------
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=/
_______________________________________________
staf-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/staf-users