Exemplo n.º 1
0
 public static IServiceCollection AddMqttClientHostedService(this IServiceCollection services,
                                                             MqttSetting mqttSetting)
 {
     services.AddMqttClientServiceWithConfig(aspOptionBuilder =>
     {
         aspOptionBuilder
         .WithCredentials(mqttSetting.Username, mqttSetting.Password)
         .WithClientId(mqttSetting.ClientId)
         .WithTcpServer(mqttSetting.Host, mqttSetting.Port);
     });
     return(services);
 }
Exemplo n.º 2
0
    private static void Configuration(HostBuilderContext hostContext, IServiceCollection services)
    {
        var config = new MqttSetting
        {
            Host     = "127.0.0.1",
            Port     = 1883,
            ClientId = "asdasdasd"
        };

        services.AddMqttClientHostedService(config);
        //    ConfigureRedis(hostContext, services);
        //   ConfigureKafka(hostContext, services);
        ConfigureMicroBus(services);

        //  services.AddSingleton<IClock, SystemClock>();
    }
Exemplo n.º 3
0
 public FBoxMqttService(
     Func <string, MqttManagerBase> mqttManagerFunc,
     MqttSetting mqttSetting,
     BoxStateHttpClient boxStateHttpClient,
     ILogger <FBoxMqttService> logger,
     IKafkaProducerManager kafkaProducerManager,
     KafkaSetting kafkaSetting
     )
 {
     _mqttManagerFunc      = mqttManagerFunc ?? throw new ArgumentNullException(nameof(_mqttManagerFunc));
     _mqttSetting          = mqttSetting ?? throw new ArgumentNullException(nameof(_mqttSetting));
     _boxStateHttpClient   = boxStateHttpClient ?? throw new ArgumentNullException(nameof(_boxStateHttpClient));
     _logger               = logger ?? throw new ArgumentNullException(nameof(_logger));
     _kafkaProducerManager =
         kafkaProducerManager ?? throw new ArgumentNullException(nameof(_kafkaProducerManager));
     _kafkaSetting = kafkaSetting ?? throw new ArgumentNullException(nameof(kafkaSetting));
 }
