Skip to content

Commit c7661b8

Browse files
committed
fix: away with flipflop and memory leaks, better http request handling and no more children.
1 parent bec36b1 commit c7661b8

12 files changed

Lines changed: 74 additions & 95 deletions

frontend/labmap2/.godot/editor/editor_layout.cfg

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
dock_3_selected_tab_idx=0
44
dock_4_selected_tab_idx=0
5-
dock_5_selected_tab_idx=0
5+
dock_5_selected_tab_idx=1
66
dock_floating={}
77
dock_bottom=[]
88
dock_closed=[]
@@ -17,8 +17,8 @@ dock_filesystem_v_split_offset=0
1717
dock_filesystem_display_mode=0
1818
dock_filesystem_file_sort=0
1919
dock_filesystem_file_list_display_mode=1
20-
dock_filesystem_selected_paths=PackedStringArray("res://paths/")
21-
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://")
20+
dock_filesystem_selected_paths=PackedStringArray("res://scripts/http_request_node.gd")
21+
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/")
2222
dock_3="Scene,Import"
2323
dock_4="FileSystem"
2424
dock_5="Inspector,Node,History"
@@ -27,15 +27,15 @@ dock_5="Inspector,Node,History"
2727

2828
open_scenes=PackedStringArray("res://scenes/floor_map.tscn")
2929
current_scene="res://scenes/floor_map.tscn"
30-
center_split_offset=-252
31-
selected_default_debugger_tab_idx=1
30+
center_split_offset=-288
31+
selected_default_debugger_tab_idx=4
3232
selected_main_editor_idx=2
33-
selected_bottom_panel_item=0
33+
selected_bottom_panel_item=1
3434

3535
[ScriptEditor]
3636

37-
open_scripts=["res://scripts/background_light.gd", "res://scenes/clock.gd", "res://scenes/http_get_lab_hours.gd", "res://name_dictionary.json"]
38-
selected_script="res://scenes/clock.gd"
37+
open_scripts=["res://scripts/background_light.gd", "res://scenes/clock.gd", "res://scenes/http_get_lab_hours.gd", "res://scripts/http_request_node.gd", "res://name_dictionary.json"]
38+
selected_script="res://scripts/http_request_node.gd"
3939
open_help=[]
4040
script_split_offset=70
4141
list_split_offset=0

