protocols

package
v1.14.10 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2025 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreatePackets added in v1.14.10

func CreatePackets(msg []byte) (packetsR *map[uint32][]byte)

func CreatePacketsOriginal added in v1.14.10

func CreatePacketsOriginal(msg []byte) (packets map[uint32][]byte)

Types

type HTTP

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

func (*HTTP) AddClient

func (st *HTTP) AddClient(client generic.Client, idx int)

func (*HTTP) AvailableConnectionFromPool

func (st *HTTP) AvailableConnectionFromPool() (available bool, idx int)

func (*HTTP) CloseConnection

func (st *HTTP) CloseConnection()

func (*HTTP) ConnectToServer

func (st *HTTP) ConnectToServer(ip, port string)

func (*HTTP) GetClient

func (st *HTTP) GetClient(idx int) (client generic.Client)

func (*HTTP) GetClientFromAddr

func (st *HTTP) GetClientFromAddr(addr string) (client generic.Client)

func (*HTTP) GetClients

func (st *HTTP) GetClients() (client []*generic.Client)

func (*HTTP) ReadString

func (st *HTTP) ReadString() (message string)

func (*HTTP) Receive

func (st *HTTP) Receive() ([]byte, error)

func (*HTTP) ResetClients

func (st *HTTP) ResetClients()

func (*HTTP) Send

func (st *HTTP) Send(msgToServer []byte) error

func (*HTTP) StartServer

func (st *HTTP) StartServer(ip, port string, initialConnections int)

func (*HTTP) StopServer

func (st *HTTP) StopServer()

func (*HTTP) WaitForConnection

func (st *HTTP) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*HTTP) WriteString

func (st *HTTP) WriteString(message string)

type HTTP2

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

func (*HTTP2) AddClient

func (st *HTTP2) AddClient(client generic.Client, idx int)

func (*HTTP2) AvailableConnectionFromPool

func (st *HTTP2) AvailableConnectionFromPool() (available bool, idx int)

func (*HTTP2) CloseConnection

func (st *HTTP2) CloseConnection()

func (*HTTP2) ConnectToServer

func (st *HTTP2) ConnectToServer(ip, port string)

func (*HTTP2) GetClient

func (st *HTTP2) GetClient(idx int) (client generic.Client)

func (*HTTP2) GetClientFromAddr

func (st *HTTP2) GetClientFromAddr(addr string) (client generic.Client)

func (*HTTP2) GetClients

func (st *HTTP2) GetClients() (client []*generic.Client)

func (*HTTP2) ReadString

func (st *HTTP2) ReadString() (message string)

func (*HTTP2) Receive

func (st *HTTP2) Receive() ([]byte, error)

func (*HTTP2) ResetClients

func (st *HTTP2) ResetClients()

func (*HTTP2) Send

func (st *HTTP2) Send(msgToServer []byte) error

func (*HTTP2) StartServer

func (st *HTTP2) StartServer(ip, port string, initialConnections int)

func (*HTTP2) StopServer

func (st *HTTP2) StopServer()

func (*HTTP2) WaitForConnection

func (st *HTTP2) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*HTTP2) WriteString

func (st *HTTP2) WriteString(message string)

type HTTP2Client

type HTTP2Client struct {
	Ip string
	// contains filtered or unexported fields
}

func (*HTTP2Client) AdaptId

func (cl *HTTP2Client) AdaptId() int

func (*HTTP2Client) Address

func (cl *HTTP2Client) Address() string

func (*HTTP2Client) CloseConnection

func (cl *HTTP2Client) CloseConnection()

func (*HTTP2Client) Connection

func (cl *HTTP2Client) Connection() interface{}

func (*HTTP2Client) Read

func (cl *HTTP2Client) Read(b []byte) (n int, err error)

func (*HTTP2Client) ReadString

func (cl *HTTP2Client) ReadString() (message string)

func (*HTTP2Client) Receive

func (cl *HTTP2Client) Receive() (msg []byte, err error)

func (*HTTP2Client) Send

