Class: Protocol::QUIC::Address

Inherits:
Object
  • Object
show all
Defined in:
ext/source/Ruby/Protocol/QUIC/Address.cpp

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObject



49
50
51
52
53
# File 'ext/source/Ruby/Protocol/QUIC/Address.cpp', line 49

static VALUE Ruby_Protocol_QUIC_Address_initialize(VALUE self) {
	DATA_PTR(self) = new ::Protocol::QUIC::Address();
	
	return self;
}

Class Method Details

.resolve(host, service, family, type, flags) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'ext/source/Ruby/Protocol/QUIC/Address.cpp', line 88

VALUE Ruby_Protocol_QUIC_Address_s_resolve(VALUE klass, VALUE host, VALUE service, VALUE family, VALUE type, VALUE flags)
{
	StringValue(host);
	StringValue(service);
	
	auto addresses = ::Protocol::QUIC::Address::resolve(
		std::string_view(RSTRING_PTR(host), RSTRING_LEN(host)),
		std::string_view(RSTRING_PTR(service), RSTRING_LEN(service)),
		RB_NUM2INT(family),
		RB_NUM2INT(type),
		RB_NUM2INT(flags)
	);
	
	VALUE result = rb_ary_new_capa(addresses.size());
	
	for (auto & address : addresses) {
		rb_ary_push(result, Ruby_Protocol_QUIC_Address_wrap(klass, address));
	}
	
	return result;
}

Instance Method Details

#dataObject



70
71
72
73
74
# File 'ext/source/Ruby/Protocol/QUIC/Address.cpp', line 70

static VALUE Ruby_Protocol_QUIC_Address_data(VALUE self) {
	::Protocol::QUIC::Address *address = Ruby_Protocol_QUIC_Address_get(self);
	
	return rb_str_new((const char *)&address->data.sa, address->length);
}

#familyObject



64
65
66
67
68
# File 'ext/source/Ruby/Protocol/QUIC/Address.cpp', line 64

static VALUE  Ruby_Protocol_QUIC_Address_family(VALUE self) {
	::Protocol::QUIC::Address *address = Ruby_Protocol_QUIC_Address_get(self);
	
	return RB_INT2NUM(address->family());
}

#inspectObject



55
56
57
58
59
60
61
62
# File 'ext/source/Ruby/Protocol/QUIC/Address.cpp', line 55

static VALUE Ruby_Protocol_QUIC_Address_inspect(VALUE self) {
	auto address = Ruby_Protocol_QUIC_Address_get(self);
	auto string = address->to_string();
	
	VALUE class_name = rb_inspect(rb_class_of(self));
	
	return rb_sprintf("<%" PRIsVALUE ":%p '%s'>", class_name, (void*)self, string.c_str());
}