package main import ( "encoding/json" "net" ) const ( MESSAGE = "message" AUTHENTICATE = "authenticate" RENAME = "rename" ) const ( SUCCESS = "success" FAILURE = "failure" ) type Message struct { Type string Data string User string } func (msg *Message) serialize() string { data, _ := json.Marshal(msg) return string(data) } type Response struct { Status string Data string } func toBytes(num uint32) []byte { buf := make([]byte, 4) var mask uint32 = 0x00FF for i := 0; i < 4; i += 1 { buf[4-i-1] = byte(num & mask) num >>= 8 } return buf } func fromBytes(data []byte) uint32 { var num uint32 for i := 0; i < 4; i += 1 { num += uint32(data[i] << ((4 - i - 1) * 8)) } return num } func sendMessage(conn net.Conn, message []byte) error { size := uint32(len(message)) data := append(toBytes(size), message...) _, err := conn.Write(data) if err != nil { return err } return nil } func parseMessage(data []byte) Message { var m Message // TODO(andrew): Добавить обработку ошибок json.Unmarshal(data, &m) return m }