Exemplo n.º 4
0
        void FixedUpdate()
        {
            if (msgList.Count > 0)
            {
                MqttMsgPublishEventArgs e = msgList[0];
                if (!MqttSetting.getTopicsInList().Contains(e.Topic))
                {
                    Debug.Log("-> The Topic '" + e.Topic + "' doesn't exist in the defined list. Please check! (the message will be deleted!)");
                    msgList.Remove(e);
                    return;
                }

                receivedMsg = System.Text.Encoding.UTF8.GetString(e.Message);
                //Debug.Log ("-> Received Message is : " + receivedMsg);
                allObjects = UnityEngine.Object.FindObjectsOfType <GameObject>();

                switch (e.Topic)
                {
                case MqttSetting.MAIN_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.MAIN_TOPIC);
                    //Debug.Log("-> The message is : " + e.Message);

                    topicGameObject = gameObject;
                    GamaMessage gamaMessage = (GamaMessage)MsgSerialization.deserialization(receivedMsg, new GamaMessage());
                    targetGameObject = GameObject.Find(gamaMessage.receivers);

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + gamaMessage.receivers + "). Please check you code! ");
                        break;
                    }

                    obj = new object[] { gamaMessage, targetGameObject };
                    //GamaManager obje = (GamaManager) FindObjectOfType(typeof(GamaManager));
                    GameObject.Find(IGamaManager.MAIN_TOPIC_MANAGER).GetComponent(IGamaManager.MAIN_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);


                    break;

                case MqttSetting.MONO_FREE_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.MONO_FREE_TOPIC);
                    MonoFreeTopicMessage monoFreeTopicMessage = (MonoFreeTopicMessage)MsgSerialization.deserialization(receivedMsg, new MonoFreeTopicMessage());
                    targetGameObject = GameObject.Find(monoFreeTopicMessage.objectName);
                    obj = new object[] { monoFreeTopicMessage, targetGameObject };

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + monoFreeTopicMessage.objectName + "). Please check your code! ");
                        break;
                    }
                    Debug.Log("The message is to " + monoFreeTopicMessage.objectName + " about the methode " + monoFreeTopicMessage.methodName + " and attribute " + monoFreeTopicMessage.attribute);
                    GameObject.Find(IGamaManager.MONO_FREE_TOPIC_MANAGER).GetComponent(IGamaManager.MONO_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.MULTIPLE_FREE_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.MULTIPLE_FREE_TOPIC);

                    MultipleFreeTopicMessage multipleFreetopicMessage = (MultipleFreeTopicMessage)MsgSerialization.deserialization(receivedMsg, new MultipleFreeTopicMessage());
                    targetGameObject = GameObject.Find(multipleFreetopicMessage.objectName);
                    obj = new object[] { multipleFreetopicMessage, targetGameObject };

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + multipleFreetopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    GameObject.Find(IGamaManager.MULTIPLE_FREE_TOPIC_MANAGER).GetComponent(IGamaManager.MULTIPLE_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.POSITION_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.POSITION_TOPIC);

                    PositionTopicMessage positionTopicMessage = (PositionTopicMessage)MsgSerialization.deserialization(receivedMsg, new PositionTopicMessage());
                    targetGameObject = GameObject.Find(positionTopicMessage.objectName);
                    obj = new object[] { positionTopicMessage, targetGameObject };

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + positionTopicMessage.objectName + "). Please check your code! ");
                        break;
                    }
                    else
                    {
                        GameObject.Find(IGamaManager.POSITION_TOPIC_MANAGER).GetComponent(IGamaManager.POSITION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                    }


                    break;

                case MqttSetting.MOVE_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.MOVE_TOPIC);

                    MoveTopicMessage moveTopicMessage = (MoveTopicMessage)MsgSerialization.deserialization(receivedMsg, new MoveTopicMessage());
                    targetGameObject = GameObject.Find(moveTopicMessage.objectName);
                    obj = new object[] { moveTopicMessage, targetGameObject };

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + moveTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    GameObject.Find(IGamaManager.MOVE_TOPIC_MANAGER).GetComponent(IGamaManager.MOVE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.COLOR_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.COLOR_TOPIC);

                    ColorTopicMessage colorTopicMessage = (ColorTopicMessage)MsgSerialization.deserialization(receivedMsg, new ColorTopicMessage());
                    targetGameObject = GameObject.Find(colorTopicMessage.objectName);
                    obj = new object[] { colorTopicMessage, targetGameObject };

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + colorTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    GameObject.Find(IGamaManager.COLOR_TOPIC_MANAGER).GetComponent(IGamaManager.COLOR_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);


                    break;

                case MqttSetting.GET_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.GET_TOPIC);
                    string value = null;

                    GetTopicMessage getTopicMessage = (GetTopicMessage)MsgSerialization.deserialization(receivedMsg, new GetTopicMessage());
                    targetGameObject = GameObject.Find(getTopicMessage.objectName);


                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + getTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    obj = new object[] { getTopicMessage, targetGameObject, value };

                    GameObject.Find(IGamaManager.GET_TOPIC_MANAGER).GetComponent(IGamaManager.GET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                    sendReplay(clientId, "GamaAgent", getTopicMessage.attribute, (string)obj[2]);

                    break;

                case MqttSetting.SET_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.SET_TOPIC);

                    SetTopicMessage setTopicMessage = (SetTopicMessage)MsgSerialization.deserialization(receivedMsg, new SetTopicMessage());
                    // Debug.Log("-> Target game object name: " + setTopicMessage.objectName);
                    // Debug.Log("-> Message: " + receivedMsg);
                    targetGameObject = GameObject.Find(setTopicMessage.objectName);

                    if (targetGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + setTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    obj = new object[] { setTopicMessage, targetGameObject };

                    GameObject.Find(IGamaManager.SET_TOPIC_MANAGER).GetComponent(IGamaManager.SET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.PROPERTY_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.PROPERTY_TOPIC);

                    try
                    {
                    }
                    catch (Exception er)
                    {
                        Debug.Log("Error : " + er.Message);
                    }

                    PropertyTopicMessage propertyTopicMessage = (PropertyTopicMessage)MsgSerialization.deserialization(receivedMsg, new PropertyTopicMessage());
                    Debug.Log("-> Target game object name: " + propertyTopicMessage.objectName);
                    targetGameObject = GameObject.Find(propertyTopicMessage.objectName);

                    if (targetGameObject == null)
                    {
                        Debug.Log(" Sorry, requested gameObject is null (" + propertyTopicMessage.objectName + "). Please check you code! ");
                        // break;
                    }
                    else
                    {
                        obj = new object[] { propertyTopicMessage, targetGameObject };
                        GameObject.Find(IGamaManager.PROPERTY_TOPIC_MANAGER).GetComponent(IGamaManager.PROPERTY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                    }


                    break;

                case MqttSetting.CREATE_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.CREATE_TOPIC);
                    // Debug.Log("-> Message: " + receivedMsg);
                    CreateTopicMessage createTopicMessage = (CreateTopicMessage)MsgSerialization.deserialization(receivedMsg, new CreateTopicMessage());
                    obj = new object[] { createTopicMessage };

                    GameObject.Find(IGamaManager.CREATE_TOPIC_MANAGER).GetComponent(IGamaManager.CREATE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.DESTROY_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.DESTROY_TOPIC);

                    DestroyTopicMessage destroyTopicMessage = (DestroyTopicMessage)MsgSerialization.deserialization(receivedMsg, new DestroyTopicMessage());
                    obj = new object[] { destroyTopicMessage };

                    if (topicGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + destroyTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    GameObject.Find(IGamaManager.DESTROY_TOPIC_MANAGER).GetComponent(IGamaManager.DESTROY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                    break;

                case MqttSetting.NOTIFICATION_TOPIC:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.NOTIFICATION_TOPIC);

                    NotificationTopicMessage notificationTopicMessage = (NotificationTopicMessage)MsgSerialization.deserialization(receivedMsg, new NotificationTopicMessage());
                    obj = new object[] { notificationTopicMessage };


                    if (topicGameObject == null)
                    {
                        Debug.LogError(" Sorry, requested gameObject is null (" + notificationTopicMessage.objectName + "). Please check you code! ");
                        break;
                    }

                    GameObject.Find(IGamaManager.NOTIFICATION_TOPIC_MANAGER).GetComponent(IGamaManager.NOTIFICATION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);


                    break;

                default:

                    Debug.Log("-> Topic to deal with is : " + MqttSetting.DEFAULT_TOPIC);

                    break;
                }

                msgList.Remove(e);
            }

            checkForNotifications();
            GameObject mapBuilder = GameObject.Find("MapBuilder");

            //GameObject mapBuilder = GameObject.Find("MapBuilder");
            //regionMap = (RegionMap) FindObjectOfType(typeof(RegionMap));
            //GameObject mapBuilder  = (GameObject) FindObjectOfType(typeof(MapBuilder));

            if (mapBuilder != null)
            {
                mapBuilder.GetComponent <RegionMap>().SendMessage("DrawNewAgents");
            }
            else
            {
                Debug.Log("No such Object. Sorry");
            }
        }
