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);