anthill_smpp_ruby 0.5.1

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.
Files changed (154) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README +30 -0
  3. data/anthill_smpp_ruby.gemspec +18 -0
  4. data/changelog +43 -0
  5. data/data/dumps/random_command.dump +1 -0
  6. data/data/dumps/smpp_alert_notification.dump +1 -0
  7. data/data/dumps/smpp_bind_receiver.dump +1 -0
  8. data/data/dumps/smpp_bind_receiver_resp.dump +1 -0
  9. data/data/dumps/smpp_bind_transceiver.dump +1 -0
  10. data/data/dumps/smpp_bind_transceiver_1.dump +2 -0
  11. data/data/dumps/smpp_bind_transceiver_resp.dump +1 -0
  12. data/data/dumps/smpp_bind_transmitter.dump +1 -0
  13. data/data/dumps/smpp_bind_transmitter_resp.dump +1 -0
  14. data/data/dumps/smpp_broadcast_sm.dump +1 -0
  15. data/data/dumps/smpp_broadcast_sm_resp.dump +1 -0
  16. data/data/dumps/smpp_cancel_broadcast_sm.dump +1 -0
  17. data/data/dumps/smpp_cancel_broadcast_sm_resp.dump +1 -0
  18. data/data/dumps/smpp_cancel_sm.dump +1 -0
  19. data/data/dumps/smpp_cancel_sm_resp.dump +1 -0
  20. data/data/dumps/smpp_data_sm.dump +1 -0
  21. data/data/dumps/smpp_data_sm_resp.dump +1 -0
  22. data/data/dumps/smpp_deliver_sm.dump +1 -0
  23. data/data/dumps/smpp_deliver_sm_resp.dump +1 -0
  24. data/data/dumps/smpp_enquire_link.dump +1 -0
  25. data/data/dumps/smpp_enquire_link_resp.dump +1 -0
  26. data/data/dumps/smpp_generic_nack.dump +1 -0
  27. data/data/dumps/smpp_outbind.dump +1 -0
  28. data/data/dumps/smpp_query_broadcast_sm.dump +1 -0
  29. data/data/dumps/smpp_query_broadcast_sm_resp.dump +1 -0
  30. data/data/dumps/smpp_query_broadcast_sm_resp_1.dump +1 -0
  31. data/data/dumps/smpp_query_sm.dump +1 -0
  32. data/data/dumps/smpp_query_sm_resp.dump +1 -0
  33. data/data/dumps/smpp_replace_sm.dump +1 -0
  34. data/data/dumps/smpp_replace_sm_resp.dump +1 -0
  35. data/data/dumps/smpp_submit_multi.dump +1 -0
  36. data/data/dumps/smpp_submit_multi_resp.dump +1 -0
  37. data/data/dumps/smpp_submit_sm.dump +1 -0
  38. data/data/dumps/smpp_submit_sm_resp.dump +1 -0
  39. data/data/dumps/smpp_unbind.dump +1 -0
  40. data/data/dumps/smpp_unbind_resp.dump +1 -0
  41. data/data/pdus/random_command.xml +35 -0
  42. data/data/pdus/smpp_alert_notification.xml +14 -0
  43. data/data/pdus/smpp_alert_notification_no_optional.xml +13 -0
  44. data/data/pdus/smpp_bind_receiver.xml +17 -0
  45. data/data/pdus/smpp_bind_receiver_resp.xml +12 -0
  46. data/data/pdus/smpp_bind_receiver_resp_no_optional.xml +11 -0
  47. data/data/pdus/smpp_bind_transceiver.xml +17 -0
  48. data/data/pdus/smpp_bind_transceiver_resp.xml +12 -0
  49. data/data/pdus/smpp_bind_transceiver_resp_no_optional.xml +11 -0
  50. data/data/pdus/smpp_bind_transmitter.xml +17 -0
  51. data/data/pdus/smpp_bind_transmitter_resp.xml +12 -0
  52. data/data/pdus/smpp_bind_transmitter_resp_no_optional.xml +11 -0
  53. data/data/pdus/smpp_broadcast_sm.xml +47 -0
  54. data/data/pdus/smpp_broadcast_sm_no_optional.xml +26 -0
  55. data/data/pdus/smpp_broadcast_sm_resp.xml +14 -0
  56. data/data/pdus/smpp_broadcast_sm_resp_no_optional.xml +8 -0
  57. data/data/pdus/smpp_cancel_broadcast_sm.xml +17 -0
  58. data/data/pdus/smpp_cancel_broadcast_sm_no_optional.xml +15 -0
  59. data/data/pdus/smpp_cancel_broadcast_sm_resp.xml +7 -0
  60. data/data/pdus/smpp_cancel_sm.xml +18 -0
  61. data/data/pdus/smpp_cancel_sm_resp.xml +10 -0
  62. data/data/pdus/smpp_commands.xsd +914 -0
  63. data/data/pdus/smpp_data_sm.xml +58 -0
  64. data/data/pdus/smpp_data_sm_no_optional.xml +17 -0
  65. data/data/pdus/smpp_data_sm_resp.xml +15 -0
  66. data/data/pdus/smpp_data_sm_resp_no_optional.xml +8 -0
  67. data/data/pdus/smpp_deliver_sm.xml +46 -0
  68. data/data/pdus/smpp_deliver_sm_no_optional.xml +25 -0
  69. data/data/pdus/smpp_deliver_sm_resp.xml +14 -0
  70. data/data/pdus/smpp_deliver_sm_resp_no_optional.xml +8 -0
  71. data/data/pdus/smpp_enquire_link.xml +10 -0
  72. data/data/pdus/smpp_enquire_link_resp.xml +10 -0
  73. data/data/pdus/smpp_generic_nack.xml +10 -0
  74. data/data/pdus/smpp_outbind.xml +12 -0
  75. data/data/pdus/smpp_query_broadcast_sm.xml +12 -0
  76. data/data/pdus/smpp_query_broadcast_sm_no_optional.xml +11 -0
  77. data/data/pdus/smpp_query_broadcast_sm_resp.xml +17 -0
  78. data/data/pdus/smpp_query_broadcast_sm_resp_no_optional.xml +15 -0
  79. data/data/pdus/smpp_query_sm.xml +11 -0
  80. data/data/pdus/smpp_query_sm_resp.xml +11 -0
  81. data/data/pdus/smpp_replace_sm.xml +18 -0
  82. data/data/pdus/smpp_replace_sm_no_optional.xml +17 -0
  83. data/data/pdus/smpp_replace_sm_resp.xml +7 -0
  84. data/data/pdus/smpp_submit_multi.xml +73 -0
  85. data/data/pdus/smpp_submit_multi_no_optional.xml +51 -0
  86. data/data/pdus/smpp_submit_multi_resp.xml +35 -0
  87. data/data/pdus/smpp_submit_sm.xml +57 -0
  88. data/data/pdus/smpp_submit_sm_no_optional.xml +28 -0
  89. data/data/pdus/smpp_submit_sm_resp.xml +8 -0
  90. data/data/pdus/smpp_unbind.xml +10 -0
  91. data/data/pdus/smpp_unbind_resp.xml +10 -0
  92. data/examples/dump_viewer.rb +298 -0
  93. data/examples/pdu_composer.rb +1331 -0
  94. data/knownbugs +24 -0
  95. data/lib/anthill_smpp_ruby.rb +83 -0
  96. data/lib/i_smpp_outputter.rb +425 -0
  97. data/lib/pdu/smpp_alert_notification.rb +132 -0
  98. data/lib/pdu/smpp_bind.rb +102 -0
  99. data/lib/pdu/smpp_bind_receiver.rb +29 -0
  100. data/lib/pdu/smpp_bind_receiver_resp.rb +30 -0
  101. data/lib/pdu/smpp_bind_resp.rb +100 -0
  102. data/lib/pdu/smpp_bind_transceiver.rb +29 -0
  103. data/lib/pdu/smpp_bind_transceiver_resp.rb +31 -0
  104. data/lib/pdu/smpp_bind_transmitter.rb +29 -0
  105. data/lib/pdu/smpp_bind_transmitter_resp.rb +30 -0
  106. data/lib/pdu/smpp_broadcast_sm.rb +566 -0
  107. data/lib/pdu/smpp_broadcast_sm_resp.rb +130 -0
  108. data/lib/pdu/smpp_cancel_broadcast_sm.rb +143 -0
  109. data/lib/pdu/smpp_cancel_broadcast_sm_resp.rb +60 -0
  110. data/lib/pdu/smpp_cancel_sm.rb +110 -0
  111. data/lib/pdu/smpp_cancel_sm_resp.rb +60 -0
  112. data/lib/pdu/smpp_data_sm.rb +679 -0
  113. data/lib/pdu/smpp_data_sm_resp.rb +148 -0
  114. data/lib/pdu/smpp_deliver_sm.rb +458 -0
  115. data/lib/pdu/smpp_deliver_sm_resp.rb +137 -0
  116. data/lib/pdu/smpp_enquire_link.rb +59 -0
  117. data/lib/pdu/smpp_enquire_link_resp.rb +61 -0
  118. data/lib/pdu/smpp_generic_nack.rb +61 -0
  119. data/lib/pdu/smpp_outbind.rb +71 -0
  120. data/lib/pdu/smpp_pdu.rb +90 -0
  121. data/lib/pdu/smpp_query_broadcast_sm.rb +120 -0
  122. data/lib/pdu/smpp_query_broadcast_sm_resp.rb +192 -0
  123. data/lib/pdu/smpp_query_sm.rb +92 -0
  124. data/lib/pdu/smpp_query_sm_resp.rb +92 -0
  125. data/lib/pdu/smpp_replace_sm.rb +172 -0
  126. data/lib/pdu/smpp_replace_sm_resp.rb +61 -0
  127. data/lib/pdu/smpp_resp.rb +40 -0
  128. data/lib/pdu/smpp_submit_multi.rb +517 -0
  129. data/lib/pdu/smpp_submit_multi_resp.rb +90 -0
  130. data/lib/pdu/smpp_submit_sm.rb +591 -0
  131. data/lib/pdu/smpp_submit_sm_resp.rb +72 -0
  132. data/lib/pdu/smpp_unbind.rb +60 -0
  133. data/lib/pdu/smpp_unbind_resp.rb +61 -0
  134. data/lib/smpp_constants.rb +917 -0
  135. data/lib/smpp_csv_outputter.rb +1601 -0
  136. data/lib/smpp_datatypes.rb +89 -0
  137. data/lib/smpp_decoder.rb +627 -0
  138. data/lib/smpp_encoder.rb +495 -0
  139. data/lib/smpp_hex_outputter.rb +36 -0
  140. data/lib/smpp_outputter_base.rb +315 -0
  141. data/lib/smpp_structures.rb +98 -0
  142. data/lib/smpp_txt_outputter.rb +1895 -0
  143. data/lib/smpp_validator.rb +373 -0
  144. data/lib/smpp_xml_outputter.rb +34 -0
  145. data/roadmap +18 -0
  146. data/setup.rb +1585 -0
  147. data/test/anthill_smpp_test.rb +29 -0
  148. data/test/smpp_codec_test.rb +30 -0
  149. data/test/smpp_datatypes_test.rb +69 -0
  150. data/test/smpp_outputter_test.rb +1261 -0
  151. data/test/smpp_parsing_test.rb +1758 -0
  152. data/test/smpp_rawdump_test.rb +2095 -0
  153. data/test/smpp_validator_test.rb +441 -0
  154. metadata +206 -0
