transport

package
v0.0.0-...-87e9d67 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2023 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package transport contains different MTProto transport implementations.

Index

Constants

This section is empty.

Variables

View Source
var (
	// Abridged is abridged transport protocol.
	//
	// See https://core.telegram.org/mtproto/mtproto-transports#abridged
	Abridged = NewProtocol(func() Codec { return codec.Abridged{} })

	// Intermediate is intermediate transport protocol.
	//
	// See https://core.telegram.org/mtproto/mtproto-transports#intermediate
	Intermediate = NewProtocol(func() Codec { return codec.Intermediate{} })

	// PaddedIntermediate is padded intermediate transport protocol.
	//
	// See https://core.telegram.org/mtproto/mtproto-transports#padded-intermediate
	PaddedIntermediate = NewProtocol(func() Codec { return codec.PaddedIntermediate{} })

	// Full is full transport protocol.
	//
	// See https://core.telegram.org/mtproto/mtproto-transports#full
	Full = NewProtocol(func() Codec { return &codec.Full{} })
)

Telegram transport protocols.

See https://core.telegram.org/mtproto/mtproto-transports

Functions

func ObfuscatedListener

func ObfuscatedListener(listener net.Listener) net.Listener

ObfuscatedListener creates new obfuscated2 listener using given net.Listener.

Useful for creating Telegram servers:

transport.Listen(transport.ObfuscatedListener(ln))

func WebsocketListener

func WebsocketListener(addr net.Addr) (net.Listener, http.Handler)

WebsocketListener creates new MTProto Websocket listener.

Types

type Codec

type Codec interface {
	// WriteHeader sends protocol tag if needed.
	WriteHeader(w io.Writer) error
	// ReadHeader reads protocol tag if needed.
	ReadHeader(r io.Reader) error
	// Write encode to writer message from given buffer.
	Write(w io.Writer, b *bin.Buffer) error
	// Read fills buffer with received message.
	Read(r io.Reader, b *bin.Buffer) error
}

Codec is MTProto transport protocol encoding abstraction.

type Conn

type Conn interface {
	Send(ctx context.Context, b *bin.Buffer) error
	Recv(ctx context.Context, b *bin.Buffer) error
	Close() error
}

Conn is transport connection.

type Listener

type Listener struct {
	// contains filtered or unexported fields
}

Listener is a simple net.Listener wrapper for listening MTProto transport connections.

func Listen

func Listen(listener net.Listener) Listener

Listen creates new Listener using given net.Listener. Transport codec will be detected automatically.

func ListenCodec

func ListenCodec(codec func() Codec, listener net.Listener) Listener

ListenCodec creates new Listener using given net.Listener. Listener will always use given Codec constructor.

func (Listener) Accept

func (l Listener) Accept() (_ Conn, rErr error)

Accept waits for and returns the next connection to the listener.

func (Listener) Addr

func (l Listener) Addr() net.Addr

Addr returns the listener's network address.

func (Listener) Close

func (l Listener) Close() error

Close closes the listener. Any blocked Accept operations will be unblocked and return errors.

type Protocol

type Protocol struct {
	// contains filtered or unexported fields
}

Protocol is MTProto transport protocol.

See https://core.telegram.org/mtproto/mtproto-transports

func NewProtocol

func NewProtocol(getCodec func() Codec) Protocol

NewProtocol creates new transport protocol using user Codec constructor.

See https://core.telegram.org/mtproto/mtproto-transports

func (Protocol) Codec

func (p Protocol) Codec() Codec

Codec creates new codec using protocol settings.

func (Protocol) CodecNoHeader

func (p Protocol) CodecNoHeader() Codec

CodecNoHeader is Codec without header.

func (Protocol) Handshake

func (p Protocol) Handshake(conn net.Conn) (Conn, error)

Handshake inits given net.Conn as MTProto connection.

func (Protocol) Pipe

func (p Protocol) Pipe() (a, b Conn)

Pipe creates an in-memory MTProto connection.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL