ruby_ucp 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,5 +1,8 @@
1
1
  ============ RELEASED ==============
2
2
 
3
+ = 0.3.0 (2011-10-21)
4
+ * fixed issues #10, #13, #14, #15
5
+
3
6
  = 0.2.0 (2011-02-06)
4
7
  * miscelaneous cleanup
5
8
  * basic documentation of methods in Ucp::Util::UCP
@@ -39,6 +42,3 @@
39
42
 
40
43
  = 0.4.0
41
44
  * add samples
42
-
43
- = 0.3.0
44
- * methods documentation
data/Rakefile CHANGED
@@ -67,7 +67,7 @@ end
67
67
 
68
68
  spec = Gem::Specification.new do |s|
69
69
  s.name = 'ruby_ucp'
70
- s.version = '0.2.0'
70
+ s.version = '0.3.0'
71
71
  s.has_rdoc = true
72
72
  s.extra_rdoc_files = ['README', 'LICENSE']
73
73
  s.summary = 'EMI/UCP protocol library'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -0,0 +1,81 @@
1
+ =begin
2
+ Ruby library implementation of EMI/UCP protocol v4.6 for SMS
3
+ Copyright (C) 2011, Sergio Freire <sergio.freire@gmail.com>
4
+
5
+ This library is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU Lesser General Public
7
+ License as published by the Free Software Foundation; either
8
+ version 2.1 of the License, or (at your option) any later version.
9
+
10
+ This library is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public
16
+ License along with this library; if not, write to the Free Software
17
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+ =end
19
+
20
+ =begin
21
+ this file actually contais a LOT of garbage... used just to test things while developing
22
+ i left so you can take a look of concrete examples, while I build clean samples along
23
+ with tests
24
+ =end
25
+
26
+
27
+
28
+ $KCODE = 'UTF8'
29
+ require 'jcode'
30
+ require "rubygems"
31
+ require "ruby_ucp"
32
+ include Ucp::Util
33
+ require "benchmark"
34
+
35
+
36
+ def bench(test_name,test_code,*args)
37
+ total_runs = 1000
38
+ t=Benchmark.realtime { total_runs.times do; test_code.call(*args); end }
39
+ puts "#{test_name}: #{(total_runs/t).to_i} req/sec"
40
+ end
41
+
42
+
43
+
44
+ def test_parse_str
45
+ ustr=2.chr+"01/00357/O/51/961234567/1234/////////////////4/1072/0031003200330034003500360037003800390030003100320033003400350036003700380039003000310032003300340035003600370038003900300031003200330034003500360037003800390030003100320033003400350036003700380039003000310032003300340035003600370038003900300031003200330034003500360037//////////0106050003450201020108///01"+3.chr
46
+ ucp=UCP.parse_str(ustr)
47
+ end
48
+
49
+ def test_make_multi_ucps(msg_size)
50
+ UCP.make_multi_ucps(1235,961234568,"1234567890"*msg_size)
51
+ end
52
+
53
+ def test_ucp30_basic_submit(msg_size)
54
+ ucp=Ucp30Operation.new
55
+ ucp.basic_submit(1234, 961234567, "z"*msg_size)
56
+ end
57
+
58
+
59
+ puts "== Ruby UCP methods benchmark =="
60
+
61
+ bench("UCP.parse_str()",method(:test_parse_str))
62
+ bench("UCP.make_multi_ucps(sms_len=10)",method(:test_make_multi_ucps),1)
63
+ bench("UCP.make_multi_ucps(sms_len=100)",method(:test_make_multi_ucps),10)
64
+ bench("UCP.make_multi_ucps(sms_len=300)",method(:test_make_multi_ucps),30)
65
+
66
+ puts "== == =="
67
+
68
+ bench("Ucp30Operation.basic_submit(sms_len=10)",method(:test_ucp30_basic_submit),10)
69
+ bench("Ucp30Operation.basic_submit(sms_len=100)",method(:test_ucp30_basic_submit),100)
70
+ bench("Ucp30Operation.basic_submit(sms_len=300)",method(:test_ucp30_basic_submit),300)
71
+
72
+ puts "== == =="
73
+
74
+ =begin
75
+ Benchmark.bm(7) do |x|
76
+ x.report("for:") { n.times do; ustr=2.chr+"01/00357/O/51/961234567/1234/////////////////4/1072/0031003200330034003500360037003800390030003100320033003400350036003700380039003000310032003300340035003600370038003900300031003200330034003500360037003800390030003100320033003400350036003700380039003000310032003300340035003600370038003900300031003200330034003500360037//////////0106050003450201020108///01"+3.chr
77
+ ucp=UCP.parse_str(ustr); end }
78
+ x.report("times:") { n.times do ; a = "1"; end }
79
+ x.report("upto:") { 1.upto(n) do ; a = "1"; end }
80
+ end
81
+ =end
@@ -65,4 +65,4 @@ require "ucp/util/sms_request.rb"
65
65
  require "ucp/util/ucp.rb"
66
66
  require "ucp/util/ucp_server.rb"
67
67
  require "ucp/util/ucs2_packed_msg.rb"
68
-
68
+ require "ucp/util/auth_request.rb"
@@ -100,15 +100,18 @@ server.set_authentication_handler(method(:auth_handler))
100
100
  cliente=UcpClient.new("localhost",port,{:login=>8006,:password=>"timor"})
101
101
  #sent=cliente.send_message(1234,961234567,"1234567890"*17+"ola custa 1€ sabias?")
