From 68f73131aa0f993bfc1bfa622be63f8862661c16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20L=C3=B3pez=20Aza=C3=B1a?= <daniloaz@gmail.com>
Date: Thu, 28 Mar 2024 20:55:23 +0100
Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20(ls=5Fclient.rs):=20refact?=
 =?UTF-8?q?or=20connect=20method=20to=20check=20server=5Faddress=20before?=
 =?UTF-8?q?=20connecting=20=E2=9C=A8=20(main.rs):=20rename=20subscription?=
 =?UTF-8?q?=20to=20my=5Fsubscription=20for=20clarity=20=E2=9C=A8=20(main.r?=
 =?UTF-8?q?s):=20move=20subscription=20setup=20before=20client=20creation?=
 =?UTF-8?q?=20=E2=9C=A8=20(main.rs):=20add=20client.subscribe=20and=20clie?=
 =?UTF-8?q?nt.connect=20calls=20to=20main=20function?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/ls_client.rs |  5 ++++-
 src/main.rs      | 14 ++++++++------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/ls_client.rs b/src/ls_client.rs
index 214a722..59dd247 100644
--- a/src/ls_client.rs
+++ b/src/ls_client.rs
@@ -148,7 +148,10 @@ impl LightstreamerClient {
     ///
     /// See also `ConnectionDetails.setServerAddress()`
     pub fn connect(&mut self) -> Result<(), IllegalStateException> {
-        // Implementation for connect
+        if self.server_address.is_none() {
+            return Err(IllegalStateException::new("No server address was configured."));
+        }
+
         Ok(())
     }
 
diff --git a/src/main.rs b/src/main.rs
index 5c2acc5..c120c1f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -210,7 +210,7 @@ impl SubscriptionListener for MySubscriptionListener {
 
 #[tokio::main]
 async fn main() -> Result<(), Box<dyn Error>> {
-    let mut subscription = Subscription::new(
+    let mut my_subscription = Subscription::new(
         SubscriptionMode::Merge,
         Some(vec![
             "item1".to_string(),
@@ -220,17 +220,19 @@ async fn main() -> Result<(), Box<dyn Error>> {
         Some(vec!["stock_name".to_string(), "last_price".to_string()]),
     )?;
 
-    subscription.add_listener(Box::new(MySubscriptionListener {}));
-    subscription.set_data_adapter(Some(String::from("QUOTE_ADAPTER")))?;
-    subscription.set_requested_snapshot(Some(Snapshot::Yes))?;
+    my_subscription.set_data_adapter(Some(String::from("QUOTE_ADAPTER")))?;
+    my_subscription.set_requested_snapshot(Some(Snapshot::Yes))?;
+    my_subscription.add_listener(Box::new(MySubscriptionListener {}));
 
-    let client = LightstreamerClient::new(
+    let mut client = LightstreamerClient::new(
         Some("http://push.lightstreamer.com/lightstreamer"),
         Some("DEMO"),
     )?;
 
-    println!("Subscription: {:?}", subscription);
+    client.subscribe(my_subscription);
     println!("Client: {:?}", client);
 
+    client.connect();
+
     Ok(())
 }