diff --git a/spec/std/socket/address_spec.cr b/spec/std/socket/address_spec.cr index 61ff42380b47..333b0225a3a5 100644 --- a/spec/std/socket/address_spec.cr +++ b/spec/std/socket/address_spec.cr @@ -1,5 +1,5 @@ require "spec" -require "socket" +require "socket/address" describe Socket::Address do describe ".parse" do diff --git a/spec/std/socket/addrinfo_spec.cr b/spec/std/socket/addrinfo_spec.cr index b4d02b6b477e..658dd4ddf59f 100644 --- a/spec/std/socket/addrinfo_spec.cr +++ b/spec/std/socket/addrinfo_spec.cr @@ -1,5 +1,5 @@ require "spec" -require "socket" +require "socket/addrinfo" describe Socket::Addrinfo do describe ".resolve" do diff --git a/src/socket.cr b/src/socket.cr index 3dc108e1c92b..42df39506897 100644 --- a/src/socket.cr +++ b/src/socket.cr @@ -1,42 +1,10 @@ -require "c/arpa/inet" -require "c/netdb" -require "c/netinet/in" -require "c/netinet/tcp" require "c/sys/socket" -require "c/sys/un" +require "./socket/addrinfo" class Socket < IO include IO::Buffered include IO::Syscall - class Error < Exception - end - - enum Type - STREAM = LibC::SOCK_STREAM - DGRAM = LibC::SOCK_DGRAM - RAW = LibC::SOCK_RAW - SEQPACKET = LibC::SOCK_SEQPACKET - end - - enum Protocol - IP = LibC::IPPROTO_IP - TCP = LibC::IPPROTO_TCP - UDP = LibC::IPPROTO_UDP - RAW = LibC::IPPROTO_RAW - ICMP = LibC::IPPROTO_ICMP - end - - enum Family : LibC::SaFamilyT - UNSPEC = LibC::AF_UNSPEC - UNIX = LibC::AF_UNIX - INET = LibC::AF_INET - INET6 = LibC::AF_INET6 - end - - # :nodoc: - SOMAXCONN = 128 - getter fd : Int32 @read_event : Event::Event? @@ -596,4 +564,10 @@ class Socket < IO end end -require "./socket/*" +require "./socket/ip_socket" +require "./socket/server" +require "./socket/tcp_socket" +require "./socket/tcp_server" +require "./socket/unix_socket" +require "./socket/unix_server" +require "./socket/udp_socket" diff --git a/src/socket/address.cr b/src/socket/address.cr index 72f88edb9dc6..5c93aa57bdfe 100644 --- a/src/socket/address.cr +++ b/src/socket/address.cr @@ -1,5 +1,10 @@ -require "socket" require "uri" +require "c/arpa/inet" +require "c/netdb" +require "c/netinet/in" +require "c/netinet/tcp" +require "c/sys/un" +require "./common" class Socket abstract struct Address diff --git a/src/socket/addrinfo.cr b/src/socket/addrinfo.cr index ad899e808251..f0fc01239241 100644 --- a/src/socket/addrinfo.cr +++ b/src/socket/addrinfo.cr @@ -1,4 +1,5 @@ require "uri/punycode" +require "./address" class Socket # Domain name resolver. diff --git a/src/socket/common.cr b/src/socket/common.cr new file mode 100644 index 000000000000..ed7abd177c57 --- /dev/null +++ b/src/socket/common.cr @@ -0,0 +1,28 @@ +class Socket < IO + class Error < Exception + end + + enum Type + STREAM = LibC::SOCK_STREAM + DGRAM = LibC::SOCK_DGRAM + RAW = LibC::SOCK_RAW + SEQPACKET = LibC::SOCK_SEQPACKET + end + + enum Protocol + IP = LibC::IPPROTO_IP + TCP = LibC::IPPROTO_TCP + UDP = LibC::IPPROTO_UDP + RAW = LibC::IPPROTO_RAW + ICMP = LibC::IPPROTO_ICMP + end + + enum Family : LibC::SaFamilyT + UNSPEC = LibC::AF_UNSPEC + UNIX = LibC::AF_UNIX + INET = LibC::AF_INET + INET6 = LibC::AF_INET6 + end + + SOMAXCONN = 128 +end