mongo 1.8.6 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/mongo_console +15 -0
- data/lib/mongo.rb +14 -0
- data/lib/mongo/collection.rb +80 -42
- data/lib/mongo/cursor.rb +15 -1
- data/lib/mongo/db.rb +56 -19
- data/lib/mongo/exceptions.rb +14 -0
- data/lib/mongo/gridfs/grid.rb +16 -3
- data/lib/mongo/gridfs/grid_ext.rb +14 -0
- data/lib/mongo/gridfs/grid_file_system.rb +16 -3
- data/lib/mongo/gridfs/grid_io.rb +17 -3
- data/lib/mongo/legacy.rb +14 -0
- data/lib/mongo/mongo_client.rb +93 -40
- data/lib/mongo/mongo_replica_set_client.rb +21 -0
- data/lib/mongo/mongo_sharded_client.rb +15 -1
- data/lib/mongo/networking.rb +14 -0
- data/lib/mongo/util/conversions.rb +16 -2
- data/lib/mongo/util/core_ext.rb +14 -31
- data/lib/mongo/util/logging.rb +23 -7
- data/lib/mongo/util/node.rb +17 -2
- data/lib/mongo/util/pool.rb +17 -1
- data/lib/mongo/util/pool_manager.rb +15 -2
- data/lib/mongo/util/read_preference.rb +14 -0
- data/lib/mongo/util/server_version.rb +15 -0
- data/lib/mongo/util/sharding_pool_manager.rb +13 -0
- data/lib/mongo/util/socket_util.rb +14 -0
- data/lib/mongo/util/ssl_socket.rb +48 -7
- data/lib/mongo/util/support.rb +14 -0
- data/lib/mongo/util/tcp_socket.rb +18 -4
- data/lib/mongo/util/thread_local_variable_manager.rb +14 -0
- data/lib/mongo/util/unix_socket.rb +20 -6
- data/lib/mongo/util/uri_parser.rb +16 -8
- data/lib/mongo/util/write_concern.rb +16 -2
- data/test/functional/authentication_test.rb +26 -1
- data/test/functional/collection_test.rb +140 -41
- data/test/functional/connection_test.rb +19 -6
- data/test/functional/conversions_test.rb +14 -0
- data/test/functional/cursor_fail_test.rb +14 -0
- data/test/functional/cursor_message_test.rb +14 -0
- data/test/functional/cursor_test.rb +15 -1
- data/test/functional/db_api_test.rb +15 -1
- data/test/functional/db_connection_test.rb +14 -0
- data/test/functional/db_test.rb +14 -0
- data/test/functional/grid_file_system_test.rb +16 -4
- data/test/functional/grid_io_test.rb +14 -0
- data/test/functional/grid_test.rb +14 -0
- data/test/functional/pool_test.rb +22 -6
- data/test/functional/safe_test.rb +14 -0
- data/test/functional/ssl_test.rb +109 -0
- data/test/functional/support_test.rb +14 -0
- data/test/functional/threading_test.rb +22 -8
- data/test/functional/timeout_test.rb +20 -6
- data/test/functional/uri_test.rb +14 -14
- data/test/functional/write_concern_test.rb +14 -0
- data/test/replica_set/authentication_test.rb +28 -2
- data/test/replica_set/basic_test.rb +14 -0
- data/test/replica_set/client_test.rb +14 -0
- data/test/replica_set/complex_connect_test.rb +14 -0
- data/test/replica_set/connection_test.rb +14 -0
- data/test/replica_set/count_test.rb +14 -0
- data/test/replica_set/cursor_test.rb +14 -0
- data/test/replica_set/insert_test.rb +14 -0
- data/test/replica_set/max_values_test.rb +14 -0
- data/test/replica_set/pinning_test.rb +14 -0
- data/test/replica_set/query_test.rb +14 -0
- data/test/replica_set/read_preference_test.rb +14 -0
- data/test/replica_set/refresh_test.rb +14 -0
- data/test/replica_set/replication_ack_test.rb +14 -0
- data/test/replica_set/ssl_test.rb +114 -0
- data/test/sharded_cluster/basic_test.rb +14 -0
- data/test/shared/authentication.rb +55 -0
- data/test/test_helper.rb +15 -1
- data/test/threading/basic_test.rb +14 -0
- data/test/tools/mongo_config.rb +16 -1
- data/test/tools/mongo_config_test.rb +15 -1
- data/test/unit/client_test.rb +14 -0
- data/test/unit/collection_test.rb +14 -0
- data/test/unit/connection_test.rb +14 -0
- data/test/unit/cursor_test.rb +14 -0
- data/test/unit/db_test.rb +15 -1
- data/test/unit/grid_test.rb +14 -0
- data/test/unit/mongo_sharded_client_test.rb +14 -0
- data/test/unit/node_test.rb +15 -0
- data/test/unit/pool_manager_test.rb +15 -0
- data/test/unit/pool_test.rb +14 -0
- data/test/unit/read_pref_test.rb +14 -0
- data/test/unit/read_test.rb +14 -0
- data/test/unit/safe_test.rb +14 -0
- data/test/unit/sharding_pool_manager_test.rb +15 -0
- data/test/unit/util_test.rb +14 -0
- data/test/unit/write_concern_test.rb +15 -1
- metadata +8 -4
- metadata.gz.sig +0 -0
data/lib/mongo/util/core_ext.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
#:nodoc:
|
2
16
|
class Object
|
3
17
|
|
@@ -9,17 +23,6 @@ class Object
|
|
9
23
|
|
10
24
|
end
|
11
25
|
|
12
|
-
#:nodoc:
|
13
|
-
module Enumerable
|
14
|
-
|
15
|
-
#:nodoc:
|
16
|
-
def each_with_object(memo)
|
17
|
-
each { |element| yield(element, memo) }
|
18
|
-
memo
|
19
|
-
end unless [].respond_to?(:each_with_object)
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
26
|
#:nodoc:
|
24
27
|
class Hash
|
25
28
|
|
@@ -65,23 +68,3 @@ class Class
|
|
65
68
|
end
|
66
69
|
end
|
67
70
|
end
|
68
|
-
|
69
|
-
# Fix a bug in the interaction of
|
70
|
-
# mutexes and timeouts in Ruby 1.9.
|
71
|
-
# See https://jira.mongodb.org/browse/RUBY-364 for details.
|
72
|
-
if RUBY_VERSION > '1.9'
|
73
|
-
class Mutex
|
74
|
-
def lock_with_hack
|
75
|
-
lock_without_hack
|
76
|
-
rescue ThreadError => e
|
77
|
-
if e.message != "deadlock; recursive locking"
|
78
|
-
raise
|
79
|
-
else
|
80
|
-
unlock
|
81
|
-
lock_without_hack
|
82
|
-
end
|
83
|
-
end
|
84
|
-
alias_method :lock_without_hack, :lock
|
85
|
-
alias_method :lock, :lock_with_hack
|
86
|
-
end
|
87
|
-
end
|
data/lib/mongo/util/logging.rb
CHANGED
@@ -1,6 +1,28 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
module Logging
|
3
17
|
|
18
|
+
module Instrumenter
|
19
|
+
def self.instrument(name, payload = {})
|
20
|
+
yield
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
@instrumenter = Instrumenter
|
25
|
+
|
4
26
|
def write_logging_startup_message
|
5
27
|
log(:debug, "Logging level is currently :debug which could negatively impact " +
|
6
28
|
"client-side performance. You should set your logging level no lower than " +
|
@@ -38,7 +60,7 @@ module Mongo
|
|
38
60
|
end
|
39
61
|
|
40
62
|
def self.instrumenter
|
41
|
-
@instrumenter
|
63
|
+
@instrumenter
|
42
64
|
end
|
43
65
|
|
44
66
|
def self.instrumenter=(instrumenter)
|
@@ -59,11 +81,5 @@ module Mongo
|
|
59
81
|
msg
|
60
82
|
end
|
61
83
|
end
|
62
|
-
|
63
|
-
module Instrumenter
|
64
|
-
def self.instrument(name, payload = {})
|
65
|
-
yield
|
66
|
-
end
|
67
|
-
end
|
68
84
|
end
|
69
85
|
end
|
data/lib/mongo/util/node.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
class Node
|
3
17
|
|
@@ -48,8 +62,9 @@ module Mongo
|
|
48
62
|
@node_mutex.synchronize do
|
49
63
|
begin
|
50
64
|
@socket = @client.socket_class.new(@host, @port,
|
51
|
-
|
52
|
-
|
65
|
+
@client.op_timeout,
|
66
|
+
@client.connect_timeout,
|
67
|
+
@client.socket_opts)
|
53
68
|
rescue OperationTimeout, ConnectionFailure, OperationFailure, SocketError, SystemCallError, IOError => ex
|
54
69
|
@client.log(:debug, "Failed connection to #{host_string} with #{ex.class}, #{ex.message}.")
|
55
70
|
close
|
data/lib/mongo/util/pool.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
class Pool
|
3
17
|
PING_ATTEMPTS = 6
|
@@ -161,7 +175,9 @@ module Mongo
|
|
161
175
|
# therefore, it runs within a mutex.
|
162
176
|
def checkout_new_socket
|
163
177
|
begin
|
164
|
-
socket = @client.socket_class.new(@host, @port, @client.op_timeout
|
178
|
+
socket = @client.socket_class.new(@host, @port, @client.op_timeout,
|
179
|
+
@client.connect_timeout,
|
180
|
+
@client.socket_opts)
|
165
181
|
socket.pool = self
|
166
182
|
rescue => ex
|
167
183
|
socket.close if socket
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
class PoolManager
|
3
17
|
include ThreadLocalVariableManager
|
@@ -264,7 +278,6 @@ module Mongo
|
|
264
278
|
end
|
265
279
|
end
|
266
280
|
members
|
267
|
-
|
268
|
-
|
281
|
+
end
|
269
282
|
end
|
270
283
|
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
2
16
|
module ReadPreference
|
3
17
|
READ_PREFERENCES = [
|
@@ -1,4 +1,19 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module Mongo
|
16
|
+
|
2
17
|
# Simple class for comparing server versions.
|
3
18
|
class ServerVersion
|
4
19
|
include Comparable
|
@@ -1,3 +1,16 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
1
14
|
|
2
15
|
module Mongo
|
3
16
|
class ShardingPoolManager < PoolManager
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
module SocketUtil
|
2
16
|
|
3
17
|
attr_accessor :pool, :pid
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'socket'
|
2
16
|
require 'openssl'
|
3
17
|
require 'timeout'
|
@@ -10,18 +24,45 @@ module Mongo
|
|
10
24
|
class SSLSocket
|
11
25
|
include SocketUtil
|
12
26
|
|
13
|
-
def initialize(host, port, op_timeout=nil, connect_timeout=nil)
|
14
|
-
@
|
27
|
+
def initialize(host, port, op_timeout=nil, connect_timeout=nil, opts={})
|
28
|
+
@pid = Process.pid
|
29
|
+
@op_timeout = op_timeout
|
15
30
|
@connect_timeout = connect_timeout
|
16
|
-
@pid = Process.pid
|
17
31
|
|
18
32
|
@tcp_socket = ::TCPSocket.new(host, port)
|
19
33
|
@tcp_socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
20
34
|
|
21
|
-
@
|
22
|
-
|
35
|
+
@context = OpenSSL::SSL::SSLContext.new
|
36
|
+
|
37
|
+
if opts[:cert]
|
38
|
+
@context.cert = OpenSSL::X509::Certificate.new(File.open(opts[:cert]))
|
39
|
+
end
|
40
|
+
|
41
|
+
if opts[:key]
|
42
|
+
@context.key = OpenSSL::PKey::RSA.new(File.open(opts[:key]))
|
43
|
+
end
|
44
|
+
|
45
|
+
if opts[:verify]
|
46
|
+
@context.ca_file = opts[:ca_cert]
|
47
|
+
@context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
48
|
+
end
|
23
49
|
|
24
|
-
|
50
|
+
begin
|
51
|
+
@socket = OpenSSL::SSL::SSLSocket.new(@tcp_socket, @context)
|
52
|
+
@socket.sync_close = true
|
53
|
+
connect
|
54
|
+
rescue SSLError
|
55
|
+
raise ConnectionFailure, "SSL handshake failed. MongoDB may " +
|
56
|
+
"not be configured with SSL support."
|
57
|
+
end
|
58
|
+
|
59
|
+
if opts[:verify]
|
60
|
+
unless OpenSSL::SSL.verify_certificate_identity(@socket.peer_cert, host)
|
61
|
+
raise ConnectionFailure, "SSL handshake failed. Hostname mismatch."
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
self
|
25
66
|
end
|
26
67
|
|
27
68
|
def connect
|
@@ -45,7 +86,7 @@ module Mongo
|
|
45
86
|
end
|
46
87
|
else
|
47
88
|
@socket.sysread(length, buffer)
|
48
|
-
end
|
89
|
+
end
|
49
90
|
end
|
50
91
|
end
|
51
92
|
end
|
data/lib/mongo/util/support.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'digest/md5'
|
2
16
|
|
3
17
|
module Mongo
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'socket'
|
2
16
|
require 'timeout'
|
3
17
|
|
@@ -10,14 +24,14 @@ module Mongo
|
|
10
24
|
class TCPSocket
|
11
25
|
include SocketUtil
|
12
26
|
|
13
|
-
def initialize(host, port, op_timeout=nil, connect_timeout=nil)
|
14
|
-
@op_timeout
|
27
|
+
def initialize(host, port, op_timeout=nil, connect_timeout=nil, opts={})
|
28
|
+
@op_timeout = op_timeout
|
15
29
|
@connect_timeout = connect_timeout
|
16
|
-
@pid
|
30
|
+
@pid = Process.pid
|
17
31
|
|
18
32
|
# TODO: Prefer ipv6 if server is ipv6 enabled
|
19
33
|
@address = Socket.getaddrinfo(host, nil, Socket::AF_INET).first[3]
|
20
|
-
@port
|
34
|
+
@port = port
|
21
35
|
|
22
36
|
@socket_address = Socket.pack_sockaddr_in(@port, @address)
|
23
37
|
@socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
#:nodoc:
|
2
16
|
module Mongo
|
3
17
|
module ThreadLocalVariableManager
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'socket'
|
2
16
|
|
3
17
|
module Mongo
|
@@ -7,15 +21,15 @@ module Mongo
|
|
7
21
|
# sans Timeout::timeout
|
8
22
|
#
|
9
23
|
class UNIXSocket < TCPSocket
|
10
|
-
def initialize(socket_path, port=:socket, op_timeout=nil, connect_timeout=nil)
|
11
|
-
@op_timeout
|
24
|
+
def initialize(socket_path, port=:socket, op_timeout=nil, connect_timeout=nil, opts={})
|
25
|
+
@op_timeout = op_timeout
|
12
26
|
@connect_timeout = connect_timeout
|
13
27
|
|
14
|
-
@address
|
15
|
-
@port
|
28
|
+
@address = socket_path
|
29
|
+
@port = :socket # purposely override input
|
16
30
|
|
17
|
-
@socket_address
|
18
|
-
@socket
|
31
|
+
@socket_address = Socket.pack_sockaddr_un(@address)
|
32
|
+
@socket = Socket.new(Socket::AF_UNIX, Socket::SOCK_STREAM, 0)
|
19
33
|
connect
|
20
34
|
end
|
21
35
|
end
|