func (cl *HTTP2Client) Send(msg []byte) error

func (*HTTP2Client) SetAdaptId

func (cl *HTTP2Client) SetAdaptId(adaptId int)

func (*HTTP2Client) WriteString

func (cl *HTTP2Client) WriteString(message string)

type HTTP2Request

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

func (HTTP2Request) Request

func (rq HTTP2Request) Request(w http.ResponseWriter, r *http.Request)

func (HTTP2Request) ServeHTTP

func (rq HTTP2Request) ServeHTTP(w http.ResponseWriter, r *http.Request)

type HTTPClient

type HTTPClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*HTTPClient) AdaptId

func (cl *HTTPClient) AdaptId() int

func (*HTTPClient) Address

func (cl *HTTPClient) Address() string

func (*HTTPClient) CloseConnection

func (cl *HTTPClient) CloseConnection()

func (*HTTPClient) Connection

func (cl *HTTPClient) Connection() interface{}

func (*HTTPClient) Read

func (cl *HTTPClient) Read(b []byte) (n int, err error)

func (*HTTPClient) ReadString

func (cl *HTTPClient) ReadString() (message string)

func (*HTTPClient) Receive

func (cl *HTTPClient) Receive() (msg []byte, err error)

func (*HTTPClient) Send

func (cl *HTTPClient) Send(msg []byte) error

func (*HTTPClient) SetAdaptId

func (cl *HTTPClient) SetAdaptId(adaptId int)

func (*HTTPClient) WriteString

func (cl *HTTPClient) WriteString(message string)

type HTTPRequest

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

func (HTTPRequest) Request

func (rq HTTPRequest) Request(w http.ResponseWriter, r *http.Request)

func (HTTPRequest) ServeHTTP

func (rq HTTPRequest) ServeHTTP(w http.ResponseWriter, r *http.Request)

type HTTPS

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

func (*HTTPS) AddClient

func (st *HTTPS) AddClient(client generic.Client, idx int)

func (*HTTPS) AvailableConnectionFromPool

func (st *HTTPS) AvailableConnectionFromPool() (available bool, idx int)

func (*HTTPS) CloseConnection

func (st *HTTPS) CloseConnection()

func (*HTTPS) ConnectToServer

func (st *HTTPS) ConnectToServer(ip, port string)

func (*HTTPS) GetClient

func (st *HTTPS) GetClient(idx int) (client generic.Client)

func (*HTTPS) GetClientFromAddr

func (st *HTTPS) GetClientFromAddr(addr string) (client generic.Client)

func (*HTTPS) GetClients

func (st *HTTPS) GetClients() (client []*generic.Client)

func (*HTTPS) ReadString

func (st *HTTPS) ReadString() (message string)

func (*HTTPS) Receive

func (st *HTTPS) Receive() ([]byte, error)

func (*HTTPS) ResetClients

func (st *HTTPS) ResetClients()

func (*HTTPS) Send

func (st *HTTPS) Send(msgToServer []byte) error

func (*HTTPS) StartServer

func (st *HTTPS) StartServer(ip, port string, initialConnections int)

func (*HTTPS) StopServer

func (st *HTTPS) StopServer()

func (*HTTPS) WaitForConnection

func (st *HTTPS) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*HTTPS) WriteString

func (st *HTTPS) WriteString(message string)

type HTTPSClient

type HTTPSClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*HTTPSClient) AdaptId

func (cl *HTTPSClient) AdaptId() int

func (*HTTPSClient) Address

func (cl *HTTPSClient) Address() string

func (*HTTPSClient) CloseConnection

func (cl *HTTPSClient) CloseConnection()

func (*HTTPSClient) Connection

func (cl *HTTPSClient) Connection() interface{}

func (*HTTPSClient) Read

func (cl *HTTPSClient) Read(b []byte) (n int, err error)

func (*HTTPSClient) ReadString

func (cl *HTTPSClient) ReadString() (message string)

func (*HTTPSClient) Receive

