/*
* Create a new connection to the FAM daemon.
*
* Raises an ArgumentError exception if the number of arguments is not 0
* or 1, or a Fam::Error exception if a connection to FAM could not
* be established.
*
* Examples:
* # connect and tell FAM the application is named 'foo'
* fam = Fam::Connection.new 'foo'
*
* # just connect
* fam = Fam::Connection.new
*
*/
static VALUE fam_conn_init(int argc, VALUE *argv, VALUE self)
{
FAMConnection *conn;
int err = 0;
Data_Get_Struct(self, FAMConnection, conn);
switch (argc) {
case 0:
err = FAMOpen(conn);
break;
case 1:
err = FAMOpen2(conn, RSTRING(argv[0])->ptr);
break;
default:
rb_raise(rb_eArgError, "invalid argument count (not 0 or 1)");
}
if (err == -1) {
rb_raise(eError, "Couldn't open FAM connection: %s", fam_error());
}
return self;
}