Changeset 1862 for pjproject/trunk/pjnath/include/pjnath/turn_session.h
- Timestamp:
- Mar 12, 2008 8:52:16 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/include/pjnath/turn_session.h
r1854 r1862 49 49 #define PJ_TURN_NO_TIMEOUT ((long)0x7FFFFFFF) 50 50 #define PJ_TURN_MAX_PKT_LEN 3000 51 #define PJ_TURN_PERM_TIMEOUT 300 52 #define PJ_TURN_CHANNEL_TIMEOUT 600 53 54 55 /** Transport types */ 56 enum { 51 #define PJ_TURN_PERM_TIMEOUT 300 /* Must be greater than REFRESH_SEC_BEFORE */ 52 #define PJ_TURN_CHANNEL_TIMEOUT 600 /* Must be greater than REFRESH_SEC_BEFORE */ 53 #define PJ_TURN_REFRESH_SEC_BEFORE 60 54 #define PJ_TURN_KEEP_ALIVE_SEC 15 55 #define PJ_TURN_PEER_HTABLE_SIZE 8 56 57 58 /** TURN transport types */ 59 typedef enum pj_turn_tp_type 60 { 57 61 PJ_TURN_TP_UDP = 16, /**< UDP. */ 58 PJ_TURN_TP_TCP = 6 /**< TCP. */ 59 }; 62 PJ_TURN_TP_TCP = 6, /**< TCP. */ 63 PJ_TURN_TP_TLS = 256 /**< TLS. */ 64 } pj_turn_tp_type; 65 66 67 /** TURN session state */ 68 typedef enum pj_turn_state_t 69 { 70 /** 71 * TURN session has just been created. 72 */ 73 PJ_TURN_STATE_NULL, 74 75 /** 76 * TURN server has been configured and now is being resolved via 77 * DNS SRV resolution. 78 */ 79 PJ_TURN_STATE_RESOLVING, 80 81 /** 82 * TURN server has been resolved. If there is pending allocation to 83 * be done, it will be invoked immediately. 84 */ 85 PJ_TURN_STATE_RESOLVED, 86 87 /** 88 * TURN session has issued ALLOCATE request and is waiting for response 89 * from the TURN server. 90 */ 91 PJ_TURN_STATE_ALLOCATING, 92 93 /** 94 * TURN session has successfully allocated relay resoruce and now is 95 * ready to be used. 96 */ 97 PJ_TURN_STATE_READY, 98 99 /** 100 * TURN session has issued deallocate request and is waiting for a 101 * response from the TURN server. 102 */ 103 PJ_TURN_STATE_DEALLOCATING, 104 105 /** 106 * Deallocate response has been received. Normally the session will 107 * proceed to DESTROYING state immediately. 108 */ 109 PJ_TURN_STATE_DEALLOCATED, 110 111 /** 112 * TURN session is being destroyed. 113 */ 114 PJ_TURN_STATE_DESTROYING 115 116 } pj_turn_state_t; 117 60 118 61 119 /* ChannelData header */ … … 74 132 { 75 133 /** 76 * Callback to send outgoing packet. This callback is mandatory. 134 * This callback will be called by the TURN session whenever it 135 * needs to send outgoing message. Since the TURN session doesn't 136 * have a socket on its own, this callback must be implemented. 77 137 */ 78 138 pj_status_t (*on_send_pkt)(pj_turn_session *sess, … … 83 143 84 144 /** 85 * Notification when allocation completes, either successfully or 86 * with failure. 87 */ 88 void (*on_allocate_complete)(pj_turn_session *sess, 89 pj_status_t status); 90 91 /** 92 * Notification when data is received. 145 * Notification when peer address has been bound successfully to 146 * a channel number. 147 * 148 * This callback is optional. 149 */ 150 void (*on_channel_bound)(pj_turn_session *sess, 151 const pj_sockaddr_t *peer_addr, 152 unsigned addr_len, 153 unsigned ch_num); 154 155 /** 156 * Notification when incoming data has been received, either through 157 * Data indication or ChannelData message from the TURN server. 158 * 159 * This callback is optional. 93 160 */ 94 161 void (*on_rx_data)(pj_turn_session *sess, … … 99 166 100 167 /** 101 * Notification when session has been destroyed. 102 */ 103 void (*on_destroyed)(pj_turn_session *sess); 168 * Notification when TURN session state has changed. Application should 169 * implement this callback at least to know that the TURN session is 170 * going to be destroyed. 171 */ 172 void (*on_state)(pj_turn_session *sess, pj_turn_state_t old_state, 173 pj_turn_state_t new_state); 104 174 105 175 } pj_turn_session_cb; … … 113 183 int bandwidth; 114 184 int lifetime; 185 int ka_interval; 115 186 } pj_turn_alloc_param; 116 187 … … 121 192 typedef struct pj_turn_session_info 122 193 { 194 /** 195 * The relay address 196 */ 197 pj_sockaddr relay_addr; 198 199 /** 200 * The TURN server address for informational purpose. 201 */ 123 202 pj_sockaddr server; 203 124 204 } pj_turn_session_info; 125 205 126 206 127 207 /** 208 * Get TURN state name. 209 */ 210 PJ_DECL(const char*) pj_turn_state_name(pj_turn_state_t state); 211 212 213 /** 128 214 * Create TURN client session. 129 215 */ 130 216 PJ_DECL(pj_status_t) pj_turn_session_create(pj_stun_config *cfg, 217 const char *name, 218 int af, 219 pj_turn_tp_type conn_type, 131 220 const pj_turn_session_cb *cb, 221 void *user_data, 222 unsigned options, 132 223 pj_turn_session **p_sess); 133 224 … … 138 229 PJ_DECL(pj_status_t) pj_turn_session_destroy(pj_turn_session *sess); 139 230 231 232 /** 233 * Re-assign user data. 234 */ 235 PJ_DECL(pj_status_t) pj_turn_session_set_user_data(pj_turn_session *sess, 236 void *user_data); 237 238 /** 239 * Retrieve user data. 240 */ 241 PJ_DECL(void*) pj_turn_session_get_user_data(pj_turn_session *sess); 140 242 141 243 /** … … 144 246 PJ_DECL(pj_status_t) pj_turn_session_set_server(pj_turn_session *sess, 145 247 const pj_str_t *domain, 146 const pj_str_t *res_name,147 248 int default_port, 148 249 pj_dns_resolver *resolver);
Note: See TracChangeset
for help on using the changeset viewer.