From f234dc1564d35a4114a1c752f13b39d8db030c6f Mon Sep 17 00:00:00 2001
From: afonya <adamhir@freemail.hu>
Date: Wed, 18 Jun 2025 18:00:46 +0200
Subject: [PATCH] added a way to create a network connection

---
 docs/docs/enviroment.md                       |   1 +
 .../version-1.0.0/enviroment.md               |   1 +
 extension/astrolang-extension-1.0.2.vsix      | Bin 0 -> 19002 bytes
 extension/index.js                            |   1 +
 extension/package.json                        |   2 +-
 src/enviroment.rs                             |  42 +++++++++++++++++-
 src/main.rs                                   |   2 +-
 test.asl                                      |  19 ++++----
 8 files changed, 53 insertions(+), 15 deletions(-)
 create mode 100644 extension/astrolang-extension-1.0.2.vsix

diff --git a/docs/docs/enviroment.md b/docs/docs/enviroment.md
index 54e6b31..893e3fc 100644
--- a/docs/docs/enviroment.md
+++ b/docs/docs/enviroment.md
@@ -119,6 +119,7 @@ Példa: `kábel.halgass`
 |Név|Leírás|Használat|Példa|
 |---|---|---|---|
 |halgass|Hallgat egy porton.|`halgass(host: string, port: number): halgató`|`halgass(szaft"0.0.0.0"szaft,1010)`|
+|kapcsolódj|Rákapcsolódik egy célra.|`kapcsolódj(target: string): kapcsolat`|`kapcsolódj(szaft"example.com:80"szaft)`|
 
 :::warning
 
diff --git a/docs/versioned_docs/version-1.0.0/enviroment.md b/docs/versioned_docs/version-1.0.0/enviroment.md
index 54e6b31..893e3fc 100644
--- a/docs/versioned_docs/version-1.0.0/enviroment.md
+++ b/docs/versioned_docs/version-1.0.0/enviroment.md
@@ -119,6 +119,7 @@ Példa: `kábel.halgass`
 |Név|Leírás|Használat|Példa|
 |---|---|---|---|
 |halgass|Hallgat egy porton.|`halgass(host: string, port: number): halgató`|`halgass(szaft"0.0.0.0"szaft,1010)`|
+|kapcsolódj|Rákapcsolódik egy célra.|`kapcsolódj(target: string): kapcsolat`|`kapcsolódj(szaft"example.com:80"szaft)`|
 
 :::warning
 
