Skip to content

Commit

Permalink
Improvements to client
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre Hahn committed Dec 20, 2018
1 parent 540e8ef commit eab8979
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 25 deletions.
22 changes: 21 additions & 1 deletion Gopkg.lock

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

4 changes: 4 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@
name = "github.com/prometheus/client_golang"
version = "0.8.0"

[[constraint]]
branch = "master"
name = "github.com/jhump/protoreflect"

[[override]]
name = "github.com/topfreegames/go-workers"
version = "v0.0.1"
16 changes: 11 additions & 5 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,17 @@ func (c *Client) handlePackets() {

func (c *Client) readPackets(buf []byte) ([]*packet.Packet, error) {
// listen for sv messages
n, err := c.conn.Read(buf)
if err != nil {
return nil, err
n := len(buf)
var err error

data := make([]byte, 0)
for n == len(buf) {
n, err = c.conn.Read(buf)
if err != nil {
return nil, err
}
data = append(data, buf[:n]...)
}
data := buf[:n]
packets, err := c.packetDecoder.Decode(data)
if err != nil {
logger.Log.Errorf("error decoding packet from server: %s", err.Error())
Expand All @@ -271,7 +277,7 @@ func (c *Client) readPackets(buf []byte) ([]*packet.Packet, error) {
}

func (c *Client) handleServerMessages() {
buf := make([]byte, 2048)
buf := make([]byte, 1024)
defer c.Disconnect()
for c.Connected {
packets, err := c.readPackets(buf)
Expand Down
31 changes: 12 additions & 19 deletions client/protoclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,16 @@ func (pc *ProtoClient) buildProtosFromDescriptor(descriptorArray []*protobuf.Fil

descriptorsMap := make(map[string]*dynamic.Message)

desc, err := desc.CreateFileDescriptors(descriptorArray)
descriptors, err := desc.CreateFileDescriptors(descriptorArray)
if err != nil {
return err
}

for name := range pc.descriptorsNames {
for _, v := range desc {
menssage := v.FindMessage(name)
if menssage != nil {
descriptorsMap[name] = dynamic.NewMessage(menssage)
for _, v := range descriptors {
message := v.FindMessage(name)
if message != nil {
descriptorsMap[name] = dynamic.NewMessage(message)
}
}
}
Expand Down Expand Up @@ -158,7 +158,7 @@ func getOutputInputNames(command map[string]interface{}) (string, string, error)
// Get recursively all protos needed in a Unmarshal json.
func getKeys(info map[string]interface{}, keysSet map[string]bool) {
for k, v := range info {
if strings.Contains(k, "*proto") {
if strings.Contains(k, "*") {
kew := strings.Replace(k, "*", "", 1)
keysSet[kew] = true
}
Expand All @@ -174,11 +174,9 @@ func getKeys(info map[string]interface{}, keysSet map[string]bool) {
}
}

aux, ok := v.(map[string]interface{})
if !ok {
continue
if aux, ok := v.(map[string]interface{}); ok {
getKeys(aux, keysSet)
}
getKeys(aux, keysSet)
}
}

Expand Down Expand Up @@ -240,11 +238,7 @@ func (pc *ProtoClient) getDescriptors(data string) error {
pc.info.Commands[k] = &command
}

// get all proto types
descriptorArray := make([]*protobuf.FileDescriptorProto, 0)

var names []string

names := make([]string, 0, len(keysSet))
for key := range keysSet {
names = append(names, key)
}
Expand All @@ -263,13 +257,13 @@ func (pc *ProtoClient) getDescriptors(data string) error {
}

response := <-pc.Client.IncomingMsgChan

descriptors := &protos.ProtoDescriptors{}

if err := proto.Unmarshal(response.Data, descriptors); err != nil {
return err
}

// get all proto types
descriptorArray := make([]*protobuf.FileDescriptorProto, 0)
for i := range descriptors.Desc {
fileDescriptorProto, err := unpackDescriptor(descriptors.Desc[i])
if err != nil {
Expand All @@ -280,8 +274,7 @@ func (pc *ProtoClient) getDescriptors(data string) error {
pc.descriptorsNames[names[i]] = true
}

err = pc.buildProtosFromDescriptor(descriptorArray)
if err != nil {
if err = pc.buildProtosFromDescriptor(descriptorArray); err != nil {
return err
}

Expand Down

0 comments on commit eab8979

Please sign in to comment.