Re: [Vala] Vala: Signal from POSIX
- From: Ervin <ierosvin gmail com>
- To: Phil Housley <undeconstructed gmail com>
- Cc: vala-list gnome org
- Subject: Re: [Vala] Vala: Signal from POSIX
- Date: Wed, 20 Oct 2010 13:24:35 +0800
Oh yeah, this works. I forgot to instantiate instance = this. :D
Thanks Phil!
On Wed, Oct 20, 2010 at 9:16 AM, Ervin <ierosvin gmail com> wrote:
Yes that is what i would do if the PrintInterface permits me to do so since
the interface says:
public void print_value();
note that the method is not static. Thus, calling this method using the
static instance of the class
Check returns an error.
This is how i instantiated statically the class Check:
public class Check : PrintInterface{
public static Check instance = null;
}
and calling the method as:
Check.instance.print_value();
Hmm.. :(
On Tue, Oct 19, 2010 at 5:46 PM, Phil Housley <undeconstructed gmail com>wrote:
On 19 October 2010 03:33, Ervin Orense Balaoro <ierosvin gmail com>
wrote:
Yes, static variables will solve the problem. :D
Thanks Phil!
But there is a limitation to this approach by making Check implement an
interface(i.e. PrintInterface),
where printf_value() is from the interface implemented:
public class Check : PrintInterface{
...
public static int x = 0;
public open(){
...
signal(SIGUSR1, sighandler);
}
...
public void sighandler(int signum) {
x++;
print_value();
}
public void print_value(){
stdout.printf("%d", x);
}
...
}
Do vala have anyway to get this running?
I don't know a general way to do this in any language, but you can do
it easily for a limited case. Anything that is static'ly addressable
can be used from the signal handler, so if you assign a particular
instance of Check to a static variable, you can invoke the method.
The only way to do the specific thing you illustrate is to have one
callback method per instance of Check, which is only possible if you
know in advance how many instances you will have.
On Mon, Oct 18, 2010 at 9:13 PM, Phil Housley <
undeconstructed gmail com>
wrote:
On 18 October 2010 09:35, Ervin Orense Balaoro <ierosvin gmail com>
wrote:
Hello,
I dont know if this is the right place to ask questions regarding
vala.
But
anyway, ill post the question here just in case someone has the same
experience i had while working with vala using signal from posix.
Code:
public class Check{
...
public int x = 0;
public open(){
...
signal(SIGUSR1, sighandler);
}
...
public void sighandler(int signum) {
stdout.printf("%d", x++);
}
...
}
How do we make our signal handlers access the global variables?
i write a similar code in C, but works okay there.
The callback needed for signal() is a void -> void method, so there is
no way to pass a pointer to your class instance, and so no way for the
callback to invoke the method on the correct instance of the Check
class.
Using a static method and variable should work I assume.
--
Phil Housley
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]