diff --git a/extension/astrolang-extension-1.0.2.vsix b/extension/astrolang-extension-1.0.2.vsix
new file mode 100644
index 0000000000000000000000000000000000000000..0651d87085c128a8db11c2728c4cad420dfe251b
GIT binary patch
literal 19002
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
R$_oQG5Pk<HN?msl4*(B2!s!42

literal 0
HcmV?d00001

diff --git a/extension/index.js b/extension/index.js
index e9adb88..c07fe37 100644
--- a/extension/index.js
+++ b/extension/index.js
@@ -66,6 +66,7 @@ vscode.languages.registerCompletionItemProvider('astrolang', {
             "vége",
 
             "halgass",
+            "kapcsolódj",
             "kérés",
             "írj",
             "olvass",
diff --git a/extension/package.json b/extension/package.json
index a6cb29a..36ff78e 100644
--- a/extension/package.json
+++ b/extension/package.json
@@ -2,7 +2,7 @@
   "name": "astrolang-extension",
   "displayName": "Astro Lang",
   "icon": "asl.png",
-  "version": "1.0.1",
+  "version": "1.0.2",
   "description": "The extension for Astro Lang",
   "license": "MIT",
   "author": "Afonya",
diff --git a/src/enviroment.rs b/src/enviroment.rs
index 40cfb12..4a99d64 100644
--- a/src/enviroment.rs
+++ b/src/enviroment.rs
@@ -436,12 +436,12 @@ fn kabel_irj(machine: &mut Machine, op: &DecompiledOperation, args: Vec<VMMemory
     if stream.is_none() {
         error(String::from("Stream is not a TcpStream"), machine, op);
     }
-    let mut listener = stream.unwrap();
+    let mut stream = stream.unwrap();
     let write = match &args[1] {
         VMMemory::String(s) => s.value.clone(),
         _ => String::new()
     };
-    match listener.write_all(write.as_bytes()) {
+    match stream.write_all(write.as_bytes()) {
         Ok(_) => {},
         Err(e) => {
             error(format!("Failed to write to stream: {}", e), machine, op);
@@ -540,6 +540,40 @@ fn kabel_keres(machine: &mut Machine, op: &DecompiledOperation, args: Vec<VMMemo
     }
     return VMMemory::Null(VMMemoryNull { variable_id: 0 });
 }
+fn kabel_kapcsolodj(machine: &mut Machine, op: &DecompiledOperation, args: Vec<VMMemory>) -> VMMemory {
+    arg_expect(&args, 0, "string", machine, op);
+    let str = match &args[0] {
+        VMMemory::String(s) => s.value.clone(),
+        _ => String::new()
+    };
+    let stream = match TcpStream::connect(&str) {
+        Ok(s) => s,
+        Err(err) => {
+            error(format!("Failed to connect to {}: {}", str, err), machine, op);
+            return VMMemory::Null(VMMemoryNull { variable_id: 0 });
+        }
+    };
+    machine.storage.push(Box::new(stream));
+    let ret_table: Vec<TableValue> = vec![
+        TableValue {
+            key: VMMemory::String(VMMemoryString { value: String::from("olvass"), variable_id: 0 }),
+            value: VMMemory::NativeFunction(VMMemoryNativeFunction { func: kabel_olvass, variable_id: 0 }),
+        },
+        TableValue {
+            key: VMMemory::String(VMMemoryString { value: String::from("írj"), variable_id: 0 }),
+            value: VMMemory::NativeFunction(VMMemoryNativeFunction { func: kabel_irj, variable_id: 0 }),
+        },
+        TableValue {
+            key: VMMemory::String(VMMemoryString { value: String::from("zár"), variable_id: 0 }),
+            value: VMMemory::NativeFunction(VMMemoryNativeFunction { func: kabel_zar, variable_id: 0 }),
+        },
+        TableValue {
+            key: VMMemory::String(VMMemoryString { value: String::from("id"), variable_id: 0 }),
+            value: VMMemory::Number(VMMemoryNumber { value: (machine.storage.len()-1) as f64, variable_id: 0 }),
+        }
+    ];
+    return VMMemory::Table(VMMemoryTable { values: ret_table, variable_id: 0 });
+}
 fn kabel_halgass(machine: &mut Machine, op: &DecompiledOperation, args: Vec<VMMemory>) -> VMMemory {
     arg_expect(&args, 0, "string", machine, op);
     arg_expect(&args, 1, "number", machine, op);
@@ -1161,6 +1195,10 @@ pub fn generate() -> HashMap<String, VMMemory> {
         TableValue {
             key: VMMemory::String(VMMemoryString { value: String::from("halgass"), variable_id: 0 }),
             value: VMMemory::NativeFunction(VMMemoryNativeFunction { func: kabel_halgass, variable_id: 0 }),
+        },
+        TableValue {
+            key: VMMemory::String(VMMemoryString { value: String::from("kapcsolódj"), variable_id: 0 }),
+            value: VMMemory::NativeFunction(VMMemoryNativeFunction { func: kabel_kapcsolodj, variable_id: 0 }),
         }
     ];
     mem.insert(String::from("kábel"), VMMemory::Table(VMMemoryTable { values: kabel, variable_id: 0 }));
diff --git a/src/main.rs b/src/main.rs
index 3de6c12..291e975 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -10,7 +10,7 @@ mod virtualmachine;
 mod errors;
 mod decompiler;
 
-const CLIVER: [u8; 3] = [1,0,0];
+const CLIVER: [u8; 3] = [1,0,1];
 
 #[derive(Debug, Clone)]
 struct Context {
diff --git a/test.asl b/test.asl
index 5b5aa9a..c56098e 100644
--- a/test.asl
+++ b/test.asl
@@ -1,11 +1,8 @@
-lőcsve test() {
-    lőcsve toast() {
-        ugass(2)
-    }
-    toast()
-    ugass(1)
-}
-gethelj k = krumpli.létrehoz(test)
-ugass(krumpli.státusz(k))
-krumpli.folytat(k)
-ugass(krumpli.státusz(k))
\ No newline at end of file
+gethelj con = kábel.kapcsolódj(szaft"example.com:80"szaft)
+con.írj(con, szaft"GET / HTTP/1.1
+User-Agent: Astro Lang
+Host: example.com
+
+"szaft)
+ugass(con.olvass(con, 5120))
+con.zár(con)
\ No newline at end of file