github.com/Jeffail/benthos/v3@v3.65.0/lib/output/socket.go (about)

     1  package output
     2  
     3  import (
     4  	"github.com/Jeffail/benthos/v3/internal/codec"
     5  	"github.com/Jeffail/benthos/v3/internal/docs"
     6  	"github.com/Jeffail/benthos/v3/lib/log"
     7  	"github.com/Jeffail/benthos/v3/lib/metrics"
     8  	"github.com/Jeffail/benthos/v3/lib/output/writer"
     9  	"github.com/Jeffail/benthos/v3/lib/types"
    10  )
    11  
    12  //------------------------------------------------------------------------------
    13  
    14  func init() {
    15  	Constructors[TypeSocket] = TypeSpec{
    16  		constructor: fromSimpleConstructor(NewSocket),
    17  		Summary: `
    18  Connects to a (tcp/udp/unix) server and sends a continuous stream of data, dividing messages according to the specified codec.`,
    19  		Description: multipartCodecDoc,
    20  		FieldSpecs: docs.FieldSpecs{
    21  			docs.FieldCommon("network", "The network type to connect as.").HasOptions(
    22  				"unix", "tcp", "udp",
    23  			),
    24  			docs.FieldCommon("address", "The address (or path) to connect to.", "/tmp/benthos.sock", "localhost:9000"),
    25  			codec.WriterDocs,
    26  		},
    27  		Categories: []Category{
    28  			CategoryNetwork,
    29  		},
    30  	}
    31  }
    32  
    33  // NewSocket creates a new Socket output type.
    34  func NewSocket(conf Config, mgr types.Manager, log log.Modular, stats metrics.Type) (Type, error) {
    35  	t, err := writer.NewSocket(conf.Socket, mgr, log, stats)
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  	return NewAsyncWriter(TypeSocket, 1, t, log, stats)
    40  }
    41  
    42  //------------------------------------------------------------------------------