Esempio n. 1
0
        /// <summary>
        /// Writes the start of a BSON document to the writer.
        /// </summary>
        public override void WriteStartDocument()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonBinaryWriter");
            }
            if (state != BsonWriterState.Initial && state != BsonWriterState.Value && state != BsonWriterState.ScopeDocument && state != BsonWriterState.Done)
            {
                var message = string.Format("WriteStartDocument cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            switch (state)
            {
            case BsonWriterState.Initial:
            case BsonWriterState.Done:
                context = new BsonDocumentWriterContext(null, ContextType.Document, topLevelDocument);
                break;

            case BsonWriterState.Value:
                context = new BsonDocumentWriterContext(context, ContextType.Document, new BsonDocument());
                break;

            case BsonWriterState.ScopeDocument:
                context = new BsonDocumentWriterContext(context, ContextType.ScopeDocument, new BsonDocument());
                break;

            default:
                throw new BsonInternalException("Unexpected state");
            }

            state = BsonWriterState.Name;
        }
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 public BsonDocumentWriter(
     BsonDocument topLevelDocument
 ) {
     this.topLevelDocument = topLevelDocument;
     context = null;
     state = BsonWriterState.Initial;
 }
Esempio n. 3
0
        /// <summary>
        /// Writes the start of a BSON document to the writer.
        /// </summary>
        public override void WriteStartDocument()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonDocumentWriter");
            }
            if (state != BsonWriterState.Initial && state != BsonWriterState.Value && state != BsonWriterState.ScopeDocument && state != BsonWriterState.Done)
            {
                ThrowInvalidState("WriteStartDocument", BsonWriterState.Initial, BsonWriterState.Value, BsonWriterState.ScopeDocument, BsonWriterState.Done);
            }

            switch (state)
            {
            case BsonWriterState.Initial:
            case BsonWriterState.Done:
                context = new BsonDocumentWriterContext(null, ContextType.Document, topLevelDocument);
                break;

            case BsonWriterState.Value:
                context = new BsonDocumentWriterContext(context, ContextType.Document, new BsonDocument());
                break;

            case BsonWriterState.ScopeDocument:
                context = new BsonDocumentWriterContext(context, ContextType.ScopeDocument, new BsonDocument());
                break;

            default:
                throw new BsonInternalException("Unexpected state.");
            }

            state = BsonWriterState.Name;
        }
 /// <summary>
 /// Closes the writer.
 /// </summary>
 public override void Close() {
     // Close can be called on Disposed objects
     if (state != BsonWriterState.Closed) {
         context = null;
         state = BsonWriterState.Closed;
     }
 }
Esempio n. 5
0
 // constructors
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 /// <param name="settings">The settings.</param>
 public BsonDocumentWriter(BsonDocument topLevelDocument, BsonDocumentWriterSettings settings)
     : base(settings)
 {
     this.topLevelDocument = topLevelDocument;
     this.settings         = settings; // already frozen by base class
     context = null;
     state   = BsonWriterState.Initial;
 }
 // constructors
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 /// <param name="settings">The settings.</param>
 public BsonDocumentWriter(BsonDocument topLevelDocument, BsonDocumentWriterSettings settings)
     : base(settings)
 {
     _topLevelDocument = topLevelDocument;
     _documentWriterSettings = settings; // already frozen by base class
     _context = null;
     _state = BsonWriterState.Initial;
 }
Esempio n. 7
0
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 public BsonDocumentWriter(
     BsonDocument topLevelDocument
     )
 {
     this.topLevelDocument = topLevelDocument;
     context = null;
     state   = BsonWriterState.Initial;
 }
Esempio n. 8
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     string code)
 {
     _parentContext = parentContext;
     _contextType   = contextType;
     _code          = code;
 }
Esempio n. 9
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonArray array)
 {
     _parentContext = parentContext;
     _contextType   = contextType;
     _array         = array;
 }
Esempio n. 10
0
 // constructors
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonDocument document)
 {
     _parentContext = parentContext;
     _contextType   = contextType;
     _document      = document;
 }
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     string code
 ) {
     this.parentContext = parentContext;
     this.contextType = contextType;
     this.code = code;
 }
