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