@@ -0,0 +1,120 @@
1
+ #
2
+ # Copyright 2007 Majoron.com (developers@majoron.com)
3
+ # Original sources are available at www.majoron.com
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+
19
+ module Majoron
20
+ module AntHill
21
+ module SMPP
22
+ class SMPPQueryBroadcastSM < SMPPPDU
23
+ def initialize(command_status = ErrorCode::ESME_ROK, sequence_number = nil)
24
+ super(CommandId::CM_QUERY_BROADCAST_SM, command_status, sequence_number)
25
+
26
+ # Mandatory fields
27
+ @message_id = ""
28
+ @source_addr_ton = TON::UNKNOWN
29
+ @source_addr_npi = TON::UNKNOWN
30
+ @source_addr = ""
31
+
32
+ # Optional fields
33
+ @user_message_reference = nil
34
+
35
+ # Optional fields length
36
+ @user_message_reference_len = SMPPTLVLen::WORD_LEN
37
+
38
+ end
39
+
40
+ # Interface to encode SMPP packet
41
+ def encode_packet(encoder)
42
+ # Encode header and mandatory fields
43
+ encoder.encode_header(@header)
44
+ encoder.encode_message_id(@message_id)
45
+ encoder.encode_source_addr_ton(@source_addr_ton)
46
+ encoder.encode_source_addr_npi(@source_addr_npi)
47
+ encoder.encode_source_addr21(@source_addr)
48
+
49
+ # Encode optional fields
50
+ encoder.encode_user_message_reference(@user_message_reference,
51
+ @user_message_reference_len) if !@user_message_reference.nil?
52
+ end
53
+
54
+ # Interface to decode SMPP packet
55
+ def decode_packet(decoder)
56
+ # Decode header and mandatory fields
57
+ @header = decoder.decode_header()
58
+ @message_id = decoder.decode_message_id(command_length())
59
+ @source_addr_ton = decoder.decode_source_addr_ton(command_length())
60
+ @source_addr_npi = decoder.decode_source_addr_npi(command_length())
61
+ @source_addr = decoder.decode_source_addr21(command_length())
62
+
63
+ # Decode optional fields
64
+ while decoder.has_tlvs()
65
+ case decoder.get_tlv_code()
66
+ when OptTags::TAG_USER_MESSAGE_REFERENCE
67
+ @user_message_reference, @user_message_reference_len =
68
+ decoder.decode_user_message_reference(command_length())
69
+ else
70
+ # Report about error
71
+ raise Errors::UNKNOWN_TAG_MSG + decoder.get_tlv_error()
72
+ end
73
+ end
74
+ end
75
+
76
+ # Interface to validate SMPP packet
77
+ def validate_packet(validator)
78
+ # Validate header and mandatory fields
79
+ validator.validate_header(@header)
80
+ validator.validate_message_id(@message_id)
81
+ validator.validate_source_addr_ton(@source_addr_ton)
82
+ validator.validate_source_addr_npi(@source_addr_npi)
83
+ validator.validate_source_addr21(@source_addr)
84
+
85
+ # Encode optional fields
86
+ validator.validate_user_message_reference(@user_message_reference,
87
+ @user_message_reference_len) if !@user_message_reference.nil?
88
+ end
89
+
90
+ # Interface to output SMPP packet
91
+ def output_packet(outputter)
92
+ # Output header and mandatory fields
93
+ outputter.output_header(@header)
94
+ outputter.output_message_id(@message_id)
95
+ outputter.output_source_addr_ton(@source_addr_ton)
96
+ outputter.output_source_addr_npi(@source_addr_npi)
97
+ outputter.output_source_addr21(@source_addr)
98
+
99
+ # Encode optional fields
100
+ outputter.output_user_message_reference(@user_message_reference,
101
+ @user_message_reference_len) if !@user_message_reference.nil?
102
+ end
103
+
104
+ public
105
+ # Mandatory fields
106
+ attr_accessor :message_id
107
+ attr_accessor :source_addr_ton
108
+ attr_accessor :source_addr_npi
109
+ attr_accessor :source_addr
110
+
111
+ # Optional fields
112
+ attr_accessor :user_message_reference
113
+
114
+ # Optional fields length
115
+ attr_accessor :user_message_reference_len
116
+
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,192 @@
1
+ #
2
+ # Copyright 2007 Majoron.com (developers@majoron.com)
3
+ # Original sources are available at www.majoron.com
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+
19
+ module Majoron
20
+ module AntHill
21
+ module SMPP
22
+ class SMPPQueryBroadcastSMResp < SMPPResp
23
+ # Constructor.
24
+ def initialize(command_status = ErrorCode::ESME_ROK, sequence_number = nil)
25
+ super(CommandId::CM_QUERY_BROADCAST_SM_RESP, command_status, sequence_number)
26
+
27
+ # Mandatory fields
28
+ @message_id = ""
29
+ @message_state = nil
30
+ @broadcast_area_identifier = nil
31
+ @broadcast_area_success = nil
32
+
33
+
34
+ # Mandatory fields len
35
+ @message_state_len = SMPPTLVLen::BYTE_LEN
36
+ @broadcast_area_identifier_len = SMPPTLVLen::ZERO_LEN
37
+ @broadcast_area_success_len = SMPPTLVLen::BYTE_LEN
38
+
39
+ # Optional fields
40
+ @user_message_reference = nil
41
+ @broadcast_end_time = nil
42
+
43
+ # Optional fields length
44
+ @user_message_reference_len = SMPPTLVLen::WORD_LEN
45
+ @brodcast_end_time_len = SMPPTLVLen::ZERO_LEN
46
+
47
+ end
48
+
49
+ # Interface to encode SMPP packet
50
+ def encode_packet(encoder)
51
+ # Encode header and mandatory fields
52
+ encoder.encode_header(@header)
53
+ encoder.encode_message_id(@message_id)
54
+
55
+ # Encode mandatory fields as TLV structures
56
+ encoder.encode_message_state_tlv(@message_state,
57
+ @message_state_len)
58
+ encoder.encode_broadcast_area_identifier(@broadcast_area_identifier,
59
+ @broadcast_area_identifier_len)
60
+ encoder.encode_broadcast_area_success(@broadcast_area_success,
61
+ @broadcast_area_success_len)
62
+
63
+ # Encode optional fields
64
+ encoder.encode_user_message_reference(@user_message_reference,
65
+ @user_message_reference_len) if !@user_message_reference.nil?
66
+ encoder.encode_broadcast_end_time(@broadcast_end_time,
67
+ @broadcast_end_time_len) if !@broadcast_end_time.nil?
68
+
69
+ end
70
+
71
+ # Interface to decode SMPP packet
72
+ def decode_packet(decoder)
73
+ # Decode header and mandatory fields
74
+ @header = decoder.decode_header()
75
+ @message_id = decoder.decode_message_id(command_length())
76
+
77
+ # Decode mandatory fields as TLV structures
78
+ if decoder.has_tlvs() && decoder.get_tlv_code() == OptTags::TAG_MESSAGE_STATE
79
+ @message_state, @message_state_len =
80
+ decoder.decode_message_state_tlv(command_length())
81
+ end
82
+
83
+ while decoder.has_tlvs() && decoder.get_tlv_code() == OptTags::TAG_BROADCAST_AREA_IDENTIFIER
84
+ id, len = decoder.decode_broadcast_area_identifier(command_length())
85
+ if @broadcast_area_identifier.nil? || @broadcast_area_identifier_len.nil?
86
+ @broadcast_area_identifier = []
87
+ @broadcast_area_identifier_len = []
88
+ end
89
+ @broadcast_area_identifier << id
90
+ @broadcast_area_identifier_len << len
91
+ end
92
+
93
+ if decoder.has_tlvs() && decoder.get_tlv_code() == OptTags::TAG_BROADCAST_AREA_SUCCESS
94
+ @broadcast_area_success, @broadcast_area_success_len =
95
+ decoder.decode_broadcast_area_success(command_length())
96
+ end
97
+
98
+ # Decode optional fields
99
+ while decoder.has_tlvs()
100
+ case decoder.get_tlv_code()
101
+ when OptTags::TAG_USER_MESSAGE_REFERENCE
102
+ @user_message_reference, @user_message_reference_len =
103
+ decoder.decode_user_message_reference(command_length())
104
+ when OptTags::TAG_BROADCAST_END_TIME
105
+ @broadcast_end_time, @broadcast_end_time_len =
106
+ decoder.decode_broadcast_end_time(command_length())
107
+ else
108
+ # Report about error
109
+ raise Errors::UNKNOWN_TAG_MSG + decoder.get_tlv_error()
110
+ end
111
+ end
112
+ end
113
+
114
+ # Interface to validate SMPP packet
115
+ def validate_packet(validator)
116
+ # Validate header and mandatory fields
117
+ validator.validate_header(@header)
118
+ validator.validate_message_id(@message_id)
119
+
120
+ # Validate mandatory fields as TLV structures
121
+ validator.validate_message_state_tlv(@message_state,
122
+ @message_state_len)
123
+ validator.validate_broadcast_area_identifier(@broadcast_area_identifier,
124
+ @broadcast_area_identifier_len)
125
+ validator.validate_broadcast_area_success(@broadcast_area_success,
126
+ @broadcast_area_success_len)
127
+
128
+ # Validate optional fields
129
+ validator.validate_user_message_reference(@user_message_reference,
130
+ @user_message_reference_len) if !@user_message_reference.nil?
131
+ validator.validate_broadcast_end_time(@broadcast_end_time,
132
+ @broadcast_end_time_len) if !@broadcast_end_time.nil?
133
+ end
134
+
135
+ # Interface to output SMPP packet
136
+ def output_packet(outputter)
137
+ # Output header and mandatory fields
138
+ outputter.output_header(@header)
139
+ outputter.output_message_id(@message_id)
140
+
141
+ # Output mandatory fields as TLV structures
142
+ outputter.output_message_state_tlv(@message_state,
143
+ @message_state_len)
144
+ outputter.output_broadcast_area_identifier(@broadcast_area_identifier,
145
+ @broadcast_area_identifier_len)
146
+ outputter.output_broadcast_area_success(@broadcast_area_success,
147
+ @broadcast_area_success_len)
148
+
149
+ # Output optional fields
150
+ outputter.output_user_message_reference(@user_message_reference,
151
+ @user_message_reference_len) if !@user_message_reference.nil?
152
+ outputter.output_broadcast_end_time(@broadcast_end_time,
153
+ @broadcast_end_time_len) if !@broadcast_end_time.nil?
154
+ end
155
+ public
156
+ def broadcast_area_identifier=(broadcast_area_identifier)
157
+ @broadcast_area_identifier = broadcast_area_identifier
158
+ @broadcast_area_identifier_len = []
159
+ 0.upto(broadcast_area_identifier.size() -1) do | i |
160
+ @broadcast_area_identifier_len << broadcast_area_identifier[i].value.size()
161
+ end
162
+ end
163
+
164
+ def broadcast_end_time=(broadcast_end_time)
165
+ @broadcast_end_time = broadcast_end_time
166
+ @broadcast_end_time_len = broadcast_end_time.size() + 1 # 1 = NULL terminator
167
+ end
168
+
169
+ public
170
+ # Mandatory fields
171
+ attr_accessor :message_id
172
+ attr_accessor :message_state
173
+ attr_reader :broadcast_area_identifier
174
+ attr_accessor :broadcast_area_success
175
+
176
+ # Mandatory fields len
177
+ attr_accessor :message_state_len
178
+ attr_accessor :broadcast_area_identifier_len
179
+ attr_accessor :broadcast_area_success_len
180
+
181
+ # Optional fields
182
+ attr_accessor :user_message_reference
183
+ attr_reader :broadcast_end_time
184
+
185
+ # Optional fields length
186
+ attr_accessor :user_message_reference_len
187
+ attr_accessor :broadcast_end_time_len
188
+
189
+ end
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,92 @@
1
+ #
2
+ # Copyright 2007 Majoron.com (developers@majoron.com)
3
+ # Original sources are available at www.majoron.com
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+
19
+ module Majoron
20
+ module AntHill
21
+ module SMPP
22
+ class SMPPQuerySM < SMPPPDU
23
+ def initialize(command_status = ErrorCode::ESME_ROK, sequence_number = nil)
24
+ super(CommandId::CM_QUERY_SM, command_status, sequence_number)
25
+
26
+ # Mandatory fields
27
+ @message_id = ""
28
+ @source_addr_ton = TON::UNKNOWN
29
+ @source_addr_npi = NPI::UNKNOWN
30
+ @source_addr = ""
31
+
32
+ end
33
+
34
+ # Interface to encode SMPP packet
35
+ def encode_packet(encoder)
36
+ # Encode header and mandatory fields
37
+ encoder.encode_header(@header)
38
+ encoder.encode_message_id(message_id)
39
+ encoder.encode_source_addr_ton(source_addr_ton)
40
+ encoder.encode_source_addr_npi(source_addr_npi)
41
+ encoder.encode_source_addr21(source_addr)
42
+
43
+ end
44
+
45
+ # Interface to decode SMPP packet
46
+ def decode_packet(decoder)
47
+ # Decode header and mandatory fields
48
+ @header = decoder.decode_header()
49
+ @message_id = decoder.decode_message_id(command_length())
50
+ @source_addr_ton = decoder.decode_source_addr_ton(command_length())
51
+ @source_addr_npi = decoder.decode_source_addr_npi(command_length())
52
+ @source_addr = decoder.decode_source_addr21(command_length())
53
+
54
+ end
55
+
56
+ # Interface to validate SMPP packet
57
+ def validate_packet(validator)
58
+ # Validate header and mandatory fields
59
+ validator.validate_header(@header)
60
+ validator.validate_message_id(message_id)
61
+ validator.validate_source_addr_ton(source_addr_ton)
62
+ validator.validate_source_addr_npi(source_addr_npi)
63
+ validator.validate_source_addr21(source_addr)
64
+ end
65
+
66
+ # Interface to output SMPP packet
67
+ def output_packet(outputter)
68
+ # Output header and mandatory fields
69
+ outputter.output_header(@header)
70
+ outputter.output_message_id(message_id)
71
+ outputter.output_source_addr_ton(source_addr_ton)
72
+ outputter.output_source_addr_npi(source_addr_npi)
73
+ outputter.output_source_addr21(source_addr)
74
+ end
75
+
76
+ public
77
+ # Mandatory fields
78
+ attr_accessor :message_id
79
+ attr_accessor :source_addr_ton
80
+ attr_accessor :source_addr_npi
81
+ attr_accessor :source_addr
82
+
83
+ # Optional fields
84
+ # attr_accessor :sc_interface_version
85
+
86
+ # Optional fields length
87
+ # attr_accessor :sc_interface_version_len
88
+
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,92 @@
1
+ #
2
+ # Copyright 2007 Majoron.com (developers@majoron.com)
3
+ # Original sources are available at www.majoron.com
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+
19
+ module Majoron
20
+ module AntHill
21
+ module SMPP
22
+ class SMPPQuerySMResp < SMPPResp
23
+ # Constructor.
24
+ def initialize(command_status = ErrorCode::ESME_ROK, sequence_number = nil)
25
+ super(CommandId::CM_QUERY_SM_RESP, command_status, sequence_number)
26
+
27
+ # Mandatory fields
28
+ @message_id = ""
29
+ @final_date = ""
30
+ @message_state = MessageState::UNKNOWN
31
+ @error_code = 0
32
+
33
+ # Optional fields
34
+
35
+ # Optional fields length
36
+
37
+ end
38
+
39
+ # Interface to encode SMPP packet
40
+ def encode_packet(encoder)
41
+ # Encode header and mandatory fields
42
+ encoder.encode_header(@header)
43
+ encoder.encode_message_id(@message_id)
44
+ encoder.encode_final_date(@final_date)
45
+ encoder.encode_message_state(@message_state)
46
+ encoder.encode_error_code(@error_code)
47
+ end
48
+
49
+ # Interface to decode SMPP packet
50
+ def decode_packet(decoder)
51
+ # Decode header and mandatory fields
52
+ @header = decoder.decode_header()
53
+ @message_id = decoder.decode_message_id(command_length())
54
+ @final_date = decoder.decode_final_date(command_length())
55
+ @message_state = decoder.decode_message_state(command_length())
56
+ @error_code = decoder.decode_error_code(command_length())
57
+ end
58
+
59
+ # Interface to validate SMPP packet
60
+ def validate_packet(validator)
61
+ # Validate header and mandatory fields
62
+ validator.validate_header(@header)
63
+ validator.validate_message_id(@message_id)
64
+ validator.validate_final_date(@final_date)
65
+ validator.validate_message_state(@message_state)
66
+ validator.validate_error_code(@error_code)
67
+ end
68
+
69
+ # Interface to output SMPP packet
70
+ def output_packet(outputter)
71
+ # Output header and mandatory fields
72
+ outputter.output_header(@header)
73
+ outputter.output_message_id(@message_id)
74
+ outputter.output_final_date(@final_date)
75
+ outputter.output_message_state(@message_state)
76
+ outputter.output_error_code(@error_code)
77
+ end
78
+
79
+ public
80
+ # Mandatory fields
81
+ attr_accessor :message_id
82
+ attr_accessor :final_date
83
+ attr_accessor :message_state
84
+ attr_accessor :error_code
85
+
86
+ # Optional fields
87
+
88
+ # Optional fields length
89
+ end
90
+ end
91
+ end
92
+ end