func (mr *MsgRewriter) RewriteIngress(msg mqtt.Message) mqtt.Message {

	//	log.Printf("[ingress] msg: %s %v", reflect.TypeOf(msg), msg)

	switch msg := msg.(type) {
	case *mqtt.Connect:
		msg = mr.CredentialsRewriter.RewriteCredentials(msg)
	case *mqtt.Publish:
		msg.TopicName = mr.IngressRewriter.RewriteTopicName(msg.TopicName)
	case *mqtt.Subscribe:
		msg.Topics = mr.IngressRewriter.RewriteTopics(msg.Topics)
	case *mqtt.Unsubscribe:
		msg.Topics = mr.IngressRewriter.RenameTopicNames(msg.Topics)
	}
	return msg
}
func (mr *MsgRewriter) RewriteEgress(msg mqtt.Message) mqtt.Message {

	//	log.Printf("[egress] msg: %s %v", reflect.TypeOf(msg), msg)

	switch msg := msg.(type) {
	case *mqtt.Publish:
		msg.TopicName = mr.EgressRewriter.RewriteTopicName(msg.TopicName)
	}
	return msg
}