Esempio n. 12
0
 // constructors
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonDocument document)
 {
     _parentContext = parentContext;
     _contextType = contextType;
     _document = document;
 }
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonDocument document
 ) {
     this.parentContext = parentContext;
     this.contextType = contextType;
     this.document = document;
 }
Esempio n. 14
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     string code)
 {
     _parentContext = parentContext;
     _contextType = contextType;
     _code = code;
 }
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 /// <param name="settings">The settings.</param>
 public BsonDocumentWriter(
     BsonDocument topLevelDocument,
     BsonDocumentWriterSettings settings
 ) {
     this.topLevelDocument = topLevelDocument;
     this.settings = settings.Freeze();
     context = null;
     state = BsonWriterState.Initial;
 }
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonArray array
 ) {
     this.parentContext = parentContext;
     this.contextType = contextType;
     this.array = array;
 }
Esempio n. 17
0
 // public methods
 /// <summary>
 /// Closes the writer.
 /// </summary>
 public override void Close()
 {
     // Close can be called on Disposed objects
     if (state != BsonWriterState.Closed)
     {
         context = null;
         state   = BsonWriterState.Closed;
     }
 }
Esempio n. 18
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonArray array)
 {
     _parentContext = parentContext;
     _contextType = contextType;
     _array = array;
 }
Esempio n. 19
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonArray array
     )
 {
     this.parentContext = parentContext;
     this.contextType   = contextType;
     this.array         = array;
 }
Esempio n. 20
0
 /// <summary>
 /// Initializes a new instance of the BsonDocumentWriter class.
 /// </summary>
 /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
 /// <param name="settings">The settings.</param>
 public BsonDocumentWriter(
     BsonDocument topLevelDocument,
     BsonDocumentWriterSettings settings
     )
 {
     this.topLevelDocument = topLevelDocument;
     this.settings         = settings.Freeze();
     context = null;
     state   = BsonWriterState.Initial;
 }
Esempio n. 21
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     string code
     )
 {
     this.parentContext = parentContext;
     this.contextType   = contextType;
     this.code          = code;
 }
Esempio n. 22
0
 internal BsonDocumentWriterContext(
     BsonDocumentWriterContext parentContext,
     ContextType contextType,
     BsonDocument document
     )
 {
     this.parentContext = parentContext;
     this.contextType   = contextType;
     this.document      = document;
 }
Esempio n. 23
0
        // constructors
        /// <summary>
        /// Initializes a new instance of the BsonDocumentWriter class.
        /// </summary>
        /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
        /// <param name="settings">The settings.</param>
        public BsonDocumentWriter(BsonDocument topLevelDocument, BsonDocumentWriterSettings settings)
            : base(settings)
        {
            if (topLevelDocument == null)
            {
                throw new ArgumentNullException("topLevelDocument");
            }

            _topLevelDocument = topLevelDocument;
	        _context = null;
            State = BsonWriterState.Initial;
        }
Esempio n. 24
0
        // constructors
        /// <summary>
        /// Initializes a new instance of the BsonDocumentWriter class.
        /// </summary>
        /// <param name="topLevelDocument">The document to write to (normally starts out as an empty document).</param>
        /// <param name="settings">The settings.</param>
        public BsonDocumentWriter(BsonDocument topLevelDocument, BsonDocumentWriterSettings settings)
            : base(settings)
        {
            if (topLevelDocument == null)
            {
                throw new ArgumentNullException("topLevelDocument");
            }

            _topLevelDocument = topLevelDocument;
            _context          = null;
            State             = BsonWriterState.Initial;
        }
        /// <summary>
        /// Initializes a new instance of the BsonDocumentWriter class.
        /// </summary>
        /// <param name="document">The document to write to (normally starts out as an empty document).</param>
        /// <param name="settings">The settings.</param>
        public BsonDocumentWriter(BsonDocument document, BsonDocumentWriterSettings settings)
            : base(settings)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }

            _document = document;
            _documentWriterSettings = settings; // already frozen by base class
            _context = null;
            State    = BsonWriterState.Initial;
        }
        /// <summary>
        /// Initializes a new instance of the BsonDocumentWriter class.
        /// </summary>
        /// <param name="document">The document to write to (normally starts out as an empty document).</param>
        /// <param name="settings">The settings.</param>
        public BsonDocumentWriter(BsonDocument document, BsonDocumentWriterSettings settings)
            : base(settings)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }

            _document = document;
            _documentWriterSettings = settings; // already frozen by base class
            _context = null;
            State = BsonWriterState.Initial;
        }