func (cl *HTTPSClient) Receive() (msg []byte, err error)

func (*HTTPSClient) Send

func (cl *HTTPSClient) Send(msg []byte) error

func (*HTTPSClient) SetAdaptId

func (cl *HTTPSClient) SetAdaptId(adaptId int)

func (*HTTPSClient) WriteString

func (cl *HTTPSClient) WriteString(message string)

type HTTPSRequest

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

func (HTTPSRequest) Request

func (rq HTTPSRequest) Request(w http.ResponseWriter, r *http.Request)

func (HTTPSRequest) ServeHTTP

func (rq HTTPSRequest) ServeHTTP(w http.ResponseWriter, r *http.Request)

type QUIC added in v1.14.10

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

func (*QUIC) AddClient added in v1.14.10

func (st *QUIC) AddClient(client generic.Client, idx int)

func (*QUIC) AvailableConnectionFromPool added in v1.14.10

func (st *QUIC) AvailableConnectionFromPool() (available bool, idx int)

func (*QUIC) CloseConnection added in v1.14.10

func (st *QUIC) CloseConnection()

func (*QUIC) ConnectToServer added in v1.14.10

func (st *QUIC) ConnectToServer(ip, port string)

func (*QUIC) GetClient added in v1.14.10

func (st *QUIC) GetClient(idx int) (client generic.Client)

func (*QUIC) GetClientFromAddr added in v1.14.10

func (st *QUIC) GetClientFromAddr(addr string) (client generic.Client)

func (*QUIC) GetClients added in v1.14.10

func (st *QUIC) GetClients() (client []*generic.Client)

func (*QUIC) ReadString added in v1.14.10

func (st *QUIC) ReadString() (message string)

func (*QUIC) Receive added in v1.14.10

func (st *QUIC) Receive() ([]byte, error)

func (*QUIC) ReceiveChunking added in v1.14.10

func (st *QUIC) ReceiveChunking() ([]byte, error)

func (*QUIC) ResetClients added in v1.14.10

func (st *QUIC) ResetClients()

func (*QUIC) Send added in v1.14.10

func (st *QUIC) Send(msgToServer []byte) error

func (*QUIC) SendChunking added in v1.14.10

func (st *QUIC) SendChunking(msgToServer []byte) error

func (*QUIC) StartServer added in v1.14.10

func (st *QUIC) StartServer(ip, port string, initialConnections int)

func (*QUIC) StopServer added in v1.14.10

func (st *QUIC) StopServer()

func (*QUIC) WaitForConnection added in v1.14.10

func (st *QUIC) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*QUIC) WriteString added in v1.14.10

func (st *QUIC) WriteString(message string)

type QUICClient added in v1.14.10

type QUICClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*QUICClient) AdaptId added in v1.14.10

func (cl *QUICClient) AdaptId() int

func (*QUICClient) Address added in v1.14.10

func (cl *QUICClient) Address() string

func (*QUICClient) CloseConnection added in v1.14.10

func (cl *QUICClient) CloseConnection()

func (*QUICClient) Connection added in v1.14.10

func (cl *QUICClient) Connection() interface{}

func (*QUICClient) Read added in v1.14.10

func (cl *QUICClient) Read(b []byte) (n int, err error)

func (*QUICClient) ReadString added in v1.14.10

func (cl *QUICClient) ReadString() (message string)

func (*QUICClient) Receive added in v1.14.10

func (cl *QUICClient) Receive() (fullMessage []byte, err error)

func (*QUICClient) ReceiveChunking added in v1.14.10

func (cl *QUICClient) ReceiveChunking() (fullMessage []byte, err error)

func (*QUICClient) Send added in v1.14.10

func (cl *QUICClient) Send(msg []byte) error

func (*QUICClient) SetAdaptId added in v1.14.10

func (cl *QUICClient) SetAdaptId(adaptId int)

func (*QUICClient) WriteString added in v1.14.10

func (cl *QUICClient) WriteString(message string)

type RPC

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

func (*RPC) AddClient

