Advertisement
Guest User

Golang evio

a guest
Aug 20th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.75 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bytes"
  5.     "strings"
  6.     "github.com/tidwall/evio"
  7. )
  8.  
  9. func main() {
  10.     const content = "HTTP/1.1 200 Ok\r\nContent-Length: 11\r\n\r\nHello World"
  11.     var builder strings.Builder
  12.     for i := 0; i < 512; i++ { builder.WriteString(content) }
  13.     response := []byte(builder.String())
  14.  
  15.     var events evio.Events
  16.     events.NumLoops = -1
  17.     events.Data = func(c evio.Conn, in []byte) (out []byte, action evio.Action) {
  18.         if in == nil { return }
  19.         requests := 0
  20.         for {
  21.             offset := bytes.Index(in, []byte("\r\n\r\n"))
  22.             if offset == -1 { break }
  23.             in = in[(offset + 4):]
  24.             requests++
  25.         }
  26.         out = response[:(len(content) * requests)]
  27.         return
  28.     }
  29.     if err := evio.Serve(events, "tcp://localhost:12345"); err != nil {
  30.         panic(err.Error())
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement