diff --git a/broadcast.go b/broadcast.go index 6f2245992..d18cdc937 100644 --- a/broadcast.go +++ b/broadcast.go @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:generate stringer -type=msgType + package pilosa import ( @@ -53,7 +55,7 @@ func (nopBroadcaster) SendTo(*Node, Message) error { return nil } // Broadcast message types. const ( - messageTypeCreateShard = iota + messageTypeCreateShard msgType = iota messageTypeCreateIndex messageTypeDeleteIndex messageTypeCreateField @@ -71,6 +73,8 @@ const ( messageTypeNodeStatus ) +type msgType byte + // MarshalInternalMessage serializes the pilosa message and adds pilosa internal // type info which is used by the internal messaging stuff. func MarshalInternalMessage(m Message, s Serializer) ([]byte, error) { @@ -79,11 +83,11 @@ func MarshalInternalMessage(m Message, s Serializer) ([]byte, error) { if err != nil { return nil, errors.Wrap(err, "marshaling") } - return append([]byte{typ}, buf...), nil + return append([]byte{byte(typ)}, buf...), nil } func getMessage(typ byte) Message { - switch typ { + switch msgType(typ) { case messageTypeCreateShard: return &CreateShardMessage{} case messageTypeCreateIndex: @@ -121,7 +125,7 @@ func getMessage(typ byte) Message { } } -func getMessageType(m Message) byte { +func getMessageType(m Message) msgType { switch m.(type) { case *CreateShardMessage: return messageTypeCreateShard diff --git a/msgtype_string.go b/msgtype_string.go new file mode 100644 index 000000000..d4c101bbe --- /dev/null +++ b/msgtype_string.go @@ -0,0 +1,16 @@ +// Code generated by "stringer -type=msgType"; DO NOT EDIT. + +package pilosa + +import "strconv" + +const _msgType_name = "messageTypeCreateShardmessageTypeCreateIndexmessageTypeDeleteIndexmessageTypeCreateFieldmessageTypeDeleteFieldmessageTypeCreateViewmessageTypeDeleteViewmessageTypeClusterStatusmessageTypeResizeInstructionmessageTypeResizeInstructionCompletemessageTypeSetCoordinatormessageTypeUpdateCoordinatormessageTypeNodeStatemessageTypeRecalculateCachesmessageTypeNodeEventmessageTypeNodeStatus" + +var _msgType_index = [...]uint16{0, 22, 44, 66, 88, 110, 131, 152, 176, 204, 240, 265, 293, 313, 341, 361, 382} + +func (i msgType) String() string { + if i >= msgType(len(_msgType_index)-1) { + return "msgType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _msgType_name[_msgType_index[i]:_msgType_index[i+1]] +} diff --git a/server.go b/server.go index 5e6f61087..fbbf3fa42 100644 --- a/server.go +++ b/server.go @@ -580,7 +580,7 @@ func (s *Server) SendSync(m Message) error { if err != nil { return fmt.Errorf("marshaling message: %v", err) } - msg = append([]byte{getMessageType(m)}, msg...) + msg = append([]byte{byte(getMessageType(m))}, msg...) for _, node := range s.cluster.nodes { node := node s.logger.Printf("SendSync to: %s", node.URI) @@ -604,12 +604,12 @@ func (s *Server) SendAsync(m Message) error { // SendTo represents an implementation of Broadcaster. func (s *Server) SendTo(to *Node, m Message) error { - s.logger.Printf("SendTo: %s", to.URI) + s.logger.Printf("SendTo: %s, type: %s", to.URI, getMessageType(m)) msg, err := s.serializer.Marshal(m) if err != nil { return fmt.Errorf("marshaling message: %v", err) } - msg = append([]byte{getMessageType(m)}, msg...) + msg = append([]byte{byte(getMessageType(m))}, msg...) return s.defaultClient.SendMessage(context.Background(), &to.URI, msg) }