func (st *RPC) AddClient(client generic.Client, idx int)

func (*RPC) AvailableConnectionFromPool

func (st *RPC) AvailableConnectionFromPool() (available bool, idx int)

func (*RPC) Call

func (st *RPC) Call(serviceMethod string, args any, reply any) (err error)

func (*RPC) CloseConnection

func (st *RPC) CloseConnection()

func (*RPC) ConnectToServer

func (st *RPC) ConnectToServer(ip, port string)

func (*RPC) GetClient

func (st *RPC) GetClient(idx int) (client generic.Client)

func (*RPC) GetClientFromAddr

func (st *RPC) GetClientFromAddr(addr string) (client generic.Client)

func (*RPC) GetClients

func (st *RPC) GetClients() (client []*generic.Client)

func (*RPC) ReadString

func (st *RPC) ReadString() (message string)

func (*RPC) Receive

func (st *RPC) Receive() ([]byte, error)

func (*RPC) ResetClients

func (st *RPC) ResetClients()

func (*RPC) Send

func (st *RPC) Send(msgToServer []byte) error

func (*RPC) StartServer

func (st *RPC) StartServer(ip, port string, initialConnections int)

func (*RPC) StopServer

func (st *RPC) StopServer()

func (*RPC) WaitForConnection

func (st *RPC) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*RPC) WriteString

func (st *RPC) WriteString(message string)

type RPCClient

type RPCClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*RPCClient) AdaptId

func (cl *RPCClient) AdaptId() int

func (*RPCClient) Address

func (cl *RPCClient) Address() string

func (*RPCClient) CloseConnection

func (cl *RPCClient) CloseConnection()

func (*RPCClient) Connection

func (cl *RPCClient) Connection() interface{}

func (*RPCClient) Read

func (cl *RPCClient) Read(b []byte) (n int, err error)

func (*RPCClient) ReadString

func (cl *RPCClient) ReadString() (message string)

func (*RPCClient) Receive

func (cl *RPCClient) Receive() (msg []byte, err error)

func (*RPCClient) Send

func (cl *RPCClient) Send(msg []byte) error

func (*RPCClient) SetAdaptId

func (cl *RPCClient) SetAdaptId(adaptId int)

func (*RPCClient) WriteString

func (cl *RPCClient) WriteString(message string)

type RPCRequest

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

func (RPCRequest) Request

func (rq RPCRequest) Request(request []byte, reply *[]byte) error

type TCP

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

func (*TCP) AddClient

func (st *TCP) AddClient(client generic.Client, idx int)

func (*TCP) AvailableConnectionFromPool

func (st *TCP) AvailableConnectionFromPool() (available bool, idx int)

func (*TCP) CloseConnection

func (st *TCP) CloseConnection()

func (*TCP) ConnectToServer

func (st *TCP) ConnectToServer(ip, port string)

func (*TCP) GetClient

func (st *TCP) GetClient(idx int) (client generic.Client)

func (*TCP) GetClientFromAddr

func (st *TCP) GetClientFromAddr(addr string) (client generic.Client)

func (*TCP) GetClients

func (st *TCP) GetClients() (client []*generic.Client)

func (*TCP) ReadString

func (st *TCP) ReadString() (message string)

func (*TCP) Receive

func (st *TCP) Receive() (fullMessage []byte, err error)

func (*TCP) ReceiveManualChunking added in v1.14.10

func (st *TCP) ReceiveManualChunking() ([]byte, error)

func (*TCP) ResetClients

func (st *TCP) ResetClients()

func (*TCP) Send

func (st *TCP) Send(msgToServer []byte) error

func (*TCP) SendManualChunking added in v1.14.10

func (st *TCP) SendManualChunking(msgToServer []byte) error

func (*TCP) StartServer

func (st *TCP) StartServer(ip, port string, initialConnections int)

func (*TCP) StopServer

func (st *TCP) StopServer()

func (*TCP) WaitForConnection

func (st *TCP) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*TCP) WriteString

