on_pi_trail Event

This event is fired once for each PDU sent between the client and server.

Syntax

class SMPPPITrailEventParams(object):
  @property
  def direction() -> int: ...
  @property
  def pdu() -> bytes: ...
  @property
  def command_length() -> int: ...
  @property
  def command_id() -> int: ...
  @property
  def command_description() -> str: ...
  @property
  def command_status() -> str: ...
  @property
  def sequence_number() -> int: ...

# In class SMPP:
@property
def on_pi_trail() -> Callable[[SMPPPITrailEventParams], None]: ...
@on_pi_trail.setter
def on_pi_trail(event_hook: Callable[[SMPPPITrailEventParams], None]) -> None: ...

Remarks

Whenever either the class or the smpp_server sends any data across the connection, the class will fire a on_pi_trail event containing that data. It will usually be in SMPP-PDU format.

A PDU will contain at least the SMPP header, which is always 16 bytes long. The first four bytes represent the total length of the PDU, including the 16-byte header. The next four bytes are the command id associated with the PDU. The command id of a response PDU is always the command id to which it is responding plus 0x80000000.

The class parses the values contained in the PDU header into the appropriate fields. The CommandLength, CommandId, CommandStatus, and SequenceNumber parameters contain these parsed values.

The third set of four bytes are the command status (status code) of the command. All originating commands will have a status code of 0x00000000, which will be ignored by the receiver. The field is only set by in response PDUs to indicate the status of the originating command. The final four bytes represent the sequence number of the command. All response PDUs will contain the same sequence number as the originating command.

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks 2020 Python Edition - Version 20.0 [Build 8307]