Class: RubyCyrusSASL::ClientFactory

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/ruby-cyrus-sasl/ClientFacroty.rb,
ext/rubysasl/rubysasl.c

Instance Method Summary collapse

Constructor Details

#initializeClientFactory

Returns a new instance of ClientFactory.



11
12
13
# File 'lib/ruby-cyrus-sasl/ClientFacroty.rb', line 11

def initialize
  sasl_client_init
end

Instance Method Details

#create(service, serverFQDN, callback, iplocalport = nil, ipremoteport = nil) ⇒ Object



15
16
17
# File 'lib/ruby-cyrus-sasl/ClientFacroty.rb', line 15

def create service, serverFQDN, callback, iplocalport = nil, ipremoteport = nil
  sasl_client_new service, serverFQDN, callback, iplocalport, ipremoteport
end

#sasl_client_initObject



20
21
22
23
24
25
26
27
28
29
# File 'ext/rubysasl/rubysasl.c', line 20

static VALUE t_sasl_client_init(VALUE self)
{
	int result;

	result = sasl_client_init(callbacks);
	if (result != SASL_OK) {
		rb_raise(rb_eException, "initializing libsasl");
	}
	return self;
}

#sasl_client_new(service, serverFQDN, callback, localaddr, remoteaddr) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'ext/rubysasl/rubysasl.c', line 31

static VALUE t_sasl_client_new(VALUE self, VALUE service, VALUE serverFQDN, VALUE callback, VALUE localaddr, VALUE remoteaddr)
{
	sasl_conn_t *c_conn;
	VALUE conn;
	int result;
	VALUE argv[1];
	char *c_service = (service != Qnil) ? RSTRING_PTR(service) : NULL;
	char *c_serverFQDN = (serverFQDN != Qnil) ? RSTRING_PTR(serverFQDN) : NULL;
	char *c_localaddr = (localaddr != Qnil) ? RSTRING_PTR(localaddr) : NULL;
	char *c_remoteaddr = (remoteaddr != Qnil) ? RSTRING_PTR(remoteaddr) : NULL;

	result = sasl_client_new(c_service, c_serverFQDN, c_localaddr, c_remoteaddr, NULL, 0, &c_conn);
	if (result != SASL_OK) {
		rb_raise(rb_eException, "allocating connection state");
		return self;
	}

	//TODO: free this
	conn = Data_Wrap_Struct(cClient, NULL, NULL, c_conn);
	argv[0] = callback;
	rb_obj_call_init(conn, 1, argv);
	return conn;
}