ext/pcap/Pcap.c in ruby-pcap-0.8.0 vs ext/pcap/Pcap.c in ruby-pcap-0.8.1
- old
+ new
@@ -306,10 +306,23 @@
pcap_close(cap->pcap);
cap->pcap = NULL;
return Qnil;
}
+static VALUE
+is_capture_closed(self)
+ VALUE self;
+{
+ struct capture_object *cap;
+ DEBUG_PRINT("is_capture_closed");
+ Data_Get_Struct(self, struct capture_object, cap);
+ if (cap->pcap == NULL) {
+ return Qtrue;
+ }
+ return Qfalse;
+}
+
static void
handler(cap, pkthdr, data)
struct capture_object *cap;
const struct pcap_pkthdr *pkthdr;
const u_char *data;
@@ -441,10 +454,22 @@
return rb_funcall(rb_path2class("IO"), rb_intern("new"), 1, INT2FIX(pcap_fileno(cap->pcap)));
}
static VALUE
+capture_breakloop(self)
+ VALUE self;
+{
+ struct capture_object *cap;
+
+ DEBUG_PRINT("capture_breakloop");
+ GetCapture(self, cap);
+ pcap_breakloop(cap->pcap);
+ return Qnil;
+}
+
+static VALUE
capture_loop(argc, argv, self)
int argc;
VALUE *argv;
VALUE self;
{
@@ -1005,9 +1030,11 @@
rb_define_method(cCapture, "snapshot", capture_snapshot, 0);
rb_define_method(cCapture, "snaplen", capture_snapshot, 0);
rb_define_method(cCapture, "stats", capture_stats, 0);
rb_define_method(cCapture, "inject", capture_inject, 1);
rb_define_method(cCapture, "direction", capture_direction, 1);
+ rb_define_method(cCapture, "breakloop", capture_breakloop, 0);
+ rb_define_method(cCapture, "closed?", is_capture_closed, 0);
/* define class Dumper */
cDumper = rb_define_class_under(mPcap, "Dumper", rb_cObject);
rb_define_singleton_method(cDumper, "open", dumper_open, 2);
rb_define_method(cDumper, "close", dumper_close, 0);