Skip to content

Commit

Permalink
initial server commit
Browse files Browse the repository at this point in the history
  • Loading branch information
domdom82 committed Oct 8, 2018
1 parent b9a7c79 commit 8249cb0
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

.idea/
go-backpressure
6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package main

import (
"os"
"fmt"
"github.com/domdom82/go-backpressure/server"
)

func main() {
var sconfig *server.ServerConfig
//var cconfig *client.ClientConfig
if len(os.Args) > 1 {
fmt.Printf("Loading sconfig from %q\n", os.Args[1])
s, err := server.NewServerConfigFromFile(os.Args[1])
if err != nil {
fmt.Println(err)
os.Exit(1)
}
sconfig = s
} else {
fmt.Printf("ERROR: No configuration file provided.\nUsage: %s <-client|-server> <configfile>", os.Args[0])
os.Exit(1)
}

fmt.Printf("Starting the server.\n")
sconfig.NewServer().Run()
}
4 changes: 4 additions & 0 deletions server/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
port: 1234
bufsize: 1500
delay: 1000
55 changes: 55 additions & 0 deletions server/server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package server

import (
"bufio"
"fmt"
"time"
"net"
"io/ioutil"
"gopkg.in/yaml.v2"
)


type ServerConfig struct {
Port string `yaml:"port"`
Bufsize int `yaml:"bufsize"`
Delay time.Duration `yaml:"delay"`
}

type Server struct {
config *ServerConfig
}


func (cfg *ServerConfig) NewServer() *Server {
server := &Server{ config: cfg}

return server
}

func NewServerConfigFromFile(filename string) (*ServerConfig, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
var config *ServerConfig
err = yaml.Unmarshal(data, &config)
if err != nil {
return nil, err
}

return config, nil
}


// sync
func (srv *Server) Run() {
listener, _ := net.Listen("tcp", fmt.Sprintf(":%s", srv.config.Port))
conn, _ := listener.Accept()

for {
msg, _ := bufio.NewReaderSize(conn, srv.config.Bufsize).ReadBytes('\n')
fmt.Println(string(msg))
time.Sleep(srv.config.Delay * time.Millisecond)
}
}

0 comments on commit 8249cb0

Please sign in to comment.