// recv receives marshaled data from 0mq socket. func recv(sock *goczmq.Sock, flag int) (t Transit, err error) { var frames [][]byte if flag == goczmq.FlagDontWait { frames, err = sock.RecvMessageNoWait() } else { frames, err = sock.RecvMessage() } if err != nil { return nil, err } sType := sock.GetType() if err != nil { return nil, err } var routingID []byte // If message came from a router socket, first frame is routingID if sType == goczmq.Router { if len(frames) <= 1 { return nil, errors.New("no routingID") } routingID = frames[0] frames = frames[1:] } t, err = Unmarshal(frames...) if err != nil { return nil, err } if sType == goczmq.Router { t.SetRoutingID(routingID) } return t, err }