switching server over to Echo, setting up server struct
This commit is contained in:
@@ -1,62 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/deranjer/gvc/messages"
|
||||
"github.com/firstrow/tcp_server"
|
||||
serverconfig "github.com/deranjer/gvc/server/serverconfig"
|
||||
"github.com/deranjer/store"
|
||||
)
|
||||
|
||||
var version = "0.1"
|
||||
|
||||
//This is a generic error message so we make it 'global'
|
||||
var errorMsg = messages.Command{
|
||||
CmdID: messages.ERROR,
|
||||
Body: []byte("Unrecognized Message"),
|
||||
}
|
||||
|
||||
func main() {
|
||||
errMsgJSON, _ := json.Marshal(errorMsg) //creating a []byte to easily send error message
|
||||
server := tcp_server.New("localhost:9999")
|
||||
|
||||
server.OnNewClient(func(c *tcp_server.Client) {
|
||||
// new client connected
|
||||
fmt.Println("New client connected....")
|
||||
newMessage := messages.Command{
|
||||
CmdID: messages.CONNECTED,
|
||||
Body: []byte("Connected"),
|
||||
}
|
||||
jsonMessage, err := json.Marshal(newMessage)
|
||||
if err != nil {
|
||||
log.Fatalf("error creating new marshaller: %s", err)
|
||||
}
|
||||
c.Send(jsonMessage)
|
||||
})
|
||||
server.OnNewMessage(func(c *tcp_server.Client, message []byte) {
|
||||
var newMessage messages.Command
|
||||
//messageBytes := []byte(message)
|
||||
err := json.Unmarshal(message, &newMessage)
|
||||
if err != nil {
|
||||
c.Send(errMsgJSON)
|
||||
fmt.Println("error reading message, closing connection to client")
|
||||
c.Close()
|
||||
}
|
||||
fmt.Println("new Message from client: ", message)
|
||||
switch newMessage.CmdID {
|
||||
case messages.INFO:
|
||||
fmt.Println("Sending server info to client")
|
||||
detailsMessage := fmt.Sprintf("Server Details are as follows: Version: %s \n", version)
|
||||
c.Send(detailsMessage)
|
||||
default:
|
||||
fmt.Println("unrecognized message! ", message)
|
||||
}
|
||||
})
|
||||
server.OnClientConnectionClosed(func(c *tcp_server.Client, err error) {
|
||||
// connection with client lost
|
||||
fmt.Println("Connection with client closed")
|
||||
})
|
||||
|
||||
server.Listen()
|
||||
configPath, err := findConfig()
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to find config file: %s", err)
|
||||
}
|
||||
var conf serverconfig.GvcServerConfig
|
||||
err = store.Load(configPath, &conf)
|
||||
if err != nil {
|
||||
fmt.Printf("Error loading server config file into struct, please fix config, panic! \n%s", err)
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
func findConfig() (string, error) {
|
||||
configFile, err := os.Stat("serverConfig.toml")
|
||||
if err != nil {
|
||||
configFile, err := os.Stat("config" + os.PathListSeparator + "serverConfig.toml")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if !configFile.IsDir() {
|
||||
return fmt.Sprintf("config" + os.PathListSeparator + "serverConfig.toml"), nil
|
||||
}
|
||||
return "", fmt.Sprintf()
|
||||
}
|
||||
if !configFile.IsDir() {
|
||||
return "serverConfig.toml", nil
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user