Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_imp.h
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_imp.h	(revision 476)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_imp.h	(revision 482)
@@ -22,4 +22,166 @@
 
 
+
+
+/** 
+ * Structure to be attached to invite dialog. 
+ * Given a dialog "dlg", application can retrieve this structure
+ * by accessing dlg->mod_data[pjsua.mod.id].
+ */
+struct pjsua_call
+{
+    unsigned		 index;	    /**< Index in pjsua array.		    */
+    pjsip_inv_session	*inv;	    /**< The invite session.		    */
+    pj_time_val		 start_time;/**< First INVITE sent/received.	    */
+    pj_time_val		 res_time;  /**< First response sent/received.	    */
+    pj_time_val		 conn_time; /**< Connected/confirmed time.	    */
+    pj_time_val		 dis_time;  /**< Disconnect time.		    */
+    int			 acc_index; /**< Account index being used.	    */
+    pjmedia_session	*session;   /**< The media session.		    */
+    unsigned		 conf_slot; /**< Slot # in conference bridge.	    */
+    pjsip_evsub		*xfer_sub;  /**< Xfer server subscription, if this
+					 call was triggered by xfer.	    */
+    pjmedia_sock_info	 skinfo;    /**< Preallocated media sockets.	    */
+    pjmedia_transport	*med_tp;    /**< Media transport.		    */
+    void		*app_data;  /**< Application data.		    */
+    pj_timer_entry	 refresh_tm;/**< Timer to send re-INVITE.	    */
+    pj_timer_entry	 hangup_tm; /**< Timer to hangup call.		    */
+};
+
+typedef struct pjsua_call pjsua_call;
+
+
+/**
+ * Buddy data.
+ */
+struct pjsua_buddy
+{
+    unsigned		 index;	    /**< Buddy index.			*/
+    pj_str_t		 name;	    /**< Buddy name.			*/
+    pj_str_t		 display;   /**< Buddy display name.		*/
+    pj_str_t		 host;	    /**< Buddy host.			*/
+    unsigned		 port;	    /**< Buddy port.			*/
+    int			 acc_index; /**< Which account to use.		*/
+    pj_bool_t		 monitor;   /**< Should we monitor?		*/
+    pjsip_evsub		*sub;	    /**< Buddy presence subscription	*/
+    pjsip_pres_status	 status;    /**< Buddy presence status.		*/
+};
+
+typedef struct pjsua_buddy pjsua_buddy;
+
+
+/**
+ * Server presence subscription list head.
+ */
+struct pjsua_srv_pres
+{
+    PJ_DECL_LIST_MEMBER(struct pjsua_srv_pres);
+    pjsip_evsub	    *sub;
+    char	    *remote;
+};
+
+typedef struct pjsua_srv_pres pjsua_srv_pres;
+
+
+
+/**
+ * Account
+ */
+struct pjsua_acc
+{
+    int		     index;	    /**< Index in accounts array.	*/
+    pj_str_t	     user_part;	    /**< User part of local URI.	*/
+    pj_str_t	     host_part;	    /**< Host part of local URI.	*/
+
+    pjsip_regc	    *regc;	    /**< Client registration session.   */
+    pj_timer_entry   reg_timer;	    /**< Registration timer.		*/
+    pj_status_t	     reg_last_err;  /**< Last registration error.	*/
+    int		     reg_last_code; /**< Last status last register.	*/
+
+    pjsip_route_hdr  route_set;	    /**< Route set.			*/
+
+    pj_bool_t	     online_status; /**< Our online status.		*/
+    pjsua_srv_pres   pres_srv_list; /**< Server subscription list.	*/
+
+    void	    *app_data;	    /**< Application data.		*/
+};
+
+
+/**
+ * @see pjsua_acc
+ */
+typedef struct pjsua_acc pjsua_acc;
+
+
+/* PJSUA application variables. */
+struct pjsua
+{
+    /* Control: */
+    pj_caching_pool  cp;	    /**< Global pool factory.		*/
+    pjsip_endpoint  *endpt;	    /**< Global endpoint.		*/
+    pj_pool_t	    *pool;	    /**< pjsua's private pool.		*/
+    pjsip_module     mod;	    /**< pjsua's PJSIP module.		*/
+
+    
+    /* Config: */
+    pjsua_config    config;	    /**< PJSUA configs			*/
+
+    /* Application callback
+    : */
+    pjsua_callback  cb;		    /**< Application callback.		*/
+
+    /* Media:  */
+    pjmedia_endpt   *med_endpt;	    /**< Media endpoint.		*/
+    unsigned	     clock_rate;    /**< Conference bridge's clock rate.*/
+    unsigned	     samples_per_frame; /**< Bridge's frame size.	*/
+    pjmedia_conf    *mconf;	    /**< Media conference.		*/
+    
+    pjmedia_snd_port *snd_port;	    /**< Sound device port.		*/
+    pjmedia_master_port *master_port; /**< Master port, when no snd dev	*/
+    
+    unsigned	     player_cnt;    /**< Number of file player.		*/
+
+    /** Array of file players */
+    struct {
+	unsigned     slot;	    /**< WAV player slot in bridge	*/
+	pjmedia_port *port;	    /**< WAV player port.		*/
+    } player[32];
+
+    unsigned	     recorder_cnt;  /**< Number of file recorders.	*/
+
+    /** Array of file recorders */
+    struct {
+	unsigned     slot;	    /**< Slot # in conf bridge.		*/
+	pjmedia_port *port;	    /**< The recorder media port.	*/
+    } recorder[32];
+
+    /* Account: */
+    pjsua_acc	     acc[PJSUA_MAX_ACC];    /** Client regs array.	*/
+
+
+    /* Threading (optional): */
+    pj_thread_t	    *threads[8];    /**< Thread instances.		*/
+    pj_bool_t	     quit_flag;	    /**< To signal thread to quit.	*/
+
+    /* Transport (UDP): */
+    pj_sock_t	     sip_sock;	    /**< SIP UDP socket.		*/
+    pj_sockaddr_in   sip_sock_name; /**< Public/STUN UDP socket addr.	*/
+
+
+    /* PJSUA Calls: */
+    unsigned	     call_cnt;	    /**< Number of calls.		*/
+    pjsua_call	     calls[PJSUA_MAX_CALLS];	/** Calls array.	*/
+
+
+    /* SIMPLE and buddy status: */
+    pjsua_buddy	     buddies[PJSUA_MAX_BUDDIES];
+};
+
+
+/** PJSUA instance. */
+extern struct pjsua pjsua;
+
+
+
 /**
  * Find account for incoming request.
