클래스: Mongo::Socket::TCP Private
- 상속:
-
Mongo::Socket
- 객체
- Mongo::Socket
- Mongo::Socket::TCP
- 다음에 정의됨:
- lib/ Mongo/socket/tcp.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
TCP 소켓용 래퍼입니다.
상수 요약
Mongo::Socket에서 상속된 상수
SSL_ERROR, TIMEOUT_ERROR, TIMEOUT_PACK, WRITE_CHUNK_SIZE
인스턴스 속성 요약 접기
-
#호스트 ⇒ string
읽기 전용
비공개
호스팅하다 연결할 호스트입니다.
-
#포트 ⇒ 정수
읽기 전용
비공개
포트 연결할 포트입니다.
Mongo::Socket에서 상속된 속성
# family, #options, #socket, #timeout
인스턴스 메서드 요약 접기
-
#연결합니다! ⇒ TCP
비공개
소켓 연결을 설정합니다.
- #connect_with_timeout(sockaddr, connect_timeout) ⇒ 객체 비공개
- #connect_without_timeout(sockaddr) ⇒ 객체 비공개
-
#initialize(호스팅하다, port, timeout, family, options = {}) ⇒ TCP
생성자
비공개
새 TCP 소켓을 초기화합니다.
Mongo::Socket에서 상속된 메서드
#alive?, #close, #connectable?, #connection_address, #connection_generation, #eof?, #gets, #monitor?, #read, #readbyte, #summary, #write
생성자 세부 정보
#initialize(호스팅하다, port, timeout, family, options = {}) ⇒ TCP
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
새 TCP 소켓을 초기화합니다.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 파일 'lib/ Mongo/socket/tcp.rb', 48줄 def 초기화(호스트, 포트, 타임아웃, family, = {}) 만약 family.nil? 올리다 ArgumentError, '패밀리를 지정해야 합니다.' end super(타임아웃, ) @host, @port = 호스트, 포트 @패밀리 = family @socket = ::소켓.신규(family, SOCK_STREAM, 0) 시작 (@socket) 연결! 구출 @socket.닫기 올리다 end end |
인스턴스 속성 세부 정보
#호스트 ⇒ string (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
반환 호스팅하다 연결할 호스팅하다 입니다.
66 67 68 |
# 파일 'lib/ Mongo/socket/tcp.rb', 66줄 def 호스트 @host end |
#포트 ⇒ 정수 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
포트를 반환합니다.
69 70 71 |
# 파일 'lib/ Mongo/socket/tcp.rb', 69줄 def 포트 @port end |
인스턴스 메서드 세부 정보
#연결합니다! ⇒ TCP
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 메서드는 내부적으로 소켓을 설정하여 객체 변경합니다.
소켓 연결을 설정합니다.
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# 파일 'lib/ Mongo/socket/tcp.rb', 83줄 def 연결! 소켓.Setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sockaddr = ::소켓.pack_sockaddr_in(포트, 호스트) connect_timeout = [:connect_timeout] map_Exceptions do 만약 connect_timeout && connect_timeout != 0 connect_with_timeout(sockaddr, connect_timeout) other connect_without_timeout(sockaddr) end end self end |
#connect_with_timeout(sockaddr, connect_timeout) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# 파일 'lib/ Mongo/socket/tcp.rb', 103줄 def connect_with_timeout(sockaddr, connect_timeout) 만약 connect_timeout <= 0 올리다 오류::SocketTimeoutError, "소켓이 연결하는 데 #{connect_timeout}초 이상이 걸렸습니다." end 마감일 = Utils.단조적 시간 + connect_timeout 시작 소켓.connect_nonblock(sockaddr) 구출 IO::WaitWritable select_timeout = 마감일 - Utils.단조적 시간 만약 select_timeout <= 0 올리다 오류::SocketTimeoutError, "소켓이 연결하는 데 #{connect_timeout}초 이상이 걸렸습니다." end 만약 IO.SELECT(nil, [소켓], nil, select_timeout) 재시도 other 소켓.닫기 올리다 오류::SocketTimeoutError, "소켓이 연결하는 데 #{connect_timeout}초 이상이 걸렸습니다." end 구출 Errno::EISCONN # 소켓이 연결되었으며 더 이상 수행할 작업이 없습니다. end end |
#connect_without_timeout(sockaddr) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
98 99 100 |
# 파일 'lib/ Mongo/socket/tcp.rb', 98줄 def connect_without_timeout(sockaddr) 소켓.연결(sockaddr) end |