module Mongo::WriteConcern
Base module for all write concern specific behaviour.
@since 2.0.0
Constants
- DEFAULT
The default write concern is to acknowledge on a single server.
@since 2.0.0
- FSYNC
The file sync write concern.
@since 2.0.0
- GET_LAST_ERROR
The GLE command name.
@since 2.0.0
- J
The journal write concern.
@since 2.0.0
- W
The number of servers write concern.
@since 2.0.0
- WTIMEOUT
The wtimeout write concern.
@since 2.0.0
Public Instance Methods
Get a write concern mode for the provided options.
@example Get a write concern mode.
Mongo::WriteConcern.get(:w => 1)
@param [ Hash ] options The options to instantiate with.
@option options :w [ Integer, String ] The number of servers or the
custom mode to acknowledge.
@option options :j [ true, false ] Whether to acknowledge a write to
the journal.
@option options :fsync [ true, false ] Should the write be synced to
disc.
@option options :wtimeout [ Integer ] The number of milliseconds to
wait for acknowledgement before raising an error.
@return [ Unacknowledged
, Acknowledged
] The appropriate concern.
@raise [ Error::InvalidWriteConcern
] If the write concern is invalid.
@since 2.0.0
# File lib/mongo/write_concern.rb, line 78 def get(options) return options if options.is_a?(Unacknowledged) || options.is_a?(Acknowledged) if options validate!(options) if unacknowledged?(options) Unacknowledged.new(options) else Acknowledged.new(options) end end end
Private Instance Methods
Determine if the options are for an unacknowledged write concern.
@api private
@param [ Hash ] options The options to check.
@return [ true, false ] If the options are unacknowledged.
@since 2.0.0
# File lib/mongo/write_concern.rb, line 111 def unacknowledged?(options) options[W] == 0 end
# File lib/mongo/write_concern.rb, line 92 def validate!(options) if options[W] if options[W] == 0 && (options[J] || options[FSYNC]) raise Mongo::Error::InvalidWriteConcern.new elsif options[W].is_a?(Integer) && options[W] < 0 raise Mongo::Error::InvalidWriteConcern.new end end end