X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/aebc4d3647b9823ae8cbb57b21b1af83bfd011fb..78b305d6f57895ac9846821b63351f1010b95563:/hotline/client.go diff --git a/hotline/client.go b/hotline/client.go index 4ca42f3..c322562 100644 --- a/hotline/client.go +++ b/hotline/client.go @@ -10,7 +10,7 @@ import ( "github.com/rivo/tview" "github.com/stretchr/testify/mock" "go.uber.org/zap" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" "math/big" "math/rand" "net" @@ -61,7 +61,6 @@ func readConfig(cfgPath string) (*ClientPrefs, error) { prefs := ClientPrefs{} decoder := yaml.NewDecoder(fh) - decoder.SetStrict(true) if err := decoder.Decode(&prefs); err != nil { return nil, err } @@ -104,8 +103,7 @@ func NewClient(cfgPath string, logger *zap.SugaredLogger) *Client { prefs, err := readConfig(cfgPath) if err != nil { - fmt.Printf("unable to read config file %s", cfgPath) - os.Exit(1) + logger.Fatal(fmt.Sprintf("unable to read config file %s\n", cfgPath)) } c.pref = prefs @@ -121,7 +119,7 @@ func (db *DebugBuffer) Write(p []byte) (int, error) { return db.TextView.Write(p) } -// Sync is a noop function that exists to satisfy the zapcore.WriteSyncer interface +// Sync is a noop function that dataFile to satisfy the zapcore.WriteSyncer interface func (db *DebugBuffer) Sync() error { return nil } @@ -399,54 +397,6 @@ func handleNotifyDeleteUser(c *Client, t *Transaction) (res []Transaction, err e return res, err } -const readBuffSize = 1024000 // 1KB - TODO: what should this be? - -func (c *Client) ReadLoop() error { - tranBuff := make([]byte, 0) - tReadlen := 0 - // Infinite loop where take action on incoming client requests until the connection is closed - for { - buf := make([]byte, readBuffSize) - tranBuff = tranBuff[tReadlen:] - - readLen, err := c.Connection.Read(buf) - if err != nil { - return err - } - tranBuff = append(tranBuff, buf[:readLen]...) - - // We may have read multiple requests worth of bytes from Connection.Read. readTransactions splits them - // into a slice of transactions - var transactions []Transaction - if transactions, tReadlen, err = readTransactions(tranBuff); err != nil { - c.Logger.Errorw("Error handling transaction", "err", err) - } - - // iterate over all of the transactions that were parsed from the byte slice and handle them - for _, t := range transactions { - if err := c.HandleTransaction(&t); err != nil { - c.Logger.Errorw("Error handling transaction", "err", err) - } - } - } -} - -func (c *Client) GetTransactions() error { - tranBuff := make([]byte, 0) - tReadlen := 0 - - buf := make([]byte, readBuffSize) - tranBuff = tranBuff[tReadlen:] - - readLen, err := c.Connection.Read(buf) - if err != nil { - return err - } - tranBuff = append(tranBuff, buf[:readLen]...) - - return nil -} - func handleClientGetUserNameList(c *Client, t *Transaction) (res []Transaction, err error) { var users []User for _, field := range t.Fields { @@ -635,7 +585,6 @@ func (c *Client) LogIn(login string, password string) error { NewField(fieldUserIconID, c.pref.IconBytes()), NewField(fieldUserLogin, negateString([]byte(login))), NewField(fieldUserPassword, negateString([]byte(password))), - NewField(fieldVersion, []byte{0, 2}), ), ) } @@ -677,10 +626,7 @@ func (c *Client) HandleTransaction(t *Transaction) error { } requestNum := binary.BigEndian.Uint16(t.Type) - c.Logger.Infow( - "Received Transaction", - "RequestType", requestNum, - ) + c.Logger.Debugw("Received Transaction", "RequestType", requestNum) if handler, ok := c.Handlers[requestNum]; ok { outT, _ := handler.Handle(c, t)