Esempio n. 27
0
        /// <summary>
        /// Writes a BSON JavaScript to the writer (call WriteStartDocument to start writing the scope).
        /// </summary>
        /// <param name="code">The JavaScript code.</param>
        public override void WriteJavaScriptWithScope(string code)
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonDocumentWriter");
            }
            if (state != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteJavaScriptWithScope", BsonWriterState.Value);
            }

            context = new BsonDocumentWriterContext(context, ContextType.JavaScriptWithScope, code);
            state   = BsonWriterState.ScopeDocument;
        }
Esempio n. 28
0
        /// <summary>
        /// Writes the start of a BSON array to the writer.
        /// </summary>
        public override void WriteStartArray()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonDocumentWriter");
            }
            if (state != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteStartArray", BsonWriterState.Value);
            }

            context = new BsonDocumentWriterContext(context, ContextType.Array, new BsonArray());
            state   = BsonWriterState.Value;
        }
Esempio n. 29
0
        /// <summary>
        /// Writes the start of a BSON array to the writer.
        /// </summary>
        public override void WriteStartArray()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonBinaryWriter");
            }
            if (state != BsonWriterState.Value)
            {
                var message = string.Format("WriteStartArray cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            context = new BsonDocumentWriterContext(context, ContextType.Array, new BsonArray());
            state   = BsonWriterState.Value;
        }
Esempio n. 30
0
        /// <summary>
        /// Writes a BSON JavaScript to the writer (call WriteStartDocument to start writing the scope).
        /// </summary>
        /// <param name="code">The JavaScript code.</param>
        public override void WriteJavaScriptWithScope(
            string code
            )
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonBinaryWriter");
            }
            if (state != BsonWriterState.Value)
            {
                var message = string.Format("WriteJavaScriptWithScope cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            context = new BsonDocumentWriterContext(context, ContextType.JavaScriptWithScope, code);
            state   = BsonWriterState.ScopeDocument;
        }
Esempio n. 31
0
        /// <summary>
        /// Writes the end of a BSON array to the writer.
        /// </summary>
        public override void WriteEndArray()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonBinaryWriter");
            }
            if (state != BsonWriterState.Value || context.ContextType != ContextType.Array)
            {
                var message = string.Format("WriteEndArray cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            var array = context.Array;

            context = context.ParentContext;
            WriteValue(array);
            state = GetNextState();
        }
Esempio n. 32
0
        /// <summary>
        /// Writes the end of a BSON document to the writer.
        /// </summary>
        public override void WriteEndDocument()
        {
            if (Disposed)
            {
                throw new ObjectDisposedException("BsonDocumentWriter");
            }
            if (State != BsonWriterState.Name)
            {
                ThrowInvalidState("WriteEndDocument", BsonWriterState.Name);
            }
            if (_context.ContextType != ContextType.Document && _context.ContextType != ContextType.ScopeDocument)
            {
                ThrowInvalidContextType("WriteEndDocument", _context.ContextType, ContextType.Document, ContextType.ScopeDocument);
            }

            base.WriteEndDocument();
            if (_context.ContextType == ContextType.ScopeDocument)
            {
                var scope = _context.Document;
                _context = _context.ParentContext;
                var code = _context.Code;
                _context = _context.ParentContext;
                WriteValue(new BsonJavaScriptWithScope(code, scope));
            }
            else
            {
                var document = _context.Document;
                _context = _context.ParentContext;
                if (_context != null)
                {
                    WriteValue(document);
                }
            }

            if (_context == null)
            {
                State = BsonWriterState.Done;
            }
            else
            {
                State = GetNextState();
            }
        }
Esempio n. 33
0
        /// <summary>
        /// Writes the end of a BSON array to the writer.
        /// </summary>
        public override void WriteEndArray()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonDocumentWriter");
            }
            if (state != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteEndArray", BsonWriterState.Value);
            }
            if (context.ContextType != ContextType.Array)
            {
                ThrowInvalidContextType("WriteEndArray", context.ContextType, ContextType.Array);
            }

            var array = context.Array;

            context = context.ParentContext;
            WriteValue(array);
            state = GetNextState();
        }