frontend/labmap2/.godot/editor/filesystem_cache8

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ea4bc82a6ad023ab7ee23ee620429895
2-
::res://::1756953214
2+
::res://::1757542631
33
export_presets.cfg::TextFile::-1::1756840323::0::1::::<><>::
44
icon.svg::CompressedTexture2D::8019015828006172325::1729218193::1756852168::1::::<><>::
55
name_dictionary.json::JSON::-1::1756858929::0::1::::<><>::
@@ -13,14 +13,14 @@ table_sheet.png::CompressedTexture2D::921768295176594968::1733372692::1756852168
1313
waddles-stand-back.png::CompressedTexture2D::4205090806430381745::1731433279::1756852168::1::::<><>::
1414
waddles-stand-front.png::CompressedTexture2D::2259515878044405065::1731433279::1756852168::1::::<><>::
1515
wall_sheet.png::CompressedTexture2D::7034852701591905200::1733372300::1756852168::1::::<><>::
16-
::res://export/::1756947324
17-
Labmap2.144x144.png::CompressedTexture2D::3033371992561294965::1756871002::1756947324::1::::<><>::
18-
Labmap2.180x180.png::CompressedTexture2D::5448115414281155812::1756871002::1756947324::1::::<><>::
19-
Labmap2.512x512.png::CompressedTexture2D::3088098711088801647::1756871002::1756947324::1::::<><>::
20-
Labmap2.apple-touch-icon.png::CompressedTexture2D::8947455212634037835::1756871002::1756947324::1::::<><>::
21-
Labmap2.icon.png::CompressedTexture2D::6108776289350885466::1756871002::1756947324::1::::<><>::
22-
Labmap2.manifest.json::JSON::-1::1756871002::0::1::::<><>::
23-
Labmap2.png::CompressedTexture2D::2903267927140575369::1756871002::1756947324::1::::<><>::
16+
::res://export/::1757005065
17+
Labmap2.144x144.png::CompressedTexture2D::3033371992561294965::1756953568::1757005065::1::::<><>::
18+
Labmap2.180x180.png::CompressedTexture2D::5448115414281155812::1756953568::1757005065::1::::<><>::
19+
Labmap2.512x512.png::CompressedTexture2D::3088098711088801647::1756953568::1757005065::1::::<><>::
20+
Labmap2.apple-touch-icon.png::CompressedTexture2D::8947455212634037835::1756953568::1757005065::1::::<><>::
21+
Labmap2.icon.png::CompressedTexture2D::6108776289350885466::1756953568::1757005065::1::::<><>::
22+
Labmap2.manifest.json::JSON::-1::1756953568::0::1::::<><>::
23+
Labmap2.png::CompressedTexture2D::2903267927140575369::1756953568::1757005065::1::::<><>::
2424
::res://paths/::1756859171
2525
to_bandit.tres::Curve2D::3964835214106076797::1733372300::0::1::::<><>::
2626
to_bolt.tres::Curve2D::212375828273240441::1733372300::0::1::::<><>::
@@ -52,10 +52,10 @@ to_spud.tres::Curve2D::5178034277345821971::1733372300::0::1::::<><>::
5252
to_sunny.tres::Curve2D::1867299367943324528::1733372300::0::1::::<><>::
5353
to_tabitha.tres::Curve2D::3352327448385657489::1733372300::0::1::::<><>::
5454
to_Windows.tres::Curve2D::396053016331995211::1733372300::0::1::::<><>::
55-
::res://scenes/::1756949974
55+
::res://scenes/::1757005630
5656
clock.gd::GDScript::-1::1756948383::0::1::::<>RichTextLabel<>::
57-
floor_map.tscn::PackedScene::7631678058768377369::1756949974::0::1::::<><>::res://scripts/floor_map.gd<>uid://cqt0vr61f2bxi::::res://art/floor_sheet.png<>uid://nernh4erw8au::::res://art/table_sheet.png<>uid://c7hy84ujceanw::::res://art/wall_sheet.png<>res://scripts/devices.gd<>res://scripts/logger.gd<>uid://r8t7n7pqbnov::::res://paths/to_misty.tres<>uid://brs2mnfeqqby3::::res://scenes/log_display.tscn<>res://scripts/http_request_node.gd<>uid://dtlrn0pyxevuv::::res://art/background.png<>res://scripts/background_light.gd<>uid://cuaj5txrl38kg::::res://art/background2.png<>res://scenes/clock.gd<>res://scenes/http_get_lab_hours.gd
58-
http_get_lab_hours.gd::GDScript::-1::1756949974::0::1::::<>HTTPRequest<>::
57+
floor_map.tscn::PackedScene::7631678058768377369::1757005246::0::1::::<><>::res://scripts/floor_map.gd<>uid://cqt0vr61f2bxi::::res://art/floor_sheet.png<>uid://nernh4erw8au::::res://art/table_sheet.png<>uid://c7hy84ujceanw::::res://art/wall_sheet.png<>res://scripts/devices.gd<>res://scripts/logger.gd<>uid://r8t7n7pqbnov::::res://paths/to_misty.tres<>uid://brs2mnfeqqby3::::res://scenes/log_display.tscn<>res://scripts/http_request_node.gd<>uid://dtlrn0pyxevuv::::res://art/background.png<>res://scripts/background_light.gd<>uid://cuaj5txrl38kg::::res://art/background2.png<>res://scenes/clock.gd<>res://scenes/http_get_lab_hours.gd
58+
http_get_lab_hours.gd::GDScript::-1::1757005630::0::1::::<>HTTPRequest<>::
5959
log_display.tscn::PackedScene::3618451304175608720::1733440536::0::1::::<><>::res://scripts/log_display.gd
6060
node.gd::GDScript::-1::1733372300::0::1::::<>Node<>::
6161
waddles.tscn::PackedScene::1364462654114510386::1733440536::0::1::::<><>::res://scripts/waddles.gd<>uid://7gr5qh15e2r2::::res://art/waddles-stand-front.png<>uid://b058h4jq37mpd::::res://art/waddles-stand-back.png<>res://scripts/waddles_sprite.gd

frontend/labmap2/.godot/editor/floor_map.tscn-editstate-b8367499dc2d207b9c9e1350390b266a.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,4 @@ Anim={
175175
"zfar": 4000.01,
176176
"znear": 0.05
177177
}
178-
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Root/Clock/HttpGetLabHours")])
178+
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Root/Devices/HTTPRequestNode")])

