diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d4d6bf --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.o +.DS_Store +mkmf.log +binlog.bundle diff --git a/ext/ruby_binlog.cpp b/ext/ruby_binlog.cpp index 8bcba20..ef1007a 100644 --- a/ext/ruby_binlog.cpp +++ b/ext/ruby_binlog.cpp @@ -206,8 +206,6 @@ struct Client { return (result == 0) ? Qtrue : Qfalse; } - // XXX: Don't use - /* static VALUE disconnect(VALUE self) { Client *p; mysql::system::Binlog_tcp_driver *driver; @@ -215,13 +213,16 @@ struct Client { Data_Get_Struct(self, Client, p); driver = cast_to_tcp_driver(p->m_binlog->m_driver); - if (driver) { - driver->disconnect(); + if (!driver) { + return Qfalse; } - return Qnil; + if (driver->m_socket) { + driver->shutdown(); + driver->disconnect(); + return Qtrue; + } } - */ // XXX: Don't use /* @@ -464,7 +465,7 @@ struct Client { rb_define_private_method(rb_cBinlogClient, "initialize", __F(&initialize), -1); rb_define_method(rb_cBinlogClient, "connect", __F(&connect), 0); // XXX: Don't use - //rb_define_method(rb_cBinlogClient, "disconnect", __F(&disconnect), 0); + rb_define_method(rb_cBinlogClient, "disconnect", __F(&disconnect), 0); //rb_define_method(rb_cBinlogClient, "reconnect", __F(&reconnect), 0); rb_define_method(rb_cBinlogClient, "closed?", __F(&is_closed), 0); rb_define_method(rb_cBinlogClient, "wait_for_next_event", __F(&wait_for_next_event), 0);