34 lines
1.2 KiB
Go
34 lines
1.2 KiB
Go
// Copied over the upstream sing source (in a build-local copy of the module) for
|
|
// the js/wasm build ONLY; see build.sh.
|
|
//
|
|
// Upstream common/bufio/vectorised_unix.go (build tag `!windows`) implements the
|
|
// syscall-based vectorised writers using golang.org/x/sys/unix (Iovec, writev,
|
|
// sendmsg). Those types are referenced by the cross-platform vectorised.go, so
|
|
// the symbols must exist for the package to compile, but the code never runs
|
|
// under wasm (a browser has no raw socket fds). This provides the same
|
|
// identifiers with unix stripped out; the write paths return os.ErrInvalid.
|
|
|
|
package bufio
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/sagernet/sing/common/buf"
|
|
M "github.com/sagernet/sing/common/metadata"
|
|
)
|
|
|
|
// syscallVectorisedWriterFields is embedded into SyscallVectorisedWriter and
|
|
// SyscallVectorisedPacketWriter (declared in vectorised.go). No fields are
|
|
// needed for the wasm stub.
|
|
type syscallVectorisedWriterFields struct{}
|
|
|
|
func (w *SyscallVectorisedWriter) WriteVectorised(buffers []*buf.Buffer) error {
|
|
buf.ReleaseMulti(buffers)
|
|
return os.ErrInvalid
|
|
}
|
|
|
|
func (w *SyscallVectorisedPacketWriter) WriteVectorisedPacket(buffers []*buf.Buffer, destination M.Socksaddr) error {
|
|
buf.ReleaseMulti(buffers)
|
|
return os.ErrInvalid
|
|
}
|