102
102
 
103
+
103
104
  ans=cliente.send_alert("961234567","0100")
104
- puts "ans: #{ans}"
105
+ puts "ans_send_alert: #{ans}"
106
+
105
107
  s="1234567890"*8+"1€"
106
108
  sent=cliente.send_message(1234,961234567,s)
107
109
  puts "sent: #{sent}"
108
110
  ucp=Ucp30Operation.new
109
111
  ucp.basic_submit(1234, 961234567, "ola 1€éuro Ç!@\'\"#\$%&/()=<>,.-;:*+[]")
110
112
  ans=cliente.send_sync(ucp)
111
- puts "ans: #{ans}"
113
+ puts "--------------------------"
114
+ puts "ans_send_sync: #{ans}"
112
115
  cliente.close
113
116
  server.stop
114
117
  exit
@@ -58,7 +58,7 @@ class Ucp::Pdu::Ucp51Operation < Ucp::Pdu::UCP5x
58
58
  def parse_xser
59
59
  @xservices.each { |xser|
60
60
 
61
- puts "xser_id: #{xser[0,2]}"
61
+ # puts "xser_id: #{xser[0,2]}"
62
62
 
63
63
  if xser[0,2].eql?("01")
64
64
  header=xser[4,xser[2,2].to_i(16)*2]
@@ -128,7 +128,7 @@ class Ucp::Pdu::Ucp51Operation < Ucp::Pdu::UCP5x
128
128
  # UCP51 supports IRA encoded SMS and 16 bits UCS2
129
129
  # for now assume IRA
130
130
  if !message.nil?
131
- msg=UCP.ascii2ira(message)
131
+ msg=UCP.ascii2ira(message).encoded
132
132
  end
133
133
  mt=3
134
134
 
@@ -65,7 +65,7 @@ class Ucp::Util::UCP
65
65
  add_char(0x00,"@")
66
66
  add_char(0x01,"£")
67
67
  add_char(0x02,"$")
68
- #add_char(0x03," ")
68
+ add_char(0x03,"¥")
69
69
  add_char(0x04,"è")
70
70
  add_char(0x05,"é")
71
71
  add_char(0x06,"ù")
@@ -73,12 +73,27 @@ class Ucp::Util::UCP
73
73
  add_char(0x08,"ò")
74
74
  add_char(0x09,"Ç")
75
75
  add_char(0x0A,"\n")
76
- #add_char(0x0B," ")
77
- #add_char(0x0C," ")
76
+ add_char(0x0B,"Ø")
77
+ add_char(0x0C,"ø")
78
78
  add_char(0x0D,"\r")
79
- #add_char(0x0E,"A")
80
- #add_char(0x0F,"a")
81
-
79
+ add_char(0x0E,"Å")
80
+ add_char(0x0F,"å")
81
+
82
+ add_char(0x10, "Δ")
83
+ add_char(0x11, "_")
84
+ add_char(0x12, "Φ")
85
+ add_char(0x13, "Γ")
86
+ add_char(0x14, "Λ")
87
+ add_char(0x15, "Ω")
88
+ add_char(0x16, "Π")
89
+ add_char(0x17, "Ψ")
90
+ add_char(0x18, "Σ")
91
+ add_char(0x19, "Θ")
92
+ add_char(0x1A, "Ξ")
93
+ # 0x1B is escape sequence for extended characters
94
+ add_char(0x1C, "Æ")
95
+ add_char(0x1D, "æ")
96
+ add_char(0x1E, "ß")
82
97
  add_char(0x1F,"É")
83
98
 
84
99
 
@@ -87,7 +102,7 @@ class Ucp::Util::UCP
87
102
  add_char(0x21,"!")
88
103
  add_char(0x22,'"')
89
104
  add_char(0x23,"#")
90
- #add_char(0x24," ")
105
+ add_char(0x24,"¤")
91
106
  add_char(0x25,"%")
92
107
  add_char(0x26,"&")
93
108
  add_char(0x27,"'")
@@ -99,12 +99,19 @@ class Ucp::Util::UcpServer
99
99
  end
100
100
 
101
101
  reply_ucp=UCP.make_ucp_result(ucp)
102
- reply_ucp.ack("ok")
102
+ if reply_ucp.operation == "31" || reply_ucp.operation == "60"
103
+ reply_ucp.ack("ok")
104
+ else
105
+ smscid="#{ucp.get_field(:adc)}:#{Time.now.strftime("%d%m%y%H%M%S")}"
106
+ reply_ucp.ack("",smscid)
107
+ end
103
108
 
104
109
  #puts "reply #{reply_ucp.to_s}"
105
110
  s.print reply_ucp.to_s
106
111
  puts "Ssent: #{reply_ucp.to_s}\n"
107
112
  end
113
+ rescue Exception=>e
114
+ puts "Error: #{e.backtrace}"
108
115
  ensure
109
116
  puts "*** #{name}:#{port} disconnected/closed"
110
117
  s.close # close socket on error
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_ucp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sergio Freire
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-06 00:00:00 +00:00
18
+ date: 2011-10-21 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -35,6 +35,7 @@ files:
35
35
  - Rakefile
36
36
  - Rakefile.orig
37
37
  - VERSION
38
+ - lib/performance/stresser.rb
38
39
  - lib/ruby_ucp.rb
39
40
  - lib/samples/main.rb
40
41
  - lib/ucp/base.rb