transport

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

README

トランスポート層

トランスポート層では、エンコード層によりシリアライズされたバイナリの 下位のトランスポートプロトコルへの格納方法 を定義します。

トランスポート層のインターフェース

トランスポート層が実装すべきインターフェースについては、ワイヤ層の Transport インターフェース をご参照ください。

対応トランスポート一覧

Documentation

Overview

Package transport は、 iSCP で使用するトランスポートをまとめたパッケージです。

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrAlreadyClosed は、トランスポート層のコネクションが切れている場合に返されます。
	//
	// DEPRECATED: errors.ErrConnectionClosed を使用して下さい
	ErrAlreadyClosed = errors.ErrConnectionClosed

	// ErrInvalidMessage は、 メッセージが不正だった時に返されます。
	//
	// DEPRECATED: errors.ErrMalformedMessage を使用して下さい
	ErrInvalidMessage = errors.ErrMalformedMessage

	EOF = io.EOF
)

Conn は以下のエラーを返します。

View Source
var Now = time.Now

Now は transport内で利用する現在時刻関数です。

Functions

func Copy

func Copy(dst ReadWriter, src ReadWriter) error

func Pipe

func Pipe() (ReadWriter, ReadWriter)

Types

type DialConfig

type DialConfig struct {
	Address        string
	CompressConfig compress.Config
	EncodingName   EncodingName
}

func (DialConfig) NegotiationParams

func (c DialConfig) NegotiationParams() NegotiationParams

type Dialer

type Dialer interface {
	Dial(DialConfig) (Transport, error)
}

type EncodingName

type EncodingName string

EncodingName は、エンコーディングの識別名を表します。

const (
	// EncodingNameJSON は、 JSON 形式のエンコーディングを表す名称です。
	EncodingNameJSON EncodingName = "json"

	// EncodingNameProtobuf は、 Protocol Buffers 形式のエンコーディングを表す名称です。
	EncodingNameProtobuf EncodingName = "proto"
)

type Name

type Name string

Nameは、トランスポート名です。

const (
	// QUICトランスポート
	NameQUIC Name = "quic"
	// WebSocketトランスポート
	NameWebSocket Name = "websocket"
	// WebTransportトランスポート
	NameWebTransport Name = "webtransport"
)

type NegotiationParams

type NegotiationParams struct {
	Encoding           EncodingName  `json:"enc,omitempty"`
	Compress           compress.Type `json:"comp,omitempty"`
	CompressLevel      *int          `json:"clevel,string,omitempty"`
	CompressWindowBits *int          `json:"cwinbits,string,omitempty"`
}

func (*NegotiationParams) CompressConfig

func (p *NegotiationParams) CompressConfig(base compress.Config) compress.Config

CompressConfig は、事前ネゴシエーションの情報をもとに設定された新たな compress.Config を返します。

func (*NegotiationParams) MarshalKeyValues

func (p *NegotiationParams) MarshalKeyValues() (map[string]string, error)

func (*NegotiationParams) UnmarshalKeyValues

func (p *NegotiationParams) UnmarshalKeyValues(keyvals map[string]string) error

func (NegotiationParams) Validate

func (p NegotiationParams) Validate() error

type ReadWriter

type ReadWriter interface {
	Reader
	Writer
}

ReadWriterはトランスポートからメッセージを読み書きのインターフェースです。

type Reader

type Reader interface {
	// Read は、トランスポートからメッセージを読み出します。
	Read() ([]byte, error)
	// Close は、トランスポートのコネクションを切断します。
	Close() error
	// RxBytesCounterValue は、現在の受信メッセージカウンターの値を返します。
	RxBytesCounterValue() uint64
}

Readerはトランスポートからメッセージを読み出すインターフェースです。

type Transport

type Transport interface {
	ReadWriter

	// AsUnreliable は UnreliableTransportを返します。
	//
	// もし、 Unreliableをサポートしていない場合は okはfalseを返します。
	AsUnreliable() (tr UnreliableTransport, ok bool)

	// NegotiationParams は、トランスポートで事前ネゴシエーションされたパラメーターを返します。
	NegotiationParams() NegotiationParams

	// Nameは、トランスポート名を返却します。
	Name() Name
}

Transport は、 iSCP のトランスポート層を抽象化したインターフェースです。

type UnreliableTransport

type UnreliableTransport interface {
	ReadWriter
	IsUnreliable()
}

type Writer

type Writer interface {
	// Write は、トランスポートへメッセージを書き込みます。
	Write([]byte) error
	// Close は、トランスポートのコネクションを切断します。
	Close() error
	// TxBytesCounterValue は、現在の送信バイトカウンターの値を返します。
	TxBytesCounterValue() uint64
}

Writerはトランスポートからメッセージを書き込むインターフェースです。

Directories

Path Synopsis
Package compress は、 トランスポートメッセージの圧縮に関するパッケージです。
Package compress は、 トランスポートメッセージの圧縮に関するパッケージです。
Package quic は、 QUIC を使用したトランスポートを提供するパッケージです。
Package quic は、 QUIC を使用したトランスポートを提供するパッケージです。
Package websocket は、 WebSocket を使用したトランスポートを提供するパッケージです。
Package websocket は、 WebSocket を使用したトランスポートを提供するパッケージです。
gorilla
Package gorillaは、Gorilla WebSocket(https://github.com/gorilla/websocket) を使ってWebSocket接続を行うためのパッケージです。
Package gorillaは、Gorilla WebSocket(https://github.com/gorilla/websocket) を使ってWebSocket接続を行うためのパッケージです。
nhooyr
Package nhooyrは、 nhooyr/websocket (https://github.com/nhooyr/websocket) を使ってWebSocket接続を行うためのパッケージです(実験的)。
Package nhooyrは、 nhooyr/websocket (https://github.com/nhooyr/websocket) を使ってWebSocket接続を行うためのパッケージです(実験的)。
Package webtransport は、 WebTransport を使用したトランスポートを提供するパッケージです。
Package webtransport は、 WebTransport を使用したトランスポートを提供するパッケージです。

Jump to

Keyboard shortcuts

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