Class: Timer

Inherits:
Object
  • Object
show all
Defined in:
ext/actuator/timer.cpp

Overview

strcpy(inspected, RSTRING_PTR(obj));

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObject



53
54
55
56
57
58
# File 'ext/actuator/timer.cpp', line 53

static VALUE Timer_initialize(VALUE self)
{
    Timer *timer = Timer::Get(self);
    if (rb_block_given_p()) timer->SetCallback(rb_block_proc());
    return self;
}

Class Method Details

.every(delay_value) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'ext/actuator/timer.cpp', line 100

static VALUE Timer_every(VALUE self, VALUE delay_value)
{
    rb_need_block();
    Log::Debug("Timer.every");
    double delay = NUM2DBL(delay_value);
    Timer *timer = new Timer(delay);
    timer->interval = delay;
    timer->SetCallback(rb_block_proc());
    timer->Schedule();
    current_object_count++;
    // We skip calling initialize on the timer to reduce overhead
    return timer->instance = Data_Wrap_Struct(TimerClass, Timer_mark, Timer_free, timer);
}

.in(delay_value) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
# File 'ext/actuator/timer.cpp', line 88

static VALUE Timer_in(VALUE self, VALUE delay_value)
{
    rb_need_block();
    Log::Debug("Timer.in");
    Timer *timer = new Timer(NUM2DBL(delay_value));
    timer->SetCallback(rb_block_proc());
    timer->Schedule();
    current_object_count++;
    // We skip calling initialize on the timer to reduce overhead
    return timer->instance = Data_Wrap_Struct(TimerClass, Timer_mark, Timer_free, timer);
}

.late_warning_usObject



114
115
116
117
# File 'ext/actuator/timer.cpp', line 114

static VALUE Timer_late_warning_us(VALUE self)
{
    return INT2NUM(late_warning_us);
}

.late_warning_us=(value) ⇒ Object



119
120
121
122
# File 'ext/actuator/timer.cpp', line 119

static VALUE Timer_late_warning_us_set(VALUE self, VALUE value)
{
    return INT2NUM(late_warning_us = NUM2INT(value));
}

.statsObject



124
125
126
127
# File 'ext/actuator/timer.cpp', line 124

static VALUE Timer_stats(VALUE self)
{
    return rb_sprintf("Frames: %d, Empty: %d, Fires: %d, Early: %d, Late: %d, Current: %d, Objects: %d, Scheduled: %d, GC: %d, Total: %d", last_second_frame_count, last_second_empty_frames, fired_last_second_count, last_second_earliest_fire < INT_MAX ? last_second_earliest_fire : -1, last_second_latest_fire, current_timer_count, current_object_count, all.size(), current_gc_registered_count, total_count);
}

Instance Method Details

#destroyObject



60
61
62
63
64
65
66
67
68
# File 'ext/actuator/timer.cpp', line 60

static VALUE Timer_destroy(VALUE self)
{
    Timer *timer = Timer::Get(self);
    if (timer)
        timer->Destroy();
    else
        rb_raise(rb_eRuntimeError, "Timer instance has no allocated timer struct");
    return Qnil;
}

#destroyed?Boolean

Returns:

  • (Boolean)


75
76
77
78
# File 'ext/actuator/timer.cpp', line 75

static VALUE Timer_is_destroyed(VALUE self)
{
    return (Timer::Get(self))->is_destroyed ? Qtrue : Qfalse;
}

#expires_atObject



70
71
72
73
# File 'ext/actuator/timer.cpp', line 70

static VALUE Timer_expires_at(VALUE self)
{
    return DBL2NUM(Timer::Get(self)->at);
}

#fire!Object



80
81
82
83
84
85
86
# File 'ext/actuator/timer.cpp', line 80

static VALUE Timer_fire_bang(VALUE self)
{
    Timer *timer = Timer::Get(self);
    if (timer->is_destroyed || !timer->is_scheduled) return Qnil;
    timer->ExpireImmediately();
    return Qtrue;
}