projects
/
riece
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
400afed
)
* server.rb: Connect $stdout and $stderr to StringIO objects.
author
Daiki Ueno
<ueno@unixuser.org>
Thu, 11 Aug 2005 13:08:51 +0000
(13:08 +0000)
committer
Daiki Ueno
<ueno@unixuser.org>
Thu, 11 Aug 2005 13:08:51 +0000
(13:08 +0000)
lisp/ChangeLog
patch
|
blob
|
history
lisp/server.rb
patch
|
blob
|
history
diff --git
a/lisp/ChangeLog
b/lisp/ChangeLog
index
859bcb3
..
0d94b7b
100644
(file)
--- a/
lisp/ChangeLog
+++ b/
lisp/ChangeLog
@@
-1,5
+1,7
@@
2005-08-11 Daiki Ueno <ueno@unixuser.org>
2005-08-11 Daiki Ueno <ueno@unixuser.org>
+ * server.rb: Connect $stdout and $stderr to StringIO objects.
+
* riece-async.el: User riece-ruby (partially).
* riece-eval-ruby.el (riece-eval-ruby-prefix-regexp): New user option.
* riece-async.el: User riece-ruby (partially).
* riece-eval-ruby.el (riece-eval-ruby-prefix-regexp): New user option.
diff --git
a/lisp/server.rb
b/lisp/server.rb
index
903e933
..
2619dcf
100644
(file)
--- a/
lisp/server.rb
+++ b/
lisp/server.rb
@@
-1,16
+1,26
@@
# A simple IPC server executing Ruby programs.
require 'thread'
# A simple IPC server executing Ruby programs.
require 'thread'
+require 'stringio'
class Server
module B
def output(s)
class Server
module B
def output(s)
- puts("# output #{Thread.current[:rubyserv_name]} #{s}\r\n")
+
@out.
puts("# output #{Thread.current[:rubyserv_name]} #{s}\r\n")
end
module_function :output
end
def initialize
end
module_function :output
end
def initialize
+ @out = $stdout
+ @err = $stderr
+ $stdout = StringIO.new
+ $stderr = StringIO.new
+ out, err = @out, @err
+ B.module_eval do
+ @out, @err = out, err
+ end
+
@buf = ''
@que = Queue.new
@thr = Hash.new
@buf = ''
@que = Queue.new
@thr = Hash.new
@@
-30,25
+40,25
@@
class Server
self.send(d, c, r)
end
else
self.send(d, c, r)
end
else
- puts("ERR 103 Unknown command\r\n")
+
@out.
puts("ERR 103 Unknown command\r\n")
end
end
end
def dispatch_cancel(c, r)
end
end
end
def dispatch_cancel(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_bye(c, r)
end
def dispatch_bye(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_auth(c, r)
end
def dispatch_auth(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_reset(c, r)
end
def dispatch_reset(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_end(c, r)
end
def dispatch_end(c, r)
@@
-56,11
+66,11
@@
class Server
end
def dispatch_help(c, r)
end
def dispatch_help(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_quit(c, r)
end
def dispatch_quit(c, r)
- puts("ERR 100 Not implemented\r\n")
+
@out.
puts("ERR 100 Not implemented\r\n")
end
def dispatch_eval(c, r)
end
def dispatch_eval(c, r)
@@
-72,8
+82,8
@@
class Server
end
@thr[name] = Thread.current
end
end
@thr[name] = Thread.current
end
- puts("S name #{name}\r\n")
- puts("OK\r\n")
+
@out.
puts("S name #{name}\r\n")
+
@out.
puts("OK\r\n")
Thread.current[:rubyserv_name] = name
begin
Thread.current[:rubyserv_error] = false
Thread.current[:rubyserv_name] = name
begin
Thread.current[:rubyserv_error] = false
@@
-82,38
+92,38
@@
class Server
Thread.current[:rubyserv_error] = true
Thread.current[:rubyserv_response] = e.to_s.sub(/\A.*?\n/, '')
end
Thread.current[:rubyserv_error] = true
Thread.current[:rubyserv_response] = e.to_s.sub(/\A.*?\n/, '')
end
- puts("# exit #{name}\r\n")
+
@out.
puts("# exit #{name}\r\n")
end
def dispatch_poll(c, r)
thr = @thr[r]
if !thr
end
def dispatch_poll(c, r)
thr = @thr[r]
if !thr
- puts("ERR 105 Parameter error: no such name \"#{r}\"\r\n")
+
@out.
puts("ERR 105 Parameter error: no such name \"#{r}\"\r\n")
elsif thr.alive?
elsif thr.alive?
- puts("S running #{r}\r\n")
- puts("OK\r\n")
+
@out.
puts("S running #{r}\r\n")
+
@out.
puts("OK\r\n")
else
if thr[:rubyserv_error]
else
if thr[:rubyserv_error]
- puts("S exited #{r}\r\n")
+
@out.
puts("S exited #{r}\r\n")
else
else
- puts("S finished #{r}\r\n")
+
@out.
puts("S finished #{r}\r\n")
end
if d = thr[:rubyserv_response]
send_data(d.to_s)
end
end
if d = thr[:rubyserv_response]
send_data(d.to_s)
end
- puts("OK\r\n")
+
@out.
puts("OK\r\n")
end
end
def dispatch_exit(c, r)
thr = @thr[r]
if !thr
end
end
def dispatch_exit(c, r)
thr = @thr[r]
if !thr
- puts("ERR 105 Parameter error: no such name \"#{r}\"\r\n")
+
@out.
puts("ERR 105 Parameter error: no such name \"#{r}\"\r\n")
return
end
thr.kill if thr.alive?
@thr.delete(r)
return
end
thr.kill if thr.alive?
@thr.delete(r)
- puts("OK\r\n")
+
@out.
puts("OK\r\n")
end
def escape(s)
end
def escape(s)
@@
-128,7
+138,7
@@
class Server
d = escape(d)
begin
len = [d.length, 998].min # 998 = 1000 - "D "
d = escape(d)
begin
len = [d.length, 998].min # 998 = 1000 - "D "
- puts("D #{d[0 ... len]}\r\n")
+
@out.
puts("D #{d[0 ... len]}\r\n")
d = d[len .. -1]
end until d.empty?
end
d = d[len .. -1]
end until d.empty?
end