Esempio n. 34
0
        /// <summary>
        /// Writes the end of a BSON document to the writer.
        /// </summary>
        public override void WriteEndDocument()
        {
            if (disposed)
            {
                throw new ObjectDisposedException("BsonBinaryWriter");
            }
            if (state != BsonWriterState.Name || (context.ContextType != ContextType.Document && context.ContextType != ContextType.ScopeDocument))
            {
                var message = string.Format("WriteEndDocument cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            if (context.ContextType == ContextType.ScopeDocument)
            {
                var scope = context.Document;
                context = context.ParentContext;
                var code = context.Code;
                context = context.ParentContext;
                WriteValue(new BsonJavaScriptWithScope(code, scope));
            }
            else
            {
                var document = context.Document;
                context = context.ParentContext;
                if (context != null)
                {
                    WriteValue(document);
                }
            }

            if (context == null)
            {
                state = BsonWriterState.Done;
            }
            else
            {
                state = GetNextState();
            }
        }
        public override void WriteEndArray()
        {
            if (disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
            if (state != BsonWriterState.Value || context.ContextType != ContextType.Array) {
                var message = string.Format("WriteEndArray cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            var array = context.Array;
            context = context.ParentContext;
            WriteValue(array);
            state = GetNextState();
        }
        /// <summary>
        /// Writes the start of a BSON array to the writer.
        /// </summary>
        public override void WriteStartArray()
        {
            if (Disposed) { throw new ObjectDisposedException("BsonDocumentWriter"); }
            if (State != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteStartArray", BsonWriterState.Value);
            }

            base.WriteStartArray();
            _context = new BsonDocumentWriterContext(_context, ContextType.Array, new BsonArray());
            State = BsonWriterState.Value;
        }
        /// <summary>
        /// Writes the end of a BSON document to the writer.
        /// </summary>
        public override void WriteEndDocument()
        {
            if (Disposed) { throw new ObjectDisposedException("BsonDocumentWriter"); }
            if (State != BsonWriterState.Name)
            {
                ThrowInvalidState("WriteEndDocument", BsonWriterState.Name);
            }
            if (_context.ContextType != ContextType.Document && _context.ContextType != ContextType.ScopeDocument)
            {
                ThrowInvalidContextType("WriteEndDocument", _context.ContextType, ContextType.Document, ContextType.ScopeDocument);
            }

            base.WriteEndDocument();
            if (_context.ContextType == ContextType.ScopeDocument)
            {
                var scope = _context.Document;
                _context = _context.ParentContext;
                var code = _context.Code;
                _context = _context.ParentContext;
                WriteValue(new BsonJavaScriptWithScope(code, scope));
            }
            else
            {
                var document = _context.Document;
                _context = _context.ParentContext;
                if (_context != null)
                {
                    WriteValue(document);
                }
            }

            if (_context == null)
            {
                State = BsonWriterState.Done;
            }
            else
            {
                State = GetNextState();
            }
        }
        public override void WriteStartDocument()
        {
            if (disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
            if (state != BsonWriterState.Initial && state != BsonWriterState.Value && state != BsonWriterState.ScopeDocument && state != BsonWriterState.Done) {
                var message = string.Format("WriteStartDocument cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            switch (state) {
                case BsonWriterState.Initial:
                case BsonWriterState.Done:
                    context = new BsonDocumentWriterContext(null, ContextType.Document, topLevelDocument);
                    break;
                case BsonWriterState.Value:
                    context = new BsonDocumentWriterContext(context, ContextType.Document, new BsonDocument());
                    break;
                case BsonWriterState.ScopeDocument:
                    context = new BsonDocumentWriterContext(context, ContextType.ScopeDocument, new BsonDocument());
                    break;
                default:
                    throw new BsonInternalException("Unexpected state");
            }

            state = BsonWriterState.Name;
        }
        /// <summary>
        /// Writes the end of a BSON array to the writer.
        /// </summary>
        public override void WriteEndArray()
        {
            if (Disposed) { throw new ObjectDisposedException("BsonDocumentWriter"); }
            if (State != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteEndArray", BsonWriterState.Value);
            }
            if (_context.ContextType != ContextType.Array)
            {
                ThrowInvalidContextType("WriteEndArray", _context.ContextType, ContextType.Array);
            }

            base.WriteEndArray();
            var array = _context.Array;
            _context = _context.ParentContext;
            WriteValue(array);
            State = GetNextState();
        }
        public override void WriteEndDocument()
        {
            if (disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
            if (state != BsonWriterState.Name || (context.ContextType != ContextType.Document && context.ContextType != ContextType.ScopeDocument)) {
                var message = string.Format("WriteEndDocument cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            if (context.ContextType == ContextType.ScopeDocument) {
                var scope = context.Document;
                context = context.ParentContext;
                var code = context.Code;
                context = context.ParentContext;
                WriteValue(new BsonJavaScriptWithScope(code, scope));
            } else {
                var document = context.Document;
                context = context.ParentContext;
                if (context != null) {
                    WriteValue(document);
                }
            }

            if (context == null) {
                state = BsonWriterState.Done;
            } else {
                state = GetNextState();
            }
        }
        /// <summary>
        /// Writes a BSON JavaScript to the writer (call WriteStartDocument to start writing the scope).
        /// </summary>
        /// <param name="code">The JavaScript code.</param>
        public override void WriteJavaScriptWithScope(string code)
        {
            if (Disposed) { throw new ObjectDisposedException("BsonDocumentWriter"); }
            if (State != BsonWriterState.Value)
            {
                ThrowInvalidState("WriteJavaScriptWithScope", BsonWriterState.Value);
            }

            _context = new BsonDocumentWriterContext(_context, ContextType.JavaScriptWithScope, code);
            State = BsonWriterState.ScopeDocument;
        }
        public override void WriteJavaScriptWithScope(
            string code
        )
        {
            if (disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
            if (state != BsonWriterState.Value) {
                var message = string.Format("WriteJavaScriptWithScope cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            context = new BsonDocumentWriterContext(context, ContextType.JavaScriptWithScope, code);
            state = BsonWriterState.ScopeDocument;
        }
        /// <summary>
        /// Writes the start of a BSON document to the writer.
        /// </summary>
        public override void WriteStartDocument()
        {
            if (Disposed) { throw new ObjectDisposedException("BsonDocumentWriter"); }
            if (State != BsonWriterState.Initial && State != BsonWriterState.Value && State != BsonWriterState.ScopeDocument && State != BsonWriterState.Done)
            {
                ThrowInvalidState("WriteStartDocument", BsonWriterState.Initial, BsonWriterState.Value, BsonWriterState.ScopeDocument, BsonWriterState.Done);
            }

            base.WriteStartDocument();
            switch (State)
            {
                case BsonWriterState.Initial:
                case BsonWriterState.Done:
                    _context = new BsonDocumentWriterContext(null, ContextType.Document, _topLevelDocument);
                    break;
                case BsonWriterState.Value:
                    _context = new BsonDocumentWriterContext(_context, ContextType.Document, new BsonDocument());
                    break;
                case BsonWriterState.ScopeDocument:
                    _context = new BsonDocumentWriterContext(_context, ContextType.ScopeDocument, new BsonDocument());
                    break;
                default:
                    throw new BsonInternalException("Unexpected state.");
            }

            State = BsonWriterState.Name;
        }
        public override void WriteStartArray()
        {
            if (disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
            if (state != BsonWriterState.Value) {
                var message = string.Format("WriteStartArray cannot be called when State is: {0}", state);
                throw new InvalidOperationException(message);
            }

            context = new BsonDocumentWriterContext(context, ContextType.Array, new BsonArray());
            state = BsonWriterState.Value;
        }