frontend/labmap2/.godot/editor/floor_map.tscn-folding-b8367499dc2d207b9c9e1350390b266a.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
node_unfolds=[NodePath("."), PackedStringArray("Ordering", "Transform"), NodePath("Floor"), PackedStringArray("Ordering"), NodePath("Walls"), PackedStringArray("Ordering"), NodePath("Tables"), PackedStringArray("Ordering"), NodePath("Devices"), PackedStringArray("Ordering", "Navigation"), NodePath("Viewport"), PackedStringArray("Transform"), NodePath("Debug_Path_Node"), PackedStringArray("Ordering", "curve"), NodePath("LogDisplay"), PackedStringArray("Ordering", "Layout"), NodePath("BackgroundLight"), PackedStringArray("Ordering", "Transform"), NodePath("BackgroundDark"), PackedStringArray("Ordering", "Transform"), NodePath("Clock"), PackedStringArray("BiDi", "Threading", "Text Selection", "Displayed Text", "Markup")]
44
resource_unfolds=["res://scenes/floor_map.tscn::TileSet_ssnwc", PackedStringArray("Resource"), "res://scenes/floor_map.tscn::TileSet_lrubo", PackedStringArray("Resource")]
5-
nodes_folded=[]
5+
nodes_folded=[NodePath("Clock")]

frontend/labmap2/.godot/editor/project_metadata.cfg

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,22 @@ use_advanced_connections=false
66
[recent_files]
77

88
scenes=["res://scenes/floor_map.tscn"]
9-
scripts=["res://scripts/background_light.gd", "res://scenes/http_get_lab_hours.gd", "res://scenes/clock.gd", "res://scripts/devices.gd", "res://name_dictionary.json", "res://scripts/http_request_node.gd", "res://scripts/floor_map.gd"]
9+
scripts=["res://scripts/http_request_node.gd", "res://scripts/background_light.gd", "res://scenes/http_get_lab_hours.gd", "res://scenes/clock.gd", "res://scripts/devices.gd", "res://name_dictionary.json", "res://scripts/floor_map.gd"]
1010

1111
[export_options]
1212

1313
default_filename="Labmap2"
1414

1515
[dialog_bounds]
1616

17-
export=Rect2(222, 481, 1144, 583)
17+
export=Rect2(383, 311, 1144, 583)
1818
create_new_node=Rect2(2750, 370, 900, 700)
19+
project_settings=Rect2(360, 190, 1200, 700)
1920

2021
[script_setup]
2122

2223
last_selected_language="GDScript"
24+
25+
[project_settings]
26+
27+
advanced_mode=false

