123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // Copyright (C) MongoDB, Inc. 2017-present.
- //
- // Licensed under the Apache License, Version 2.0 (the "License"); you may
- // not use this file except in compliance with the License. You may obtain
- // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- package bsonrw
- import (
- "go.mongodb.org/mongo-driver/bson/bsontype"
- "go.mongodb.org/mongo-driver/bson/primitive"
- )
- // ArrayWriter is the interface used to create a BSON or BSON adjacent array.
- // Callers must ensure they call WriteArrayEnd when they have finished creating
- // the array.
- type ArrayWriter interface {
- WriteArrayElement() (ValueWriter, error)
- WriteArrayEnd() error
- }
- // DocumentWriter is the interface used to create a BSON or BSON adjacent
- // document. Callers must ensure they call WriteDocumentEnd when they have
- // finished creating the document.
- type DocumentWriter interface {
- WriteDocumentElement(string) (ValueWriter, error)
- WriteDocumentEnd() error
- }
- // ValueWriter is the interface used to write BSON values. Implementations of
- // this interface handle creating BSON or BSON adjacent representations of the
- // values.
- type ValueWriter interface {
- WriteArray() (ArrayWriter, error)
- WriteBinary(b []byte) error
- WriteBinaryWithSubtype(b []byte, btype byte) error
- WriteBoolean(bool) error
- WriteCodeWithScope(code string) (DocumentWriter, error)
- WriteDBPointer(ns string, oid primitive.ObjectID) error
- WriteDateTime(dt int64) error
- WriteDecimal128(primitive.Decimal128) error
- WriteDouble(float64) error
- WriteInt32(int32) error
- WriteInt64(int64) error
- WriteJavascript(code string) error
- WriteMaxKey() error
- WriteMinKey() error
- WriteNull() error
- WriteObjectID(primitive.ObjectID) error
- WriteRegex(pattern, options string) error
- WriteString(string) error
- WriteDocument() (DocumentWriter, error)
- WriteSymbol(symbol string) error
- WriteTimestamp(t, i uint32) error
- WriteUndefined() error
- }
- // ValueWriterFlusher is a superset of ValueWriter that exposes functionality to flush to the underlying buffer.
- //
- // Deprecated: ValueWriterFlusher will not be supported in Go Driver 2.0.
- type ValueWriterFlusher interface {
- ValueWriter
- Flush() error
- }
- // BytesWriter is the interface used to write BSON bytes to a ValueWriter.
- // This interface is meant to be a superset of ValueWriter, so that types that
- // implement ValueWriter may also implement this interface.
- //
- // Deprecated: BytesWriter will not be supported in Go Driver 2.0.
- type BytesWriter interface {
- WriteValueBytes(t bsontype.Type, b []byte) error
- }
- // SliceWriter allows a pointer to a slice of bytes to be used as an io.Writer.
- //
- // Deprecated: SliceWriter will not be supported in Go Driver 2.0.
- type SliceWriter []byte
- // Write writes the bytes to the underlying slice.
- //
- // Deprecated: SliceWriter will not be supported in Go Driver 2.0.
- func (sw *SliceWriter) Write(p []byte) (int, error) {
- written := len(p)
- *sw = append(*sw, p...)
- return written, nil
- }
|