ensime_bridge 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ensime_bridge.rb +36 -27
- metadata +1 -1
data/lib/ensime_bridge.rb
CHANGED
@@ -32,8 +32,8 @@ class EnsimeBridge
|
|
32
32
|
end
|
33
33
|
@ensime = Ensime.new(path)
|
34
34
|
@queue = Queue.new
|
35
|
-
@
|
36
|
-
|
35
|
+
Dir.mkdir @cache if not File.exists?(@cache)
|
36
|
+
@logger = Logger.new(@cache+"bridge.log", 2, 100000)
|
37
37
|
end
|
38
38
|
def remote_stop
|
39
39
|
if is_running?
|
@@ -86,41 +86,37 @@ class EnsimeBridge
|
|
86
86
|
@logger.info result.gsub("\n", "")
|
87
87
|
return true
|
88
88
|
end
|
89
|
-
def
|
90
|
-
return if @no_ensime_config
|
91
|
-
@ensime.quiet = quiet
|
92
|
-
@ensime.run
|
93
|
-
if is_running?
|
94
|
-
@logger.info "bridge is already running"
|
95
|
-
return
|
96
|
-
end
|
97
|
-
wait_for_ensime
|
98
|
-
@logger.info "ensime is ready"
|
89
|
+
def run_ensime_connection
|
99
90
|
Thread.new do
|
100
91
|
EventMachine.run do
|
101
92
|
connect_to_ensime
|
102
93
|
end
|
103
94
|
end
|
95
|
+
end
|
96
|
+
def send_command command
|
97
|
+
while true
|
98
|
+
result = nil
|
99
|
+
@logger.info "command: #{command}"
|
100
|
+
if command.start_with? "{"
|
101
|
+
@logger.info "direct send #{command}"
|
102
|
+
@socket.send command
|
103
|
+
else
|
104
|
+
result = instance_eval command
|
105
|
+
end
|
106
|
+
if command == "unqueue"
|
107
|
+
break if not send_result result
|
108
|
+
else
|
109
|
+
break
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
def run_forwarder
|
104
114
|
server = TCPServer.new "localhost", 0
|
105
115
|
File.write(@bridge_file, server.addr[1])
|
106
116
|
while @client = server.accept
|
107
117
|
begin
|
108
118
|
command = @client.readline.chomp
|
109
|
-
|
110
|
-
result = nil
|
111
|
-
@logger.info "command: #{command}"
|
112
|
-
if command.start_with? "{"
|
113
|
-
@logger.info "direct send #{command}"
|
114
|
-
@socket.send command
|
115
|
-
else
|
116
|
-
result = instance_eval command
|
117
|
-
end
|
118
|
-
if command == "unqueue"
|
119
|
-
break if not send_result result
|
120
|
-
else
|
121
|
-
break
|
122
|
-
end
|
123
|
-
end
|
119
|
+
send_command command
|
124
120
|
@client.close
|
125
121
|
rescue => e
|
126
122
|
@logger.error e
|
@@ -128,5 +124,18 @@ class EnsimeBridge
|
|
128
124
|
end
|
129
125
|
end
|
130
126
|
end
|
127
|
+
def run
|
128
|
+
return if @no_ensime_config
|
129
|
+
@ensime.quiet = quiet
|
130
|
+
@ensime.run
|
131
|
+
if is_running?
|
132
|
+
@logger.info "bridge is already running"
|
133
|
+
return
|
134
|
+
end
|
135
|
+
wait_for_ensime
|
136
|
+
@logger.info "ensime is ready"
|
137
|
+
run_ensime_connection
|
138
|
+
run_forwarder
|
139
|
+
end
|
131
140
|
end
|
132
141
|
EnsimeBridge.new(ARGV.size == 0 ? ".ensime" : ARGV[0]).run if __FILE__ == $0
|