shared.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:3k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * shared.h - utility functions shared by Kannel boxes
  3.  *
  4.  * The functions declared here are not part of any box in particular, but
  5.  * are quite specific to Kannel, so they are not suitable for gwlib, either.
  6.  *
  7.  * Lars Wirzenius
  8.  */
  9. #ifndef SHARED_H
  10. #define SHARED_H
  11. #include "gwlib/gwlib.h"
  12. #include "msg.h"
  13. #define CATENATE_UDH_LEN 5
  14. /*
  15.  * Program status. Set this to shutting_down to make read_from_bearerbox
  16.  * return even if the bearerbox hasn't closed the connection yet.
  17.  */
  18. extern enum program_status {
  19.     starting_up,
  20.     running,
  21.     shutting_down
  22. } program_status;
  23. /*
  24.  * Return an octet string with information about Kannel version,
  25.  * operating system, and libxml version. The caller must take care to
  26.  * destroy the string when done.
  27.  */
  28. Octstr *version_report_string(const char *boxname);
  29. /*
  30.  * Output the information returned by version_report_string to the log
  31.  * files.
  32.  */
  33. void report_versions(const char *boxname);
  34. /*
  35.  * Open a connection to the bearerbox.
  36.  */
  37. void connect_to_bearerbox(Octstr *host, int port, int ssl, Octstr *our_host);
  38. /*
  39.  * Close connection to the bearerbox.
  40.  */
  41. void close_connection_to_bearerbox(void);
  42. /*
  43.  * Receive Msg from bearerbox. Return NULL if connection broke.
  44.  */
  45. Msg *read_from_bearerbox(void);
  46. /*
  47.  * Send an Msg to the bearerbox, and destroy the Msg.
  48.  */
  49. void write_to_bearerbox(Msg *msg);
  50. /*
  51.  * Delivers a SMS to the bearerbox and returns an error code: 0 if
  52.  * successfull. -1 if transfer failed.
  53.  *
  54.  * Note: Message is only destroyed if sucessfully delivered!
  55.  */
  56. int deliver_to_bearerbox(Msg *msg);
  57.      
  58. /*
  59.  * Validates an OSI date.
  60.  */
  61. Octstr *parse_date(Octstr *date);
  62. /*
  63.  * 
  64.  * Split an SMS message into smaller ones.
  65.  * 
  66.  * The original SMS message is represented as an Msg object, and the
  67.  * resulting list of smaller ones is represented as a List of Msg objects.
  68.  * A plain text header and/or footer can be added to each part, and an
  69.  * additional suffix can be added to each part except the last one.
  70.  * Optionally, a UDH prefix can be added to each part so that phones
  71.  * that understand this prefix can join the messages into one large one
  72.  * again. At most `max_messages' parts will be generated; surplus text
  73.  * from the original message will be silently ignored.
  74.  * 
  75.  * If the original message has UDH, they will be duplicated in each part.
  76.  * It is an error to use catenation and UDH together, or catenation and 7
  77.  * bit mode toghether; in these cases, catenation is silently ignored.
  78.  * 
  79.  * If `catenate' is true, `msg_sequence' is used as the sequence number for
  80.  * the logical message. The catenation UDH contain three numbers: the
  81.  * concatenated message reference, which is constant for all parts of
  82.  * the logical message, the total number of parts in the logical message,
  83.  * and the sequence number of the current part.
  84.  *
  85.  * Note that `msg_sequence' must have a value in the range 0..255.
  86.  * 
  87.  * `max_octets' gives the maximum number of octets in on message, including
  88.  * UDH, and after 7 bit characters have been packed into octets.
  89.  */
  90. List *sms_split(Msg *orig, Octstr *header, Octstr *footer, 
  91.                 Octstr *nonlast_suffix, Octstr *split_chars, int catenate, 
  92.                 unsigned long msg_sequence, int max_messages, int max_octets);
  93. #endif