splithttp

package
v1.9.6 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2024 License: MPL-2.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_transport_internet_splithttp_config_proto protoreflect.FileDescriptor

Functions

func Dial

func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.MemoryStreamConfig) (stat.Connection, error)

func ListenSH

func ListenSH(ctx context.Context, address net.Address, port net.Port, streamSettings *internet.MemoryStreamConfig, addConn internet.ConnHandler) (internet.Listener, error)

func NewUploadQueue

func NewUploadQueue(maxPackets int) *uploadQueue

Types

type BrowserDialerClient

type BrowserDialerClient struct{}

implements splithttp.DialerClient in terms of browser dialer has no fields because everything is global state :O)

func (*BrowserDialerClient) OpenDownload

func (c *BrowserDialerClient) OpenDownload(ctx context.Context, baseURL string) (io.ReadCloser, gonet.Addr, gonet.Addr, error)

func (*BrowserDialerClient) SendUploadRequest

func (c *BrowserDialerClient) SendUploadRequest(ctx context.Context, url string, payload io.ReadWriteCloser, contentLength int64) error

type Config

type Config struct {
	Host                 string            `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	Path                 string            `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	Header               map[string]string `` /* 153-byte string literal not displayed */
	ScMaxConcurrentPosts *RandRangeConfig  `protobuf:"bytes,4,opt,name=scMaxConcurrentPosts,proto3" json:"scMaxConcurrentPosts,omitempty"`
	ScMaxEachPostBytes   *RandRangeConfig  `protobuf:"bytes,5,opt,name=scMaxEachPostBytes,proto3" json:"scMaxEachPostBytes,omitempty"`
	ScMinPostsIntervalMs *RandRangeConfig  `protobuf:"bytes,6,opt,name=scMinPostsIntervalMs,proto3" json:"scMinPostsIntervalMs,omitempty"`
	NoSSEHeader          bool              `protobuf:"varint,7,opt,name=noSSEHeader,proto3" json:"noSSEHeader,omitempty"`
	XPaddingBytes        *RandRangeConfig  `protobuf:"bytes,8,opt,name=xPaddingBytes,proto3" json:"xPaddingBytes,omitempty"`
	// contains filtered or unexported fields
}

func (*Config) Descriptor deprecated

func (*Config) Descriptor() ([]byte, []int)

Deprecated: Use Config.ProtoReflect.Descriptor instead.

func (*Config) GetHeader

func (x *Config) GetHeader() map[string]string

func (*Config) GetHost

func (x *Config) GetHost() string

func (*Config) GetNoSSEHeader

func (x *Config) GetNoSSEHeader() bool

func (*Config) GetNormalizedPath

func (c *Config) GetNormalizedPath() string

func (*Config) GetNormalizedQuery

func (c *Config) GetNormalizedQuery() string

func (*Config) GetNormalizedScMaxConcurrentPosts

func (c *Config) GetNormalizedScMaxConcurrentPosts() RandRangeConfig

func (*Config) GetNormalizedScMaxEachPostBytes

func (c *Config) GetNormalizedScMaxEachPostBytes() RandRangeConfig

func (*Config) GetNormalizedScMinPostsIntervalMs

func (c *Config) GetNormalizedScMinPostsIntervalMs() RandRangeConfig

func (*Config) GetNormalizedXPaddingBytes

func (c *Config) GetNormalizedXPaddingBytes() RandRangeConfig

func (*Config) GetPath

func (x *Config) GetPath() string

func (*Config) GetRequestHeader

func (c *Config) GetRequestHeader() http.Header

func (*Config) GetScMaxConcurrentPosts

func (x *Config) GetScMaxConcurrentPosts() *RandRangeConfig

func (*Config) GetScMaxEachPostBytes

func (x *Config) GetScMaxEachPostBytes() *RandRangeConfig

func (*Config) GetScMinPostsIntervalMs

func (x *Config) GetScMinPostsIntervalMs() *RandRangeConfig

func (*Config) GetXPaddingBytes

func (x *Config) GetXPaddingBytes() *RandRangeConfig

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) ProtoReflect

func (x *Config) ProtoReflect() protoreflect.Message

func (*Config) Reset

func (x *Config) Reset()

func (*Config) String

func (x *Config) String() string

func (*Config) WriteResponseHeader

func (c *Config) WriteResponseHeader(writer http.ResponseWriter)

type DefaultDialerClient

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

implements splithttp.DialerClient in terms of direct network connections

func (*DefaultDialerClient) OpenDownload

func (c *DefaultDialerClient) OpenDownload(ctx context.Context, baseURL string) (io.ReadCloser, gonet.Addr, gonet.Addr, error)

func (*DefaultDialerClient) SendUploadRequest

func (c *DefaultDialerClient) SendUploadRequest(ctx context.Context, url string, payload io.ReadWriteCloser, contentLength int64) error

type DialerClient

type DialerClient interface {
	// (ctx, baseURL, payload) -> err
	// baseURL already contains sessionId and seq
	SendUploadRequest(context.Context, string, io.ReadWriteCloser, int64) error

	// (ctx, baseURL) -> (downloadReader, remoteAddr, localAddr)
	// baseURL already contains sessionId
	OpenDownload(context.Context, string) (io.ReadCloser, net.Addr, net.Addr, error)
}

interface to abstract between use of browser dialer, vs net/http

type LazyReader

type LazyReader struct {
	CreateReader func() (io.Reader, error)
	// contains filtered or unexported fields
}

Close is intentionally not supported by LazyReader because it's not clear how CreateReader should be aborted in case of Close. It's best to wrap LazyReader in another struct that handles Close correctly, or better, stop using LazyReader entirely.

func (*LazyReader) Read

func (r *LazyReader) Read(b []byte) (int, error)

type Listener

type Listener struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*Listener) Addr

func (ln *Listener) Addr() net.Addr

Addr implements net.Listener.Addr().

func (*Listener) Close

func (ln *Listener) Close() error

Close implements net.Listener.Close().

type Packet

type Packet struct {
	Payload []byte
	Seq     uint64
}

type RandRangeConfig

type RandRangeConfig struct {
	From int32 `protobuf:"varint,1,opt,name=from,proto3" json:"from,omitempty"`
	To   int32 `protobuf:"varint,2,opt,name=to,proto3" json:"to,omitempty"`
	// contains filtered or unexported fields
}

func (*RandRangeConfig) Descriptor deprecated

func (*RandRangeConfig) Descriptor() ([]byte, []int)

Deprecated: Use RandRangeConfig.ProtoReflect.Descriptor instead.

func (*RandRangeConfig) GetFrom

func (x *RandRangeConfig) GetFrom() int32

func (*RandRangeConfig) GetTo

func (x *RandRangeConfig) GetTo() int32

func (*RandRangeConfig) ProtoMessage

func (*RandRangeConfig) ProtoMessage()

func (*RandRangeConfig) ProtoReflect

func (x *RandRangeConfig) ProtoReflect() protoreflect.Message

func (*RandRangeConfig) Reset

func (x *RandRangeConfig) Reset()

func (*RandRangeConfig) String

func (x *RandRangeConfig) String() string

Jump to

Keyboard shortcuts

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