discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Unable to stop the flow graph after calling stop(


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Unable to stop the flow graph after calling stop()
Date: Mon, 03 Mar 2014 12:37:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Activecat,

as Miklos wrote: Let your Constructor throw an exception.
For a little detail on that, refer to
http://www.parashift.com/c++-faq-lite/ctors-can-throw.html .
You can surround your block construction with a try{}catch-clause, and
handle your error, so your application may deal with that gracefully
(instead of just dying).

Another common method of dealing with stuff like this is, if you
really have complex constructor arguments and might need to check if
they make sense in multiple places
- - let your class have a static method validate_arguments(...) that
returns true or false,
- - let your c'tor call that and throw an exception when it's false, and
- - use that unbound method (that is calling
activecats_class::validate_arguments() rather than calling
instance_of_that_class.validate_arguments()) from wherever you want to
calculate arguments.

Greetings,
Marcus

On 03.03.2014 12:02, Miklos Maroti wrote:
> Dear Activecat,
> 
> Throw an exception. It will kill the application.
> 
> Miklos
> 
> On Mon, Mar 3, 2014 at 11:57 AM, Activecat <address@hidden>
> wrote:
>> Dear Marcus,
>> 
>> Says, the constructor performed some basic checking on the
>> constructor arguments, then had found some fatal error (says,
>> division by zero) and decided to ban the flowgraph from being
>> executed.
>> 
>> A workaround is to get the constructor to set a class variable to
>> false, says, d_valid = false;
>> 
>> then in the work() it will check this d_valid as follows:
>> 
>> int work() { if ( ! d_valid ) return -1 ......... .........
>> (other stuff as usual) }
>> 
>> 
>> But isn't there a better way to do this ..? (to ban the flowgraph
>> from being executed within the constructor)
>> 
>> Please advise, thanks.
>> 
>> Regards, Activecat
>> 
>> 
>> 
>> On Mon, Mar 3, 2014 at 5:25 PM, Marcus Müller
>> <address@hidden> wrote:
>>> 
> Activecat,
> 
> the constructor of a block must have been called before the block
> has been connect()ed; so there's no way a flowgraph is already
> running when your block's constructor is called.
> 
> Greetings, Marcus
> 
> On 03.03.2014 06:53, Activecat wrote:
>>>>> Dear Sir, Thank you very much.
>>>>> 
>>>>> What if, we want to stop the flow graph in the constructor
>>>>> of a block?
>>>>> 
>>>>> In work() we can just return -1. But in constructor, what
>>>>> value should be returned, also -1  ?
>>>>> 
>>>>> Regards, Activecat
>>>>> 
>>>>> 
>>>>> On Sun, Feb 2, 2014 at 9:05 PM, Martin Braun 
>>>>> <address@hidden> wrote:
>>>>> 
>>>>>> On 01.02.2014 13:51, Activecat wrote:
>>>>>> 
>>>>>>> But the function stop() fails to work. The flow graph
>>>>>>> continue executing infinitely...
>>>>>>> 
>>>>>>> Question: How to stop the flow graph when
>>>>>>> this->d_complete == true ?
>>>>>>> 
>>>>>> 
>>>>>> Return -1 (or WORK_DONE) in your work() function.
>>>>>> 
>>>>>> MB
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Discuss-gnuradio mailing list address@hidden 
>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Discuss-gnuradio mailing list address@hidden 
>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>> 
>>> 
>>> _______________________________________________ 
>>> Discuss-gnuradio mailing list address@hidden 
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>> 
>> 
>> 
>> _______________________________________________ Discuss-gnuradio
>> mailing list address@hidden 
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTFGmXAAoJEAFxB7BbsDrLOLAIAJUgbhHeABDD9bDgCjJYRIhu
VzbVgZPo0bnPVfNGkojrO5wRTSzjHbCqQFkKbl4JCPLK6+IPq/9mL+iDffPQ9Aic
IGZLhq/ep8LwfiDjjh6D6BNQYmHqa6hRLPkHBzETmKqvBK5258b86IgedJNIDJF7
+qfVZWQsi3FDUyGSD6fVRHOUkfKT3naR0FqhipxtMRWFprBRrovMV23IqbVMdDQv
WfxeWyNoJMpYjXPT+S/pt7h9kxKUbcZK4aOWwuhnwmTahFcfcx+GCIc54UQHegVR
/WvOD1LNiYIXLJg6wEssN783OXbMqzWTaTl0+CFf6NWO4jQQFaAtoiUk3+EjXIQ=
=9pRp
-----END PGP SIGNATURE-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]