/// <summary> /// Disconnect from the remote ros environment. /// </summary> public void Disconnect() { if (!this.IsConnected) { return; } // this.sendMsgThread.Abort(); this.isConnected = false; Thread.Sleep(15); foreach (var sub in this.subscribers) { this.webSocket.Send(RosBridgeMsg.UnSubscribe(sub.Key.Topic)); } foreach (var pub in this.publishers) { this.webSocket.Send(RosBridgeMsg.UnAdvertiseTopic(pub.Topic)); pub.Unadvertise(); } foreach (var srv in this.serviceProviders) { this.webSocket.Send(RosBridgeMsg.UnadvertiseService(srv.Key.Name)); } this.webSocket.Close(); this.msgQueue.Clear(); }
/// <summary> /// Remove a publisher from this connection /// </summary> /// <param name="publisher"></param> public void Unadvertise(RosBridgePublisher publisher) { if (this.IsConnected) { this.webSocket.Send(RosBridgeMsg.UnAdvertiseTopic(publisher.Topic)); } publisher.Unadvertise(); this.publishers.Remove(publisher); }