class Smpp::Pdu::SubmitMultiResponse

Recieving response for an MT message sent to multiple addresses Author: Abhishek Parolkar, (abhishekparolkar.com)

Attributes

message_id[RW]
unsuccess_smes[RW]

Public Class Methods

from_wire_data(seq, status, body) click to toggle source
# File lib/smpp/pdu/submit_multi_response.rb, line 31
def self.from_wire_data(seq, status, body)
  message_id, no_unsuccess, rest = body.unpack("Z*Ca*")
  unsuccess_smes = []

  no_unsuccess.times do |i|
    #unpack the next sme
    dest_addr_ton, dest_addr_npi, destination_addr, error_status_code =
      rest.unpack("CCZ*N")
    #remove the SME from rest
    rest.slice!(0,7 + destination_addr.length)
    unsuccess_smes << UnsuccessfulSme.new(dest_addr_ton, dest_addr_npi, destination_addr, error_status_code)
  end
  
  new(seq, status, message_id, unsuccess_smes)
end
new(seq, status, message_id, unsuccess_smes = []) click to toggle source
Calls superclass method Smpp::Pdu::Base::new
# File lib/smpp/pdu/submit_multi_response.rb, line 12
def initialize(seq, status, message_id, unsuccess_smes = [])
  @unsuccess_smes = unsuccess_smes
  seq ||= next_sequence_number

  packed_smes = ""
  unsuccess_smes.each do |sme|
    packed_smes << [
      sme.dest_addr_ton, 
      sme.dest_addr_npi, 
      sme.destination_addr, 
      sme.error_status_code
    ].pack("CCZ*N")
  end
  body = [message_id, unsuccess_smes.size, packed_smes].pack("Z*Ca*")

  super(SUBMIT_MULTI_RESP, status, seq, body)
  @message_id = message_id
end