hprose 1.4.3 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/examples/client.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'hprose'
3
3
 
4
- client = HproseClient.new('http://localhost:3000/')
4
+ client = HproseClient.new('http://127.0.0.1:3000/')
5
5
  def error(name, e)
6
6
  puts name
7
7
  puts e
@@ -12,7 +12,7 @@ math = client.use_service(nil, :math)
12
12
 
13
13
  client.hello('World') { |result|
14
14
  puts result
15
- }
15
+ }.join
16
16
 
17
17
  math.add(1, 2) { |result|
18
18
  puts result
data/examples/server.rb CHANGED
@@ -14,7 +14,7 @@ class User
14
14
  end
15
15
 
16
16
  def getUser()
17
- return User.new()
17
+ return User.new
18
18
  end
19
19
 
20
20
 
@@ -33,7 +33,7 @@ end
33
33
 
34
34
  HproseClassManager.register(User, "User")
35
35
 
36
- app = HproseHttpService.new()
36
+ app = HproseHttpService.new
37
37
 
38
38
  app.add(:hello)
39
39
  app.add(:sum) { |*num|
@@ -8,4 +8,24 @@ def error(name, e)
8
8
  end
9
9
  client.onerror = :error
10
10
 
11
- puts(client.hello('World'))
11
+ math = client.use_service(nil, :math)
12
+
13
+ client.hello('World') { |result|
14
+ puts result
15
+ }.join
16
+
17
+ math.add(1, 2) { |result|
18
+ puts result
19
+ }.join
20
+
21
+ math.sub(1, 2) { |result|
22
+ puts result
23
+ }.join
24
+
25
+ puts client.sum(1,3,4,5,6,7)
26
+ user = client.getUser()
27
+ puts user.name
28
+ puts user.age
29
+
30
+ puts client.hi('hprose')
31
+ puts client.push([user, user, user])
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'rack'
3
+ require 'hprose'
4
+
5
+ def hello(name)
6
+ return 'hello ' << name << '!'
7
+ end
8
+
9
+ class User
10
+ def initialize()
11
+ @name = "Tom"
12
+ @age = 28
13
+ end
14
+ end
15
+
16
+ def getUser()
17
+ return User.new()
18
+ end
19
+
20
+
21
+ class MyService
22
+ def add(a, b)
23
+ return a + b
24
+ end
25
+ def sub(a, b)
26
+ return a - b
27
+ end
28
+ end
29
+
30
+ def mf(name, args)
31
+ return name << " => " << HproseFormatter.serialize(args)
32
+ end
33
+
34
+ HproseClassManager.register(User, "User")
35
+
36
+ server = HproseTcpServer.new
37
+ server.port = 4321
38
+
39
+ server.add(:hello)
40
+ server.add(:sum) { |*num|
41
+ result = 0
42
+ num.each { |item| result += item }
43
+ result
44
+ }
45
+ server.add(:getUser)
46
+ server.add_missing_function(:mf)
47
+ server.add(MyService.new, :math)
48
+ server.debug = true
49
+ server.start
data/lib/hprose/client.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # #
15
15
  # hprose client for ruby #
16
16
  # #
17
- # LastModified: Mar 10, 2014 #
17
+ # LastModified: Mar 11, 2014 #
18
18
  # Author: Ma Bingyao <andot@hprose.com> #
19
19
  # #
20
20
  ############################################################
@@ -119,7 +119,7 @@ module Hprose
119
119
  end
120
120
  def do_input(data, args, resultMode)
121
121
  data = @filter.input_filter(data)
122
- raise Exception.exception("Wrong Response: \r\n#{data}") if data[data.size - 1].ord != TagEnd
122
+ raise Exception.exception("Wrong Response: \r\n#{data}") if data.nil? or data.empty? or data[data.size - 1].ord != TagEnd
123
123
  return data if resultMode == RawWithEndTag
124
124
  return data.chop! if resultMode == Raw
125
125
  stream = StringIO.new(data, 'rb')
@@ -14,14 +14,13 @@
14
14
  # #
15
15
  # hprose service for ruby #
16
16
  # #
17
- # LastModified: Mar 8, 2014 #
17
+ # LastModified: Mar 11, 2014 #
18
18
  # Author: Ma Bingyao <andot@hprose.com> #
19
19
  # #
20
20
  ############################################################
21
21
 
22
22
  require "hprose/common"
23
23
  require "hprose/io"
24
- require "thread"
25
24
 
26
25
  module Hprose
27
26
  class Service
@@ -330,6 +329,7 @@ module Hprose
330
329
  def handle(data, context)
331
330
  begin
332
331
  data = @filter.input_filter(data)
332
+ raise Exception.exception("Wrong Request: \r\n#{data}") if data.nil? or data.empty? or data[data.size - 1].ord != TagEnd
333
333
  istream = StringIO.new(data, 'rb')
334
334
  tag = istream.getbyte
335
335
  case tag
@@ -0,0 +1,84 @@
1
+ ############################################################
2
+ # #
3
+ # hprose #
4
+ # #
5
+ # Official WebSite: http://www.hprose.com/ #
6
+ # http://www.hprose.net/ #
7
+ # http://www.hprose.org/ #
8
+ # #
9
+ ############################################################
10
+
11
+ ############################################################
12
+ # #
13
+ # hprose/tcpserver.rb #
14
+ # #
15
+ # hprose tcp server for ruby #
16
+ # #
17
+ # LastModified: Mar 11, 2014 #
18
+ # Author: Ma Bingyao <andot@hprose.com> #
19
+ # #
20
+ ############################################################
21
+
22
+ require "hprose/io"
23
+ require "hprose/service"
24
+ require "uri"
25
+ require "socket"
26
+
27
+ module Hprose
28
+ class TcpServer < Service
29
+ def initialize(uri = nil)
30
+ super()
31
+ @host = nil
32
+ @port = 0
33
+ unless uri.nil? then
34
+ u = URI.parse(uri)
35
+ @host = u.host
36
+ @port = u.port
37
+ end
38
+ @sockets = nil
39
+ end
40
+ def host
41
+ @host
42
+ end
43
+ def host=(host)
44
+ @host = host
45
+ end
46
+ def port
47
+ @port
48
+ end
49
+ def port=(port)
50
+ @port = port
51
+ end
52
+ def start
53
+ begin
54
+ @sockets = Socket.tcp_server_sockets(@host, @port)
55
+ @sockets.each do
56
+ Socket.accept_loop(@sockets) do |sock, client_addrinfo|
57
+ Thread.start do
58
+ begin
59
+ loop do
60
+ buf = sock.recv(4, 0)
61
+ n = buf[0].ord << 24 | buf[1].ord << 16 | buf[2].ord << 8 | buf[3].ord
62
+ data = handle(sock.recv(n, 0), client_addrinfo)
63
+ n = data.size
64
+ sock.send("" << (n >> 24 & 0xff) << (n >> 16 & 0xff) << (n >> 8 & 0xff) << (n & 0xff) << data, 0)
65
+ end
66
+ ensure
67
+ sock.close
68
+ end
69
+ end
70
+ end
71
+ end
72
+ rescue ::Interrupt => e
73
+ ensure
74
+ stop
75
+ end
76
+ end
77
+ def stop
78
+ unless @sockets.nil? then
79
+ @sockets.each {|s| s.close if !s.closed? }
80
+ @sockets = nil
81
+ end
82
+ end
83
+ end # class TcpServer
84
+ end # module Hprose
data/lib/hprose.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # #
15
15
  # hprose for ruby #
16
16
  # #
17
- # LastModified: Mar 10, 2014 #
17
+ # LastModified: Mar 11, 2014 #
18
18
  # Author: Ma Bingyao <andot@hprose.com> #
19
19
  # #
20
20
  ############################################################
@@ -34,6 +34,7 @@ module Hprose
34
34
  autoload :TcpClient, 'hprose/tcpclient'
35
35
  autoload :Service, 'hprose/service'
36
36
  autoload :HttpService, 'hprose/httpservice'
37
+ autoload :TcpServer, 'hprose/tcpserver'
37
38
  end
38
39
 
39
40
  Object.const_set(:HproseException, Hprose.const_get(:Exception))
@@ -50,3 +51,4 @@ Object.const_set(:HproseHttpClient, Hprose.const_get(:HttpClient))
50
51
  Object.const_set(:HproseTcpClient, Hprose.const_get(:TcpClient))
51
52
  Object.const_set(:HproseService, Hprose.const_get(:Service))
52
53
  Object.const_set(:HproseHttpService, Hprose.const_get(:HttpService))
54
+ Object.const_set(:HproseTcpServer, Hprose.const_get(:TcpServer))
data/lib/hproseserver.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # #
15
15
  # hprose server for ruby #
16
16
  # #
17
- # LastModified: May 19, 2010 #
17
+ # LastModified: Mar 11, 2014 #
18
18
  # Author: Ma Bingyao <andot@hprose.com> #
19
19
  # #
20
20
  ############################################################
@@ -22,7 +22,9 @@
22
22
  module Hprose
23
23
  autoload :Service, 'hprose/service'
24
24
  autoload :HttpService, 'hprose/httpservice'
25
+ autoload :TcpServer, 'hprose/tcpserver'
25
26
  end
26
27
 
27
28
  Object.const_set(:HproseService, Hprose.const_get(:Service))
28
- Object.const_set(:HproseHttpService, Hprose.const_get(:HttpService))
29
+ Object.const_set(:HproseHttpService, Hprose.const_get(:HttpService))
30
+ Object.const_set(:HproseTcpServer, Hprose.const_get(:TcpServer))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hprose
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-10 00:00:00.000000000 Z
12
+ date: 2014-03-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: andot@hprose.com
@@ -20,6 +20,7 @@ files:
20
20
  - examples/client.rb
21
21
  - examples/server.rb
22
22
  - examples/tcpclient.rb
23
+ - examples/tcpserver.rb
23
24
  - lib/hprose/client.rb
24
25
  - lib/hprose/common.rb
25
26
  - lib/hprose/httpclient.rb
@@ -27,6 +28,7 @@ files:
27
28
  - lib/hprose/io.rb
28
29
  - lib/hprose/service.rb
29
30
  - lib/hprose/tcpclient.rb
31
+ - lib/hprose/tcpserver.rb
30
32
  - lib/hprose.rb
31
33
  - lib/hproseclient.rb
32
34
  - lib/hprosecommon.rb