@@ -27,6 +27,9 @@ class Parser
2727 # @return [ String ] message The error message parsed from the document.
2828 attr_reader :message
2929
30+ # @return [ Array<Protocol::Reply> ] replies The message replies.
31+ attr_reader :replies
32+
3033 # Create the new parser with the returned document.
3134 #
3235 # @example Create the new parser.
@@ -35,8 +38,9 @@ class Parser
3538 # @param [ BSON::Document ] document The returned document.
3639 #
3740 # @since 2.0.0
38- def initialize ( document )
41+ def initialize ( document , replies = nil )
3942 @document = document || { }
43+ @replies = replies
4044 parse!
4145 end
4246
@@ -50,6 +54,7 @@ def parse!
5054 parse_multiple ( @message , WRITE_ERRORS )
5155 parse_single ( @message , ERRMSG ,
5256 document [ WRITE_CONCERN_ERROR ] ) if document [ WRITE_CONCERN_ERROR ]
57+ parse_flag ( @message )
5358 end
5459
5560 def parse_single ( message , key , doc = document )
@@ -66,6 +71,12 @@ def parse_multiple(message, key)
6671 end
6772 end
6873
74+ def parse_flag ( message )
75+ if replies && replies . first && replies . first . cursor_not_found?
76+ append ( message , "#{ CURSOR_NOT_FOUND } " )
77+ end
78+ end
79+
6980 def append ( message , error )
7081 if message . length > 1
7182 message . concat ( ", #{ error } " )
0 commit comments