func (st *TCP) WriteString(message string)

type TCPClient

type TCPClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*TCPClient) AdaptId

func (cl *TCPClient) AdaptId() int

func (*TCPClient) Address

func (cl *TCPClient) Address() string

func (*TCPClient) CloseConnection

func (cl *TCPClient) CloseConnection()

func (*TCPClient) Connection

func (cl *TCPClient) Connection() interface{}

func (*TCPClient) Read

func (cl *TCPClient) Read(b []byte) (n int, err error)

func (*TCPClient) ReadString

func (cl *TCPClient) ReadString() (message string)

func (*TCPClient) Receive

func (cl *TCPClient) Receive() (fullMessage []byte, err error)

func (*TCPClient) ReceiveManualChunking added in v1.14.10

func (cl *TCPClient) ReceiveManualChunking() (fullMessage []byte, err error)

func (*TCPClient) Send

func (cl *TCPClient) Send(msg []byte) error

func (*TCPClient) SetAdaptId

func (cl *TCPClient) SetAdaptId(adaptId int)

func (*TCPClient) WriteString

func (cl *TCPClient) WriteString(message string)

type TLS added in v1.14.10

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

func (*TLS) AddClient added in v1.14.10

func (st *TLS) AddClient(client generic.Client, idx int)

func (*TLS) AvailableConnectionFromPool added in v1.14.10

func (st *TLS) AvailableConnectionFromPool() (available bool, idx int)

func (*TLS) CloseConnection added in v1.14.10

func (st *TLS) CloseConnection()

func (*TLS) ConnectToServer added in v1.14.10

func (st *TLS) ConnectToServer(ip, port string)

func (*TLS) GetClient added in v1.14.10

func (st *TLS) GetClient(idx int) (client generic.Client)

func (*TLS) GetClientFromAddr added in v1.14.10

func (st *TLS) GetClientFromAddr(addr string) (client generic.Client)

func (*TLS) GetClients added in v1.14.10

func (st *TLS) GetClients() (client []*generic.Client)

func (*TLS) ReadString added in v1.14.10

func (st *TLS) ReadString() (message string)

func (*TLS) Receive added in v1.14.10

func (st *TLS) Receive() (fullMessage []byte, err error)

func (*TLS) ReceiveChunking added in v1.14.10

func (st *TLS) ReceiveChunking() ([]byte, error)

func (*TLS) ResetClients added in v1.14.10

func (st *TLS) ResetClients()

func (*TLS) Send added in v1.14.10

func (st *TLS) Send(msgToServer []byte) error

func (*TLS) SendChunking added in v1.14.10

func (st *TLS) SendChunking(msgToServer []byte) error

func (*TLS) StartServer added in v1.14.10

func (st *TLS) StartServer(ip, port string, initialConnections int)

func (*TLS) StopServer added in v1.14.10

func (st *TLS) StopServer()

func (*TLS) WaitForConnection added in v1.14.10

func (st *TLS) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*TLS) WriteString added in v1.14.10

func (st *TLS) WriteString(message string)

type TLSClient added in v1.14.10

type TLSClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*TLSClient) AdaptId added in v1.14.10

func (cl *TLSClient) AdaptId() int

func (*TLSClient) Address added in v1.14.10

func (cl *TLSClient) Address() string

func (*TLSClient) CloseConnection added in v1.14.10

func (cl *TLSClient) CloseConnection()

func (*TLSClient) Connection added in v1.14.10

func (cl *TLSClient) Connection() interface{}

func (*TLSClient) Read added in v1.14.10

func (cl *TLSClient) Read(b []byte) (n int, err error)

func (*TLSClient) ReadString added in v1.14.10

func (cl *TLSClient) ReadString() (message string)

func (*TLSClient) Receive added in v1.14.10

func (cl *TLSClient) Receive() (fullMessage []byte, err error)

func (*TLSClient) ReceiveChunking added in v1.14.10

func (cl *TLSClient) ReceiveChunking() (fullMessage []byte, err error)

