Skip to content
This repository has been archived by the owner on Mar 3, 2020. It is now read-only.
/ quasizero Public archive

TCP server (and client) implementation, optimised for low latency and pipelined throughput

License

Notifications You must be signed in to change notification settings

bsm/quasizero

Repository files navigation

QuasiZero

GoDoc Build Status License

A Go TCP server (and client) implementation, optimised for low latency and pipelined throughput.

Usage

Server:

// define a handler
echoHandler := quasizero.HandlerFunc(func(req *quasizero.Request) (*quasizero.Response, error) {
  return &quasizero.Response{Payload: req.Payload}, nil
})

// init a server
srv := quasizero.NewServer(map[int32]quasizero.Handler{
  1: echoHandler,
}, nil)

// listen and serve
lis, err := net.Listen("tcp", ":11111")
if err != nil {
  // handle error ...
}
defer lis.Close()

if err := srv.Serve(lis); err != nil {
  // handle error ...
}

Client:

client, err := quasizero.NewClient(context.TODO(), "10.0.0.1:11111", nil)
if err != nil {
  // handle error ...
}
defer client.Close()

// send an echo request
res, err := client.Call(&quasizero.Request{Code: 1, Payload: []byte("hello")})
if err != nil {
  // handle error ...
}
fmt.Printf("server responded to ECHO with %q\n", res.Payload)

Documentation

Please see the API documentation for package and API descriptions and examples.

About

TCP server (and client) implementation, optimised for low latency and pipelined throughput

Resources

License

Stars

Watchers

Forks

Packages

No packages published