Exemplo n.º 5
0
    void FixedUpdate()
    {
        Debug.Log("-> The number of all received agents is : " + gamaAgentList.Count);

        if (msgList.Count > 0)
        {
            MqttMsgPublishEventArgs e = msgList[0];
            if (!MqttSetting.getTopicsInList().Contains(e.Topic))
            {
                Debug.Log("-> The Topic '" + e.Topic + "' doesn't exist in the defined list. Please check!");
                return;
            }

            receivedMsg = System.Text.Encoding.UTF8.GetString(e.Message);
            //Debug.Log ("-> Received Message is : " + receivedMsg);
            allObjects = UnityEngine.Object.FindObjectsOfType <GameObject>();

            switch (e.Topic)
            {
            case MqttSetting.MAIN_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MAIN_TOPIC);
                Debug.Log("-> The message is : " + e.Message);

                topicGameObject = gameObject;


                GamaMessage gamaMessage = (GamaMessage)msgDes.deserialization(receivedMsg, new GamaMessage());
                targetGameObject = getGameObjectByName(gamaMessage.receivers);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + gamaMessage.receivers + "). Please check you code! ");
                    break;
                }

                obj = new object[] { gamaMessage, targetGameObject };

                getGameObjectByName(MqttSetting.MAIN_TOPIC_MANAGER).GetComponent(MqttSetting.MAIN_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);



                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MONO_FREE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MONO_FREE_TOPIC);
                MonoFreeTopicMessage monoFreeTopicMessage = (MonoFreeTopicMessage)msgDes.deserialization(receivedMsg, new MonoFreeTopicMessage());
                targetGameObject = getGameObjectByName(monoFreeTopicMessage.objectName);
                obj = new object[] { monoFreeTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + monoFreeTopicMessage.objectName + "). Please check your code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.MONO_FREE_TOPIC_MANAGER).GetComponent(MqttSetting.MONO_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MULTIPLE_FREE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MULTIPLE_FREE_TOPIC);

                MultipleFreeTopicMessage multipleFreetopicMessage = (MultipleFreeTopicMessage)msgDes.deserialization(receivedMsg, new MultipleFreeTopicMessage());
                targetGameObject = getGameObjectByName(multipleFreetopicMessage.objectName);
                obj = new object[] { multipleFreetopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + multipleFreetopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.MULTIPLE_FREE_TOPIC_MANAGER).GetComponent(MqttSetting.MULTIPLE_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.POSITION_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.POSITION_TOPIC);

                PositionTopicMessage positionTopicMessage = (PositionTopicMessage)msgDes.deserialization(receivedMsg, new PositionTopicMessage());
                targetGameObject = getGameObjectByName(positionTopicMessage.objectName);
                obj = new object[] { positionTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + positionTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.POSITION_TOPIC_MANAGER).GetComponent(MqttSetting.POSITION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MOVE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MOVE_TOPIC);

                MoveTopicMessage moveTopicMessage = (MoveTopicMessage)msgDes.deserialization(receivedMsg, new MoveTopicMessage());
                targetGameObject = getGameObjectByName(moveTopicMessage.objectName);
                obj = new object[] { moveTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + moveTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.MOVE_TOPIC_MANAGER).GetComponent(MqttSetting.MOVE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.COLOR_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.COLOR_TOPIC);

                ColorTopicMessage colorTopicMessage = (ColorTopicMessage)msgDes.deserialization(receivedMsg, new ColorTopicMessage());
                targetGameObject = getGameObjectByName(colorTopicMessage.objectName);
                obj = new object[] { colorTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + colorTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.COLOR_TOPIC_MANAGER).GetComponent(MqttSetting.COLOR_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                //------------------------------------------------------------------------------
                break;

            case MqttSetting.GET_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.GET_TOPIC);
                string value = null;

                GetTopicMessage getTopicMessage = (GetTopicMessage)msgDes.deserialization(receivedMsg, new GetTopicMessage());
                targetGameObject = getGameObjectByName(getTopicMessage.objectName);


                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + getTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { getTopicMessage, targetGameObject, value };

                getGameObjectByName(MqttSetting.GET_TOPIC_MANAGER).GetComponent(MqttSetting.GET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                sendReplay(clientId, "GamaAgent", getTopicMessage.attribute, (string)obj[2]);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.SET_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.SET_TOPIC);

                SetTopicMessage setTopicMessage = (SetTopicMessage)msgDes.deserialization(receivedMsg, new SetTopicMessage());
                Debug.Log("-> Target game object name: " + setTopicMessage.objectName);
                Debug.Log("-> Message: " + receivedMsg);
                targetGameObject = getGameObjectByName(setTopicMessage.objectName);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + setTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { setTopicMessage, targetGameObject };

                getGameObjectByName(MqttSetting.SET_TOPIC_MANAGER).GetComponent(MqttSetting.SET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.PROPERTY_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.PROPERTY_TOPIC);



                PropertyTopicMessage propertyTopicMessage = (PropertyTopicMessage)msgDes.deserialization(receivedMsg, new PropertyTopicMessage());
                Debug.Log("-> Target game object name: " + propertyTopicMessage.objectName);
                targetGameObject = getGameObjectByName(propertyTopicMessage.objectName);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + propertyTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { propertyTopicMessage, targetGameObject };

                getGameObjectByName(MqttSetting.PROPERTY_TOPIC_MANAGER).GetComponent(MqttSetting.PROPERTY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.CREATE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.CREATE_TOPIC);
                Debug.Log("-> Message: " + receivedMsg);
                CreateTopicMessage createTopicMessage = (CreateTopicMessage)msgDes.deserialization(receivedMsg, new CreateTopicMessage());
                obj = new object[] { createTopicMessage };

                getGameObjectByName(MqttSetting.CREATE_TOPIC_MANAGER).GetComponent(MqttSetting.CREATE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.DESTROY_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.DESTROY_TOPIC);

                DestroyTopicMessage destroyTopicMessage = (DestroyTopicMessage)msgDes.deserialization(receivedMsg, new DestroyTopicMessage());
                obj = new object[] { destroyTopicMessage };

                if (topicGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + destroyTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.DESTROY_TOPIC_MANAGER).GetComponent(MqttSetting.DESTROY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.NOTIFICATION_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.NOTIFICATION_TOPIC);

                NotificationTopicMessage notificationTopicMessage = (NotificationTopicMessage)msgDes.deserialization(receivedMsg, new NotificationTopicMessage());
                obj = new object[] { notificationTopicMessage };


                if (topicGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + notificationTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                getGameObjectByName(MqttSetting.NOTIFICATION_TOPIC_MANAGER).GetComponent(MqttSetting.NOTIFICATION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                //------------------------------------------------------------------------------
                break;

            default:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.DEFAULT_TOPIC);
                //------------------------------------------------------------------------------
                break;
            }

            msgList.Remove(e);
        }

        checkForNotifications();
        Debug.Log("Check if there are objects to create!");
        GameObject builder = getGameObjectByName("MapBuilder");

        if (builder != null)
        {
            builder.GetComponent <RegionMap>().SendMessage("DrawNewAgents");
            Debug.Log("Drawing agent is done! " + (new DateTime()).ToString());
        }
    }
