/memconn

MemConn is an in-memory network stack for Go.

Primary LanguageGoApache License 2.0Apache-2.0

MemConn GoDoc Build Status Go Report Card

MemConn provides named, in-memory network connections for Go.

Create a Server

A new net.Listener used to serve HTTP, gRPC, etc. is created with memconn.Listen:

lis, err := memconn.Listen("memu", "UniqueName")

Creating a Client (Dial)

Clients can dial any named connection:

client, err := memconn.Dial("memu", "UniqueName")

Network Types

MemCon supports the following network types:

Network Description
memb A buffered, in-memory implementation of net.Conn
memu An unbuffered, in-memory implementation of net.Conn

Performance

The benchmark results illustrate MemConn's performance versus TCP and UNIX domain sockets:

ops ns/op B/op allocs/op

MemConn is more performant than TCP and UNIX domain sockets with respect to the CPU. While MemConn does allocate more memory, this is to be expected since MemConn is an in-memory implementation of the net.Conn interface.