// Topic subscription, called from upper layer (i.e. some MonoBahavior public async Task <ServiceReply> Subscribe(string topic, Action <TopicDataRecord> function) { // Repeated fields cannot be instantiated in SerivceRequest creation RepeatedField <string> subscribeTopics = new RepeatedField <string>(); subscribeTopics.Add(topic); Debug.Log("Subscribing to topic: " + topic + " (backend), subscribeRepeatedField: " + subscribeTopics.Count); ServiceRequest topicSubscription = new ServiceRequest { Topic = DEFAULT_TOPICS.SERVICES.TOPIC_SUBSCRIPTION, TopicSubscription = new TopicSubscription { ClientId = clientSpecification.Id, SubscribeTopics = { subscribeTopics } } }; var task = CallService(topicSubscription); ServiceReply subReply = await task; if (subReply.Error != null) { Debug.LogError("subReply Error! Error msg: " + subReply.Error.ToString()); return(null); } // adding callback function to dictionary netmqTopicDataClient.AddTopicDataCallback(topic, function); return(subReply); }
public async Task <bool> SubscribeTopic(string topic, Action <TopicDataRecord> callback) { if (callback == null) { Debug.LogError("SubscribeTopic() - callback is NULL!"); return(false); } if (this.netmqTopicDataClient.IsSubscribed(topic)) { netmqTopicDataClient.AddTopicDataCallback(topic, callback); return(true); } // Repeated fields cannot be instantiated in SerivceRequest creation RepeatedField <string> subscribeTopics = new RepeatedField <string>(); subscribeTopics.Add(topic); //Debug.Log("Subscribing to topic: " + topic + " (backend), subscribeRepeatedField: " + subscribeTopics.Count); ServiceRequest topicSubscription = new ServiceRequest { Topic = UbiiConstants.Instance.DEFAULT_TOPICS.SERVICES.TOPIC_SUBSCRIPTION, TopicSubscription = new TopicSubscription { ClientId = clientSpecification.Id, SubscribeTopics = { subscribeTopics } } }; var task = CallService(topicSubscription); ServiceReply subReply = await task; if (subReply.Error != null) { Debug.LogError("subReply Error! Error msg: " + subReply.Error.ToString()); return(false); } // adding callback function to dictionary netmqTopicDataClient.AddTopicDataCallback(topic, callback); return(true); }