Exemplo n.º 6
0
    void FixedUpdate()
    {
        if (msgList.Count > 0)
        {
            MqttMsgPublishEventArgs e = msgList[0];
            if (!MqttSetting.getTopicsInList().Contains(e.Topic))
            {
                Debug.Log("-> The Topic '" + e.Topic + "' doesn't exist in the defined list. Please check! (the message will be deleted!)");
                msgList.Remove(e);
                return;
            }

            receivedMsg = System.Text.Encoding.UTF8.GetString(e.Message);
            //Debug.Log ("-> Received Message is : " + receivedMsg);
            allObjects = UnityEngine.Object.FindObjectsOfType <GameObject>();

            switch (e.Topic)
            {
            case MqttSetting.MAIN_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MAIN_TOPIC);
                //Debug.Log("-> The message is : " + e.Message);

                topicGameObject = gameObject;
                GamaMessage gamaMessage = (GamaMessage)MsgSerialization.deserialization(receivedMsg, new GamaMessage());
                targetGameObject = GameObject.Find(gamaMessage.receivers);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + gamaMessage.receivers + "). Please check you code! ");
                    break;
                }

                obj = new object[] { gamaMessage, targetGameObject };
                //GamaManager obje = (GamaManager) FindObjectOfType(typeof(GamaManager));
                GameObject.Find(MqttSetting.MAIN_TOPIC_MANAGER).GetComponent(MqttSetting.MAIN_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MONO_FREE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MONO_FREE_TOPIC);
                MonoFreeTopicMessage monoFreeTopicMessage = (MonoFreeTopicMessage)MsgSerialization.deserialization(receivedMsg, new MonoFreeTopicMessage());
                targetGameObject = GameObject.Find(monoFreeTopicMessage.objectName);
                obj = new object[] { monoFreeTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + monoFreeTopicMessage.objectName + "). Please check your code! ");
                    break;
                }
                Debug.Log("The message is to " + monoFreeTopicMessage.objectName + " about the methode " + monoFreeTopicMessage.methodName + " and attribute " + monoFreeTopicMessage.attribute);
                GameObject.Find(MqttSetting.MONO_FREE_TOPIC_MANAGER).GetComponent(MqttSetting.MONO_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MULTIPLE_FREE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MULTIPLE_FREE_TOPIC);

                MultipleFreeTopicMessage multipleFreetopicMessage = (MultipleFreeTopicMessage)MsgSerialization.deserialization(receivedMsg, new MultipleFreeTopicMessage());
                targetGameObject = GameObject.Find(multipleFreetopicMessage.objectName);
                obj = new object[] { multipleFreetopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + multipleFreetopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                GameObject.Find(MqttSetting.MULTIPLE_FREE_TOPIC_MANAGER).GetComponent(MqttSetting.MULTIPLE_FREE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.POSITION_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.POSITION_TOPIC);



                PositionTopicMessage positionTopicMessage = (PositionTopicMessage)MsgSerialization.deserialization(receivedMsg, new PositionTopicMessage());
                targetGameObject = GameObject.Find(positionTopicMessage.objectName);
                obj = new object[] { positionTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + positionTopicMessage.objectName + "). Please check you code! ");
                    break;
                }
                else
                {
                    GameObject.Find(MqttSetting.POSITION_TOPIC_MANAGER).GetComponent(MqttSetting.POSITION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                }

                //------------------------------------------------------------------------------
                break;

            case MqttSetting.MOVE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.MOVE_TOPIC);


                MoveTopicMessage moveTopicMessage = (MoveTopicMessage)MsgSerialization.deserialization(receivedMsg, new MoveTopicMessage());

                print("the coordinates are: ");

                print(" x =  " + moveTopicMessage.position.x);
                print(" y = " + moveTopicMessage.position.y);
                print(" z " + moveTopicMessage.position.z);

                targetGameObject = GameObject.Find(moveTopicMessage.objectName);
                obj = new object[] { moveTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + moveTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                GameObject.Find(MqttSetting.MOVE_TOPIC_MANAGER).GetComponent(MqttSetting.MOVE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.COLOR_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.COLOR_TOPIC);

                ColorTopicMessage colorTopicMessage = (ColorTopicMessage)MsgSerialization.deserialization(receivedMsg, new ColorTopicMessage());
                targetGameObject = GameObject.Find(colorTopicMessage.objectName);
                obj = new object[] { colorTopicMessage, targetGameObject };

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + colorTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                GameObject.Find(MqttSetting.COLOR_TOPIC_MANAGER).GetComponent(MqttSetting.COLOR_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                //------------------------------------------------------------------------------
                break;

            case MqttSetting.GET_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.GET_TOPIC);
                string value = null;

                GetTopicMessage getTopicMessage = (GetTopicMessage)MsgSerialization.deserialization(receivedMsg, new GetTopicMessage());
                targetGameObject = GameObject.Find(getTopicMessage.objectName);


                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + getTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { getTopicMessage, targetGameObject, value };

                GameObject.Find(MqttSetting.GET_TOPIC_MANAGER).GetComponent(MqttSetting.GET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                sendReplay(clientId, "GamaAgent", getTopicMessage.attribute, (string)obj[2]);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.SET_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.SET_TOPIC);

                SetTopicMessage setTopicMessage = (SetTopicMessage)MsgSerialization.deserialization(receivedMsg, new SetTopicMessage());
                // Debug.Log("-> Target game object name: " + setTopicMessage.objectName);
                // Debug.Log("-> Message: " + receivedMsg);
                targetGameObject = GameObject.Find(setTopicMessage.objectName);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + setTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { setTopicMessage, targetGameObject };

                GameObject.Find(MqttSetting.SET_TOPIC_MANAGER).GetComponent(MqttSetting.SET_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.PROPERTY_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.PROPERTY_TOPIC);
                //XStream xstream = new XStream();
                // -------------------------------
                PropertyTopicMessage pm = new PropertyTopicMessage();
                pm.emissionTimeStamp = "8";
                pm.contents          = "Content not set";
                pm.objectName        = "Player";
                pm.receivers         = "Player";
                pm.sender            = "GamaAgent0";
                pm.unread            = "true";
                pm.property          = "localScale";
                pm.valueType         = "GamaPoint";
                pm.value             = new GamaPoint();


                Debug.Log("---- - >  Serialization ");
                string pmMessage = MsgSerialization.serialization(pm);

                Debug.Log("---- - >  pmMessage is \n " + pmMessage);

                PropertyTopicMessage pm2 = (PropertyTopicMessage)MsgSerialization.deserialization(pmMessage, new PropertyTopicMessage());

                Debug.Log("---- - >  Deserialization ");

                print("-- > property: " + pm2.property);
                print("-- > value: " + pm2.value);

                GamaPoint pp = (GamaPoint)pm2.value;

                print("-- > value x: " + pp.x);
                print("-- > value y: " + pp.y);
                print("-- > value z: " + pp.z);
                // ----------------------------

                PropertyTopicMessage propertyTopicMessage;


                Debug.Log("---- - >  Target and message is \n " + receivedMsg);
                // propertyTopicMessage = (PropertyTopicMessage) xstream.FromXml(receivedMsg);
                propertyTopicMessage = (PropertyTopicMessage)MsgSerialization.deserialization(receivedMsg, new PropertyTopicMessage());

                Debug.Log("---77777 - >  Deserealized  \n ");
                // Debug.Log("-> Target game object Value: " + propertyTopicMessage.value);


                GamaPoint gp = (GamaPoint)propertyTopicMessage.value;

                // PropertyTopicMessage propertyTopicMessage = (PropertyTopicMessage)MsgSerialization.deserialization(receivedMsg, new PropertyTopicMessage());
                Debug.Log("-> Target game object name: " + propertyTopicMessage.objectName);
                Debug.Log("-> Target game object Value: " + gp.getVector3());
                targetGameObject = GameObject.Find(propertyTopicMessage.objectName);

                if (targetGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + propertyTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                obj = new object[] { propertyTopicMessage, targetGameObject };

                GameObject.Find(MqttSetting.PROPERTY_TOPIC_MANAGER).GetComponent(MqttSetting.PROPERTY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.CREATE_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.CREATE_TOPIC);
                // Debug.Log("-> Message: " + receivedMsg);
                CreateTopicMessage createTopicMessage = (CreateTopicMessage)MsgSerialization.deserialization(receivedMsg, new CreateTopicMessage());
                obj = new object[] { createTopicMessage };

                GameObject.Find(MqttSetting.CREATE_TOPIC_MANAGER).GetComponent(MqttSetting.CREATE_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.DESTROY_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.DESTROY_TOPIC);

                DestroyTopicMessage destroyTopicMessage = (DestroyTopicMessage)MsgSerialization.deserialization(receivedMsg, new DestroyTopicMessage());
                obj = new object[] { destroyTopicMessage };

                if (topicGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + destroyTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                GameObject.Find(MqttSetting.DESTROY_TOPIC_MANAGER).GetComponent(MqttSetting.DESTROY_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);
                //------------------------------------------------------------------------------
                break;

            case MqttSetting.NOTIFICATION_TOPIC:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.NOTIFICATION_TOPIC);

                NotificationTopicMessage notificationTopicMessage = (NotificationTopicMessage)MsgSerialization.deserialization(receivedMsg, new NotificationTopicMessage());
                obj = new object[] { notificationTopicMessage };


                if (topicGameObject == null)
                {
                    Debug.LogError(" Sorry, requested gameObject is null (" + notificationTopicMessage.objectName + "). Please check you code! ");
                    break;
                }

                GameObject.Find(MqttSetting.NOTIFICATION_TOPIC_MANAGER).GetComponent(MqttSetting.NOTIFICATION_TOPIC_SCRIPT).SendMessage("ProcessTopic", obj);

                //------------------------------------------------------------------------------
                break;

            default:
                //------------------------------------------------------------------------------
                Debug.Log("-> Topic to deal with is : " + MqttSetting.DEFAULT_TOPIC);
                //------------------------------------------------------------------------------
                break;
            }

            msgList.Remove(e);
        }

        checkForNotifications();
        GameObject mapBuilder = GameObject.Find("MapBuilder");

        //GameObject mapBuilder = GameObject.Find("MapBuilder");
        //regionMap = (RegionMap) FindObjectOfType(typeof(RegionMap));
        //GameObject mapBuilder  = (GameObject) FindObjectOfType(typeof(MapBuilder));

        if (mapBuilder != null)
        {
            mapBuilder.GetComponent <RegionMap>().SendMessage("DrawNewAgents");
        }
        else
        {
            //       Debug.Log("No such Object. Sorry");
        }
    }
 public MqttService(ILogger <MqttService <T> > logger, IOptions <MqttSetting> optionsAccessor, ITopicHandler <T> topicHandler)
 {
     _logger       = logger;
     _options      = optionsAccessor.Value;
     _topicHandler = topicHandler;
 }