frontend/labmap2/.godot/editor/script_editor_cache.cfg

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ state={
1717
state={
1818
"bookmarks": PackedInt32Array(),
1919
"breakpoints": PackedInt32Array(),
20-
"column": 2,
20+
"column": 0,
2121
"folded_lines": Array[int]([]),
2222
"h_scroll_position": 0,
23-
"row": 41,
24-
"scroll_position": 9.0,
23+
"row": 6,
24+
"scroll_position": 0.0,
2525
"selection": false,
2626
"syntax_highlighter": "GDScript"
2727
}
@@ -63,7 +63,7 @@ state={
6363
"folded_lines": Array[int]([]),
6464
"h_scroll_position": 0,
6565
"row": 58,
66-
"scroll_position": 23.0,
66+
"scroll_position": 37.0,
6767
"selection": false,
6868
"syntax_highlighter": "GDScript"
6969
}
@@ -73,11 +73,11 @@ state={
7373
state={
7474
"bookmarks": PackedInt32Array(),
7575
"breakpoints": PackedInt32Array(),
76-
"column": 58,
76+
"column": 0,
7777
"folded_lines": Array[int]([]),
7878
"h_scroll_position": 0,
79-
"row": 47,
80-
"scroll_position": 17.0,
79+
"row": 3,
80+
"scroll_position": 0.0,
8181
"selection": false,
8282
"syntax_highlighter": "GDScript"
8383
}

frontend/labmap2/.godot/exported/133200997/file_cache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ res://paths/to_spud.tres::067a0e9add840e14f969d19954a35f03::1733372300::res://.g
1717
res://paths/to_sunny.tres::f6d3f402cb568b27af46453205310c53::1733372300::res://.godot/exported/133200997/export-cada93e8afac84795deb90a935673d7d-to_sunny.res
1818
res://paths/to_tabitha.tres::0b3a3dc8c07e2153d5e11ad56e943d11::1733372300::res://.godot/exported/133200997/export-79e0c3f09a14c9cecb31cc45b6b989ba-to_tabitha.res
1919
res://paths/to_Windows.tres::58f8c3d335e2aef7783aa87089c498c8::1733372300::res://.godot/exported/133200997/export-60f8b164b2282d0eac4c6689da89a0a6-to_Windows.res
20-
res://scenes/floor_map.tscn::8776a0aaf9358ac9fa03e82bb4f2515e::1756953222::res://.godot/exported/133200997/export-b8367499dc2d207b9c9e1350390b266a-floor_map.scn
20+
res://scenes/floor_map.tscn::8776a0aaf9358ac9fa03e82bb4f2515e::1757544468::res://.godot/exported/133200997/export-b8367499dc2d207b9c9e1350390b266a-floor_map.scn
2121
res://scenes/log_display.tscn::7941dd644f902ff56d0bdbaee4427158::1733440536::res://.godot/exported/133200997/export-51d5c27b22ee0ca0bf6fcd02b835986e-log_display.scn
2222
res://scenes/waddles.tscn::a5ea82a6ba2d83c1f03d72b1be011ecd::1733440536::res://.godot/exported/133200997/export-4611cce7e97e351a3795cc2d42161d58-waddles.scn
2323
res://paths/to_cocoa.tres::3eb1dbfbfc7682974f5a3e0c83b2b3e4::1733372300::res://.godot/exported/133200997/export-6b990d4e482b8a77e68f06524e755b33-to_cocoa.res

frontend/labmap2/project.godot

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ HttpRequestNode="*res://scripts/http_request_node.gd"
2323
Logger="*res://scripts/logger.gd"
2424
Devices="res://scripts/devices.gd"
2525

26+
[debug]
27+
28+
settings/stdout/verbose_stdout=true
29+
2630
[display]
2731

2832
window/size/viewport_width=1920

frontend/labmap2/scripts/http_request_node.gd

Lines changed: 31 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -3,91 +3,61 @@ This script manages the requests and data coming from the data_generator_server.
33
It sends two requests to the endpoints of the data generator, one receiving processed
44
data from Prometheus and another receiving data from the user-controlled API.
55
They are result_from_generate and result_from_get respectively.
6-
In order to get these seperate requests, meta data is used to organize the results.
7-
Some really bad code is used to query the http_request children of their data, but
8-
if you can overlook that, it works fine.
96
'''
107

118
extends HTTPRequest
129

10+
@onready var http_generate := HTTPRequest.new()
11+
@onready var http_get := HTTPRequest.new()
12+
1313
@onready var result_from_generate: Dictionary = {}
1414
@onready var result_from_get: Dictionary = {}
1515

16-
# This was part of a dynamic endpoint structure using an .env
17-
# We ended up hard coding the endpoints instead.
18-
#var GENERATE;
19-
#var GET;
20-
var env_vars = {};
21-
2216
const GENERATE = "https://labmap.ocf.berkeley.edu/api/generate"
2317
const GET = "https://labmap.ocf.berkeley.edu/api/get"
2418

2519
signal result_ready(endpoint: String)
2620

27-
var flipflop = 1 # don't ask
28-
2921
func _ready():
30-
# load_env("res://.env")
31-
# GENERATE = env_vars["GENERATE_URI"]
32-
# GET = env_vars["GET_URI"]
33-
_send_http_request(GENERATE)
34-
_send_http_request(GET)
22+
add_child(http_generate)
23+
add_child(http_get)
24+
25+
http_generate.request_completed.connect(_on_generate_completed)
26+
http_get.request_completed.connect(_on_get_completed)
27+
28+
_send_http_request(http_generate, GENERATE)
29+
_send_http_request(http_get, GET)
3530

36-
func _send_http_request(url: String) -> void:
37-
var http_request = HTTPRequest.new()
38-
add_child(http_request)
31+
func _send_http_request(http_request: HTTPRequest, url: String) -> void:
3932
var headers = [
4033
"Accept: application/json",
4134
"Accept-Encoding: identity"
4235
]
43-
http_request.set_meta("endpoint", url) # Store the endpoint as metadata
44-
http_request.request_completed.connect(self._http_request_completed)
45-
46-
var error = http_request.request(url,headers) # Send the request
36+
var error = http_request.request(url, headers)
4737
if error != OK:
4838
Logger.log("An error occurred in the HTTP request.", "Error", "DATA_GENERATOR")
4939

5040
# Called when the HTTP request is completed.
51-
func _http_request_completed(result, response_code, _headers, body):
52-
var endpoint: String
53-
# this is some awful code, god forgive me
54-
if flipflop == 1:
55-
endpoint = get_child(2).get_meta("endpoint")
56-
elif flipflop == -1:
57-
endpoint = get_child(1).get_meta("endpoint")
58-
flipflop = flipflop * -1
59-
60-
if result != HTTPRequest.RESULT_SUCCESS:
61-
Logger.log("Error connecting to data generator server", "Error", "DATA_GENERATOR")
62-
return
63-
if response_code != 200:
64-
Logger.log("Error: Server returned an unexpected status code %d" % response_code, "Error", "DATA_GENERATOR")
41+
func _on_generate_completed(result, response_code, _headers, body):
42+
if result != HTTPRequest.RESULT_SUCCESS or response_code != 200:
43+
Logger.log("Error in generate request", "Error", "DATA_GENERATOR")
6544
return
6645

67-
var parsedResult = JSON.parse_string(body.get_string_from_utf8())
68-
if parsedResult is Dictionary:
69-
if endpoint == GENERATE:
70-
result_from_generate = parsedResult
71-
elif endpoint == GET:
72-
result_from_get = parsedResult
73-
emit_signal("result_ready", endpoint)
46+
var parsed = JSON.parse_string(body.get_string_from_utf8())
47+
if parsed is Dictionary:
48+
result_from_generate = parsed
49+
emit_signal("result_ready", GENERATE)
7450
else:
75-
#print("Error Reading File")
76-
Logger.log("Error reading data generator response", "Error", "DATA_GENERATOR")
51+
Logger.log("Error parsing generate response", "Error", "DATA_GENERATOR")
7752

78-
func _on_update_timer_timeout() -> void:
79-
_ready()
80-
81-
func load_env(path: String):
82-
if not FileAccess.file_exists(path):
83-
push_warning(".env file not found at " + path)
53+
func _on_get_completed(result, response_code, _headers, body):
54+
if result != HTTPRequest.RESULT_SUCCESS or response_code != 200:
55+
Logger.log("Error in get request", "Error", "DATA_GENERATOR")
8456
return
85-
86-
var file = FileAccess.open(path, FileAccess.READ)
87-
while not file.eof_reached():
88-
var line = file.get_line().strip_edges()
89-
if line == "" or line.begins_with("#"): # skip comments/empty
90-
continue
91-
var parts = line.split("=", true, 1)
92-
if parts.size() == 2:
93-
env_vars[parts[0].strip_edges()] = parts[1].strip_edges()
57+
58+
var parsed = JSON.parse_string(body.get_string_from_utf8())
59+
if parsed is Dictionary:
60+
result_from_get = parsed
61+
emit_signal("result_ready", GET)
62+
else:
63+
Logger.log("Error parsing get response", "Error", "DATA_GENERATOR")

frontend/labmap2_server/static/Labmap2.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898

9999
<script src="Labmap2.js"></script>
100100
<script>
101-
const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"ensureCrossOriginIsolationHeaders":true,"executable":"Labmap2","experimentalVK":false,"fileSizes":{"Labmap2.pck":270352,"Labmap2.wasm":35376909},"focusCanvas":true,"gdextensionLibs":[],"serviceWorker":"Labmap2.service.worker.js"};
101+
const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"ensureCrossOriginIsolationHeaders":true,"executable":"Labmap2","experimentalVK":false,"fileSizes":{"Labmap2.pck":269568,"Labmap2.wasm":35376909},"focusCanvas":true,"gdextensionLibs":[],"serviceWorker":"Labmap2.service.worker.js"};
102102
const GODOT_THREADS_ENABLED = false;
103103
const engine = new Engine(GODOT_CONFIG);
104104

0 commit comments

Comments
 (0)