func (*TLSClient) Send added in v1.14.10

func (cl *TLSClient) Send(msg []byte) error

func (*TLSClient) SetAdaptId added in v1.14.10

func (cl *TLSClient) SetAdaptId(adaptId int)

func (*TLSClient) WriteString added in v1.14.10

func (cl *TLSClient) WriteString(message string)

type UDP added in v1.14.10

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

func (*UDP) AddClient added in v1.14.10

func (st *UDP) AddClient(client generic.Client, idx int)

func (*UDP) AvailableConnectionFromPool added in v1.14.10

func (st *UDP) AvailableConnectionFromPool() (available bool, idx int)

func (*UDP) CloseConnection added in v1.14.10

func (st *UDP) CloseConnection()

func (*UDP) ConnectToServer added in v1.14.10

func (st *UDP) ConnectToServer(ip, port string)

func (*UDP) GetClient added in v1.14.10

func (st *UDP) GetClient(idx int) (client generic.Client)

func (*UDP) GetClientFromAddr added in v1.14.10

func (st *UDP) GetClientFromAddr(addr string) (client generic.Client)

func (*UDP) GetClients added in v1.14.10

func (st *UDP) GetClients() (client []*generic.Client)

func (*UDP) ReadString added in v1.14.10

func (st *UDP) ReadString() (message string)

func (*UDP) Receive added in v1.14.10

func (st *UDP) Receive() ([]byte, error)

func (*UDP) ReceiveStream added in v1.14.10

func (st *UDP) ReceiveStream() (fullMessage []byte, err error)

func (*UDP) ResetClients added in v1.14.10

func (st *UDP) ResetClients()

func (*UDP) Send added in v1.14.10

func (st *UDP) Send(msgToServer []byte) error

func (*UDP) SendChunking added in v1.14.10

func (st *UDP) SendChunking(msgToServer []byte) error

func (*UDP) SendStream added in v1.14.10

func (st *UDP) SendStream(msgToServer []byte) error

func (*UDP) StartServer added in v1.14.10

func (st *UDP) StartServer(ip, port string, initialConnections int)

func (*UDP) StopServer added in v1.14.10

func (st *UDP) StopServer()

func (*UDP) WaitForConnection added in v1.14.10

func (st *UDP) WaitForConnection(cliIdx int) (cl *generic.Client)

func (*UDP) WriteString added in v1.14.10

func (st *UDP) WriteString(message string)

type UDPClient added in v1.14.10

type UDPClient struct {
	Ip string
	// contains filtered or unexported fields
}

func (*UDPClient) AdaptId added in v1.14.10

func (cl *UDPClient) AdaptId() int

func (*UDPClient) Address added in v1.14.10

func (cl *UDPClient) Address() string

func (*UDPClient) CloseConnection added in v1.14.10

func (cl *UDPClient) CloseConnection()

func (*UDPClient) Connection added in v1.14.10

func (cl *UDPClient) Connection() interface{}

func (*UDPClient) Read added in v1.14.10

func (cl *UDPClient) Read(b []byte) (n int, err error)

func (*UDPClient) ReadString added in v1.14.10

func (cl *UDPClient) ReadString() (message string)

func (*UDPClient) Receive added in v1.14.10

func (cl *UDPClient) Receive() (fullMessage []byte, err error)

func (*UDPClient) ReceiveChunking added in v1.14.10

func (cl *UDPClient) ReceiveChunking() (fullMessage []byte, err error)

func (*UDPClient) ReceiveStream added in v1.14.10

func (cl *UDPClient) ReceiveStream() (fullMessage []byte, err error)

func (*UDPClient) Send added in v1.14.10

func (cl *UDPClient) Send(msg []byte) error

func (*UDPClient) SetAdaptId added in v1.14.10

func (cl *UDPClient) SetAdaptId(adaptId int)

func (*UDPClient) WriteString added in v1.14.10

func (cl *UDPClient) WriteString(message string)

Jump to

Keyboard shortcuts

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