@@ -26,14 +26,24 @@ def delegate(name, request, params)
26
26
end
27
27
28
28
# Instantiate all server addons and store them in a hash for easy access after we have discovered the classes
29
- def finalize_registrations!
29
+ def finalize_registrations! ( stdout )
30
30
until @server_addon_classes . empty?
31
- addon = @server_addon_classes . shift . new
31
+ addon = @server_addon_classes . shift . new ( stdout )
32
32
@server_addons [ addon . name ] = addon
33
33
end
34
34
end
35
35
end
36
36
37
+ def initialize ( stdout )
38
+ @stdout = stdout
39
+ end
40
+
41
+ # Write a response back. Can be used for sending notifications to the editor
42
+ def write_response ( response )
43
+ json_response = response . to_json
44
+ @stdout . write ( "Content-Length: #{ json_response . length } \r \n \r \n #{ json_response } " )
45
+ end
46
+
37
47
def name
38
48
raise NotImplementedError , "Not implemented!"
39
49
end
@@ -97,11 +107,11 @@ def execute(request, params)
97
107
write_response ( resolve_route_info ( params ) )
98
108
when "server_addon/register"
99
109
require params [ :server_addon_path ]
100
- ServerAddon . finalize_registrations!
110
+ ServerAddon . finalize_registrations! ( @stdout )
101
111
when "server_addon/delegate"
102
112
server_addon_name = params . delete ( :server_addon_name )
103
113
request_name = params . delete ( :request_name )
104
- write_response ( ServerAddon . delegate ( server_addon_name , request_name , params ) )
114
+ ServerAddon . delegate ( server_addon_name , request_name , params )
105
115
end
106
116
rescue => e
107
117
write_response ( { error : e . full_message ( highlight : false ) } )
0 commit comments