...

Source file src/go.mongodb.org/mongo-driver/bson/bsonrw/writer.go

Documentation: go.mongodb.org/mongo-driver/bson/bsonrw

     1  // Copyright (C) MongoDB, Inc. 2017-present.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License"); you may
     4  // not use this file except in compliance with the License. You may obtain
     5  // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
     6  
     7  package bsonrw
     8  
     9  import (
    10  	"go.mongodb.org/mongo-driver/bson/bsontype"
    11  	"go.mongodb.org/mongo-driver/bson/primitive"
    12  )
    13  
    14  // ArrayWriter is the interface used to create a BSON or BSON adjacent array.
    15  // Callers must ensure they call WriteArrayEnd when they have finished creating
    16  // the array.
    17  type ArrayWriter interface {
    18  	WriteArrayElement() (ValueWriter, error)
    19  	WriteArrayEnd() error
    20  }
    21  
    22  // DocumentWriter is the interface used to create a BSON or BSON adjacent
    23  // document. Callers must ensure they call WriteDocumentEnd when they have
    24  // finished creating the document.
    25  type DocumentWriter interface {
    26  	WriteDocumentElement(string) (ValueWriter, error)
    27  	WriteDocumentEnd() error
    28  }
    29  
    30  // ValueWriter is the interface used to write BSON values. Implementations of
    31  // this interface handle creating BSON or BSON adjacent representations of the
    32  // values.
    33  type ValueWriter interface {
    34  	WriteArray() (ArrayWriter, error)
    35  	WriteBinary(b []byte) error
    36  	WriteBinaryWithSubtype(b []byte, btype byte) error
    37  	WriteBoolean(bool) error
    38  	WriteCodeWithScope(code string) (DocumentWriter, error)
    39  	WriteDBPointer(ns string, oid primitive.ObjectID) error
    40  	WriteDateTime(dt int64) error
    41  	WriteDecimal128(primitive.Decimal128) error
    42  	WriteDouble(float64) error
    43  	WriteInt32(int32) error
    44  	WriteInt64(int64) error
    45  	WriteJavascript(code string) error
    46  	WriteMaxKey() error
    47  	WriteMinKey() error
    48  	WriteNull() error
    49  	WriteObjectID(primitive.ObjectID) error
    50  	WriteRegex(pattern, options string) error
    51  	WriteString(string) error
    52  	WriteDocument() (DocumentWriter, error)
    53  	WriteSymbol(symbol string) error
    54  	WriteTimestamp(t, i uint32) error
    55  	WriteUndefined() error
    56  }
    57  
    58  // ValueWriterFlusher is a superset of ValueWriter that exposes functionality to flush to the underlying buffer.
    59  //
    60  // Deprecated: ValueWriterFlusher will not be supported in Go Driver 2.0.
    61  type ValueWriterFlusher interface {
    62  	ValueWriter
    63  	Flush() error
    64  }
    65  
    66  // BytesWriter is the interface used to write BSON bytes to a ValueWriter.
    67  // This interface is meant to be a superset of ValueWriter, so that types that
    68  // implement ValueWriter may also implement this interface.
    69  //
    70  // Deprecated: BytesWriter will not be supported in Go Driver 2.0.
    71  type BytesWriter interface {
    72  	WriteValueBytes(t bsontype.Type, b []byte) error
    73  }
    74  
    75  // SliceWriter allows a pointer to a slice of bytes to be used as an io.Writer.
    76  //
    77  // Deprecated: SliceWriter will not be supported in Go Driver 2.0.
    78  type SliceWriter []byte
    79  
    80  // Write writes the bytes to the underlying slice.
    81  //
    82  // Deprecated: SliceWriter will not be supported in Go Driver 2.0.
    83  func (sw *SliceWriter) Write(p []byte) (int, error) {
    84  	written := len(p)
    85  	*sw = append(*sw, p...)
    86  	return written, nil
    87  }
    88  

View as plain text