mongo 1.8.6 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|