Changeset 1525


Ignore:
Timestamp:
Oct 26, 2007 5:25:35 AM (12 years ago)
Author:
bennylp
Message:

Ticket #403: Ability to specify RConnection instance etc in PJLIB Symbian

Location:
pjproject/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/build.symbian/pjlibU.def

    r1417 r1525  
    261261        pj_strtrim                               @ 260 NONAME 
    262262        pj_symbianos_poll                        @ 261 NONAME 
    263         pj_thread_create                         @ 262 NONAME 
    264         pj_thread_destroy                        @ 263 NONAME 
    265         pj_thread_get_name                       @ 264 NONAME 
    266         pj_thread_join                           @ 265 NONAME 
    267         pj_thread_local_alloc                    @ 266 NONAME 
    268         pj_thread_local_free                     @ 267 NONAME 
    269         pj_thread_local_get                      @ 268 NONAME 
    270         pj_thread_local_set                      @ 269 NONAME 
    271         pj_thread_register                       @ 270 NONAME 
    272         pj_thread_resume                         @ 271 NONAME 
    273         pj_thread_sleep                          @ 272 NONAME 
    274         pj_thread_this                           @ 273 NONAME 
    275         pj_time_decode                           @ 274 NONAME 
    276         pj_time_encode                           @ 275 NONAME 
    277         pj_time_gmt_to_local                     @ 276 NONAME 
    278         pj_time_local_to_gmt                     @ 277 NONAME 
    279         pj_time_val_normalize                    @ 278 NONAME 
    280         pj_timer_entry_init                      @ 279 NONAME 
    281         pj_timer_heap_cancel                     @ 280 NONAME 
    282         pj_timer_heap_count                      @ 281 NONAME 
    283         pj_timer_heap_create                     @ 282 NONAME 
    284         pj_timer_heap_destroy                    @ 283 NONAME 
    285         pj_timer_heap_earliest_time              @ 284 NONAME 
    286         pj_timer_heap_mem_size                   @ 285 NONAME 
    287         pj_timer_heap_poll                       @ 286 NONAME 
    288         pj_timer_heap_schedule                   @ 287 NONAME 
    289         pj_timer_heap_set_lock                   @ 288 NONAME 
    290         pj_timer_heap_set_max_timed_out_per_poll @ 289 NONAME 
    291         pj_unicode_to_ansi                       @ 290 NONAME 
    292         pj_utoa                                  @ 291 NONAME 
    293         pj_utoa_pad                              @ 292 NONAME 
    294         platform_strerror                        @ 293 NONAME 
    295         snprintf                                 @ 294 NONAME 
    296         vsnprintf                                @ 295 NONAME 
     263        pj_symbianos_set_params                  @ 262 NONAME 
     264        pj_thread_create                         @ 263 NONAME 
     265        pj_thread_destroy                        @ 264 NONAME 
     266        pj_thread_get_name                       @ 265 NONAME 
     267        pj_thread_join                           @ 266 NONAME 
     268        pj_thread_local_alloc                    @ 267 NONAME 
     269        pj_thread_local_free                     @ 268 NONAME 
     270        pj_thread_local_get                      @ 269 NONAME 
     271        pj_thread_local_set                      @ 270 NONAME 
     272        pj_thread_register                       @ 271 NONAME 
     273        pj_thread_resume                         @ 272 NONAME 
     274        pj_thread_sleep                          @ 273 NONAME 
     275        pj_thread_this                           @ 274 NONAME 
     276        pj_time_decode                           @ 275 NONAME 
     277        pj_time_encode                           @ 276 NONAME 
     278        pj_time_gmt_to_local                     @ 277 NONAME 
     279        pj_time_local_to_gmt                     @ 278 NONAME 
     280        pj_time_val_normalize                    @ 279 NONAME 
     281        pj_timer_entry_init                      @ 280 NONAME 
     282        pj_timer_heap_cancel                     @ 281 NONAME 
     283        pj_timer_heap_count                      @ 282 NONAME 
     284        pj_timer_heap_create                     @ 283 NONAME 
     285        pj_timer_heap_destroy                    @ 284 NONAME 
     286        pj_timer_heap_earliest_time              @ 285 NONAME 
     287        pj_timer_heap_mem_size                   @ 286 NONAME 
     288        pj_timer_heap_poll                       @ 287 NONAME 
     289        pj_timer_heap_schedule                   @ 288 NONAME 
     290        pj_timer_heap_set_lock                   @ 289 NONAME 
     291        pj_timer_heap_set_max_timed_out_per_poll @ 290 NONAME 
     292        pj_unicode_to_ansi                       @ 291 NONAME 
     293        pj_utoa                                  @ 292 NONAME 
     294        pj_utoa_pad                              @ 293 NONAME 
     295        platform_strerror                        @ 294 NONAME 
     296        snprintf                                 @ 295 NONAME 
     297        vsnprintf                                @ 296 NONAME 
  • pjproject/trunk/build.symbian/pjproject.cww

    r1426 r1525  
    313313    </WINDOW> 
    314314    <WINDOW> 
    315         <SESSION>-1</SESSION> 
    316         <EDOCTYPE>1</EDOCTYPE> 
    317         <PATH USERELATIVEPATHS = "true">..\pjsip-apps\src\symbian_ua\ua.cpp</PATH> 
     315        <SESSION>-2147483648</SESSION> 
     316        <EDOCTYPE>20</EDOCTYPE> 
     317        <DEFAULT>true</DEFAULT> 
    318318        <MAXIMIZED>true</MAXIMIZED> 
    319319        <FRAMELOC> 
    320320            <X>4</X> 
    321             <Y>4</Y> 
    322         </FRAMELOC> 
    323         <FRAMESIZE> 
    324             <W>557</W> 
    325             <H>627</H> 
     321            <Y>23</Y> 
     322        </FRAMELOC> 
     323        <FRAMESIZE> 
     324            <W>1464</W> 
     325            <H>3681</H> 
    326326        </FRAMESIZE> 
    327327        <DOCKINFO> 
     
    338338        </DOCKINFO> 
    339339    </WINDOW> 
     340    <WINDOW> 
     341        <SESSION>-2147483648</SESSION> 
     342        <EDOCTYPE>36</EDOCTYPE> 
     343        <DEFAULT>true</DEFAULT> 
     344        <FRAMELOC> 
     345            <X>4</X> 
     346            <Y>23</Y> 
     347        </FRAMELOC> 
     348        <FRAMESIZE> 
     349            <W>366</W> 
     350            <H>354</H> 
     351        </FRAMESIZE> 
     352        <DOCKINFO> 
     353            <STATUS>0</STATUS> 
     354            <ROW></ROW> 
     355            <COLUMN></COLUMN> 
     356            <DOCKBARID></DOCKBARID> 
     357            <PCTWIDTH></PCTWIDTH> 
     358            <HGT></HGT> 
     359            <GROUPID> 
     360                <GIDHIGHPART></GIDHIGHPART> 
     361                <GIDLOWPART></GIDLOWPART> 
     362            </GROUPID> 
     363        </DOCKINFO> 
     364    </WINDOW> 
     365    <WINDOW> 
     366        <SESSION>-2147483648</SESSION> 
     367        <EDOCTYPE>23</EDOCTYPE> 
     368        <DEFAULT>true</DEFAULT> 
     369        <MAXIMIZED>true</MAXIMIZED> 
     370        <FRAMELOC> 
     371            <X>6</X> 
     372            <Y>81</Y> 
     373        </FRAMELOC> 
     374        <FRAMESIZE> 
     375            <W>566</W> 
     376            <H>477</H> 
     377        </FRAMESIZE> 
     378        <DOCKINFO> 
     379            <STATUS>0</STATUS> 
     380            <ROW></ROW> 
     381            <COLUMN></COLUMN> 
     382            <DOCKBARID></DOCKBARID> 
     383            <PCTWIDTH></PCTWIDTH> 
     384            <HGT></HGT> 
     385            <GROUPID> 
     386                <GIDHIGHPART></GIDHIGHPART> 
     387                <GIDLOWPART></GIDLOWPART> 
     388            </GROUPID> 
     389        </DOCKINFO> 
     390    </WINDOW> 
    340391</MWIDEWORKSPACE> 
  • pjproject/trunk/pjlib/include/pj/os.h

    r1405 r1525  
    293293 */ 
    294294PJ_DECL(pj_bool_t) pj_symbianos_poll(int priority, int ms_timeout); 
     295 
     296 
     297/** 
     298 * This structure declares Symbian OS specific parameters that can be 
     299 * specified when calling #pj_symbianos_set_params(). 
     300 */ 
     301typedef struct pj_symbianos_params  
     302{ 
     303    /** 
     304     * Optional RSocketServ instance to be used by PJLIB. If this 
     305     * value is NULL, PJLIB will create a new RSocketServ instance 
     306     * when pj_init() is called. 
     307     */ 
     308    void        *rsocketserv; 
     309     
     310    /** 
     311     * Optional RConnection instance to be used by PJLIB when creating 
     312     * sockets. If this value is NULL, no RConnection will be 
     313     * specified when creating sockets. 
     314     */ 
     315    void        *rconnection; 
     316     
     317    /** 
     318     * Optional RHostResolver instance to be used by PJLIB. If this value 
     319     * is NULL, a new RHostResolver instance will be created when 
     320     * pj_init() is called. 
     321     */ 
     322    void        *rhostresolver; 
     323      
     324} pj_symbianos_params; 
     325 
     326/** 
     327 * Specify Symbian OS parameters to be used by PJLIB. This function MUST 
     328 * be called before #pj_init() is called. 
     329 * 
     330 * @param prm           Symbian specific parameters. 
     331 * 
     332 * @return              PJ_SUCCESS if the parameters can be applied 
     333 *                      successfully. 
     334 */ 
     335PJ_DECL(pj_status_t) pj_symbianos_set_params(pj_symbianos_params *prm); 
     336 
    295337 
    296338/** 
  • pjproject/trunk/pjlib/src/pj/os_core_symbian.cpp

    r1405 r1525  
    154154PjSymbianOS::PjSymbianOS() 
    155155: isSocketServInitialized_(false), isResolverInitialized_(false), 
    156   console_(NULL), selectTimeoutTimer_(NULL) 
    157 { 
     156  console_(NULL), selectTimeoutTimer_(NULL), 
     157  appSocketServ_(NULL), appConnection_(NULL), appHostResolver_(NULL) 
     158{ 
     159} 
     160 
     161// Set parameters 
     162void PjSymbianOS::SetParameters(pj_symbianos_params *params)  
     163{ 
     164    appSocketServ_ = (RSocketServ*) params->rsocketserv; 
     165    appConnection_ = (RConnection*) params->rconnection; 
     166    appHostResolver_ = (RHostResolver*) params->rhostresolver; 
    158167} 
    159168 
     
    180189#endif 
    181190 
    182     if (!isSocketServInitialized_) { 
     191    /* Only create RSocketServ if application doesn't specify it 
     192     * in the parameters 
     193     */ 
     194    if (!isSocketServInitialized_ && appSocketServ_ == NULL) { 
    183195        err = socketServ_.Connect(); 
    184196        if (err != KErrNone) 
     
    188200    } 
    189201 
    190     if (!isResolverInitialized_) { 
    191         err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream); 
     202    if (!isResolverInitialized_ && appHostResolver_ == NULL) { 
     203        if (Connection()) 
     204            err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream, 
     205                                     *Connection()); 
     206        else 
     207            err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream); 
     208         
    192209        if (err != KErrNone) 
    193210            goto on_error; 
     
    258275{ 
    259276    return 0; 
     277} 
     278 
     279 
     280/* Set Symbian specific parameters */ 
     281PJ_DEF(pj_status_t) pj_symbianos_set_params(pj_symbianos_params *prm)  
     282{ 
     283    PJ_ASSERT_RETURN(prm != NULL, PJ_EINVAL); 
     284    PjSymbianOS::Instance()->SetParameters(prm); 
     285    return PJ_SUCCESS; 
    260286} 
    261287 
  • pjproject/trunk/pjlib/src/pj/os_symbian.h

    r1420 r1525  
    2121 
    2222#include <pj/sock.h> 
     23#include <pj/os.h> 
    2324#include <pj/string.h> 
    2425 
     
    196197 
    197198    // 
     199    // Set parameters 
     200    // 
     201    void SetParameters(pj_symbianos_params *params); 
     202     
     203    // 
    198204    // Initialize. 
    199205    // 
     
    213219    RSocketServ &SocketServ() 
    214220    { 
    215         return socketServ_; 
    216     } 
    217  
     221        return appSocketServ_ ? *appSocketServ_ : socketServ_; 
     222    } 
     223 
     224    // Get RConnection instance, if any. 
     225    RConnection *Connection()  
     226    { 
     227        return appConnection_; 
     228    } 
     229     
    218230    // Convert TInetAddr to pj_sockaddr_in 
    219231    static inline void Addr2pj(const TInetAddr & sym_addr, 
     
    244256    RHostResolver & GetResolver() 
    245257    { 
    246         return hostResolver_; 
     258        return appHostResolver_ ? *appHostResolver_ : hostResolver_; 
    247259    } 
    248260 
     
    297309    CPjTimeoutTimer *selectTimeoutTimer_; 
    298310 
     311    // App parameters 
     312    RSocketServ *appSocketServ_; 
     313    RConnection *appConnection_; 
     314    RHostResolver *appHostResolver_; 
     315     
    299316private: 
    300317    PjSymbianOS(); 
  • pjproject/trunk/pjlib/src/pj/sock_symbian.cpp

    r1405 r1525  
    475475    /* Create Symbian RSocket */ 
    476476    RSocket rSock; 
    477     rc = rSock.Open(PjSymbianOS::Instance()->SocketServ(), af, type, proto); 
     477    if (PjSymbianOS::Instance()->Connection()) 
     478        rc = rSock.Open(PjSymbianOS::Instance()->SocketServ(),  
     479                        af, type, proto, 
     480                        *PjSymbianOS::Instance()->Connection()); 
     481    else 
     482        rc = rSock.Open(PjSymbianOS::Instance()->SocketServ(),  
     483                        af, type, proto); 
     484         
    478485    if (rc != KErrNone) 
    479486        return PJ_RETURN_OS_ERROR(rc); 
Note: See TracChangeset for help on using the changeset viewer.