Dear gurus,
I got it, thank you very much !

Regards,
Activecat


On Mon, Mar 3, 2014 at 9:11 PM, Martin Braun <martin.br...@ettus.com> wrote:

> On 03/03/2014 12:37 PM, Marcus Müller wrote:
> > 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).
>
> Also, grep for throw in the impl files for an example, we do that a lot
> in GNU Radio.
>
> M
>
> > 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 <active...@gmail.com>
> >> 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
> >>> <mar...@hostalia.de> 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
> >>>>>> <martin.br...@ettus.com> 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 Discuss-gnuradio@gnu.org
> >>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org
> >>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>>>>>
> >>>>
> >>>> _______________________________________________
> >>>> Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org
> >>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>>
> >>>
> >>>
> >>> _______________________________________________ Discuss-gnuradio
> >>> mailing list Discuss-gnuradio@gnu.org
> >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>>
> >
> > _______________________________________________
> > Discuss-gnuradio mailing list
> > Discuss-gnuradio@gnu.org
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to