Is (tc->isRunning() == true) equivalent to (tc->getTaskState() == RTT::TaskCore::Running) ?

Dear forum.

I currently use a task context retrieved from a Corba::ControlTaskProxy.

My program has strange behaviour : it seems that if tc->isRunning() is true, (tc->getTaskState() == RTT::TaskCore::Running) is not necessary true.

Is it normal ?

Thank you for your help.

Paul.

Is (tc->isRunning() == true) equivalent to (tc->getTaskState() =

On Monday 28 June 2010 15:28:16 paul [dot] chavent [..] ... wrote:
> Dear forum.
>
> I currently use a task context retrieved from a Corba::ControlTaskProxy.
>
> My program has strange behaviour : it seems that if tc->isRunning() is
> true, (tc->getTaskState() == RTT::TaskCore::Running) is not necessary
> true.
>
> Is it normal ?

Well, the code looks allright. Could it be that your TC is in the RuntimeError
or RuntimeWarning TaskState's ? In that case, isRunning() will also return
true, since these are 'substates' of Running.

Peter

Hi Peter.I provide you a

Hi Peter.

I provide you a test case that reproduce the problem.

Let me explain what i try to do.

I have a deployer that manage some components on my remote target.

On my workstation i have a GUI that connect to the root component ("Test" in the test case) of the remote target then list all peers ("Foo" in the test case).

For each peer, i instanciate a widget ("Bar" in the test case). I use a timer for refreshing the widget periodicaly. In the timer timeout handler, i check the state of the remote component.

In the archive, there is a little readme that explain how i launch the test.

There is also an error log seen on the client side :

 Peers        : Foo[R] 
 
 In Task Test[S]. (Status of last Command : none )
 (type 'ls' for context info) :
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 1
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0

Could you tell me what i do wrong please ?

Hi Peter.I provide you a

On Thursday 01 July 2010 11:26:35 paul [dot] chavent [..] ... wrote:
> Hi Peter.
>
> I provide you a test case that reproduce the problem.
>
> Let me explain what i try to do.
>
> I have a deployer that manage some components on my remote target.
>
> On my workstation i have a GUI that connect to the root component ("Test"
> in the test case) of the remote target then list all peers ("Foo" in the
> test case).
>
> For each peer, i instanciate a widget ("Bar" in the test case). I use a
> timer for refreshing the widget periodicaly. In the timer timeout handler,
> i check the state of the remote component.
>
> In the archive, there is a little readme that explain how i launch the
> test.
>
> There is also an error log seen on the client side :
>

>  Peers        : Foo[R]
> 
>  In Task Test[S]. (Status of last Command : none )
>  (type 'ls' for context info) :
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 0
> Foo : getTaskState() = 3, isRunning() = 0
> Foo : getTaskState() = 3, isRunning() = 0
> 

I compiled with TAO, and did not see this. I just get:

./build/bar -ORBInitRef NameService=corbaloc:iiop:vader:2809/NameService
   Switched to : Test
 
  This console reader allows you to browse and manipulate TaskContexts.
  You can type in a command, event, method, expression or change variables.
  (type 'help' for instructions)
    TAB completion and HISTORY is available ('bash' like)
 
 In Task Test[S]. (Status of last Command : none )
 (type 'ls' for context info) :Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
Foo : getTaskState() = 3, isRunning() = 0
<code>
 
I'll rerun the test with omniorb...
 
Peter

Hi Peter.I provide you a

On Friday 02 July 2010 12:23:03 Peter Soetens wrote:
> On Thursday 01 July 2010 11:26:35 paul [dot] chavent [..] ... wrote:
> > Hi Peter.
> >
> > I provide you a test case that reproduce the problem.
> >
> > Let me explain what i try to do.
> >
> > I have a deployer that manage some components on my remote target.
> >
> > On my workstation i have a GUI that connect to the root component ("Test"
> > in the test case) of the remote target then list all peers ("Foo" in the
> > test case).
> >
> > For each peer, i instanciate a widget ("Bar" in the test case). I use a
> > timer for refreshing the widget periodicaly. In the timer timeout
> > handler, i check the state of the remote component.
> >
> > In the archive, there is a little readme that explain how i launch the
> > test.
> >
> > There is also an error log seen on the client side :
> >

> >  Peers        : Foo[R]
> >
> >  In Task Test[S]. (Status of last Command : none )
> >  (type 'ls' for context info) :
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 1
> > Foo : getTaskState() = 3, isRunning() = 0
> > Foo : getTaskState() = 3, isRunning() = 0
> > Foo : getTaskState() = 3, isRunning() = 0
> > 

>
> I compiled with TAO, and did not see this. I just get:

Could not reproduce with omniorb either. I really wonder what's going on
here... I tested with 1.10 trunks of rtt and ocl.

Peter

Hi Peter.I provide you a

On Friday 02 July 2010 12:28:06 Peter Soetens wrote:
> On Friday 02 July 2010 12:23:03 Peter Soetens wrote:
> > On Thursday 01 July 2010 11:26:35 paul [dot] chavent [..] ... wrote:
> > > Hi Peter.
> > >
> > > I provide you a test case that reproduce the problem.
> > >
> > > Let me explain what i try to do.
> > >
> > > I have a deployer that manage some components on my remote target.
> > >
> > > On my workstation i have a GUI that connect to the root component
> > > ("Test" in the test case) of the remote target then list all peers
> > > ("Foo" in the test case).
> > >
> > > For each peer, i instanciate a widget ("Bar" in the test case). I use a
> > > timer for refreshing the widget periodicaly. In the timer timeout
> > > handler, i check the state of the remote component.
> > >
> > > In the archive, there is a little readme that explain how i launch the
> > > test.
> > >
> > > There is also an error log seen on the client side :
> > >

> > >  Peers        : Foo[R]
> > >
> > >  In Task Test[S]. (Status of last Command : none )
> > >  (type 'ls' for context info) :
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 1
> > > Foo : getTaskState() = 3, isRunning() = 0
> > > Foo : getTaskState() = 3, isRunning() = 0
> > > Foo : getTaskState() = 3, isRunning() = 0
> > > 

> >
> > I compiled with TAO, and did not see this. I just get:
>
> Could not reproduce with omniorb either. I really wonder what's going on
> here... I tested with 1.10 trunks of rtt and ocl.

Oops... so you did a Foo.start() of course. The bug is in TaskCore.hpp,
getTaskState is not a virtual. Same for some other functions too:
* getErrorCount()
* getWarningCount()
* getName()
* setName()

So in total 5 functions were missing this virtual decoration. I'll fix this on
trunk and the 1.10 branch.

Peter

Hi Peter.I provide you a

Thank you for your help Peter !

Hi Peter.I provide you a

Thank you for your help Peter !

Hi Peter.I provide you a

On Thursday 01 July 2010 11:26:35 paul [dot] chavent [..] ... wrote:
> Hi Peter.
>
> I provide you a test case that reproduce the problem.

Thanks, I'm in the process of compiling it...

>
> There is also an error log seen on the client side :
>

>  Peers        : Foo[R]
> 
>  In Task Test[S]. (Status of last Command : none )
>  (type 'ls' for context info) :
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 1
> Foo : getTaskState() = 3, isRunning() = 0
> Foo : getTaskState() = 3, isRunning() = 0
> Foo : getTaskState() = 3, isRunning() = 0
> 

A taskstate 3 means 'Stopped', so the first 'isRunning' invocations return the
wrong value, and then it gets the right value. The strange thing is that
isRunning is implemented by comparing the value of the taskstate. It's really
an alias for "return (getTaskState() >= Running)"

Looking at your deployment file: is the getTaskState() correct or the
isRunning() correct ? I mean, you don't start the remote component ?

Peter

Is (tc->isRunning() == true) equivalent to (tc->getTaskState() =

On Monday 28 June 2010 15:28:16 paul [dot] chavent [..] ... wrote:
> Dear forum.
>
> I currently use a task context retrieved from a Corba::ControlTaskProxy.
>
> My program has strange behaviour : it seems that if tc->isRunning() is
> true, (tc->getTaskState() == RTT::TaskCore::Running) is not necessary
> true.
>
> Is it normal ?

No. It's probably a bug in the proxy code. I'll take a look at it.

Peter

Is (tc->isRunning() == true) equivalent to (tc->getTaskState() =

Dear forum.

I currently use a task context retrieved from a Corba::ControlTaskProxy.

My program has strange behaviour : it seems that if tc->isRunning() is true, (tc->getTaskState() == RTT::TaskCore::Running) is not necessary true.

Is it normal ?

Thank you for your help.

Paul.