Changeset 1601 for pjproject/trunk/pjlib/src/pj/os_symbian.h
- Timestamp:
- Dec 1, 2007 8:52:57 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pj/os_symbian.h
r1525 r1601 20 20 #define __OS_SYMBIAN_H__ 21 21 22 #include <pj/assert.h> 23 #include <pj/errno.h> 22 24 #include <pj/sock.h> 23 25 #include <pj/os.h> … … 52 54 53 55 // Construct CPjSocket 54 CPjSocket( RSocket &sock)55 : sock_(sock), connected_(false), sockReader_(NULL)56 CPjSocket(int af, RSocket &sock) 57 : af_(af), sock_(sock), connected_(false), sockReader_(NULL) 56 58 { 57 59 } … … 60 62 ~CPjSocket(); 61 63 64 // Get address family 65 int GetAf() const 66 { 67 return af_; 68 } 69 62 70 // Get the internal RSocket 63 71 RSocket& Socket() … … 92 100 93 101 private: 102 int af_; 94 103 RSocket sock_; // Must not be reference, or otherwise 95 104 // it may point to local variable! … … 229 238 230 239 // Convert TInetAddr to pj_sockaddr_in 231 static inline void Addr2pj(const TInetAddr & sym_addr, 232 pj_sockaddr_in &pj_addr) 233 { 234 pj_bzero(&pj_addr, sizeof(pj_sockaddr_in)); 235 pj_addr.sin_family = pj_AF_INET(); 236 pj_addr.sin_addr.s_addr = pj_htonl(sym_addr.Address()); 237 pj_addr.sin_port = pj_htons((pj_uint16_t) sym_addr.Port()); 240 static inline pj_status_t Addr2pj(const TInetAddr & sym_addr, 241 pj_sockaddr &pj_addr, 242 int *addr_len) 243 { 244 pj_bzero(&pj_addr, sizeof(pj_sockaddr)); 245 pj_addr.addr.sa_family = (pj_uint16_t)sym_addr.Family(); 246 if (pj_addr.addr.sa_family == PJ_AF_INET) { 247 PJ_ASSERT_RETURN(*addr_len >= sizeof(pj_sockaddr_in), PJ_ETOOSMALL); 248 pj_addr.ipv4.sin_addr.s_addr = pj_htonl(sym_addr.Address()); 249 pj_addr.ipv4.sin_port = pj_htons((pj_uint16_t) sym_addr.Port()); 250 *addr_len = sizeof(pj_sockaddr_in); 251 } else if (pj_addr.addr.sa_family == PJ_AF_INET6) { 252 PJ_ASSERT_RETURN(*addr_len >= sizeof(pj_sockaddr_in6), PJ_ETOOSMALL); 253 const TIp6Addr & ip6 = sym_addr.Ip6Address(); 254 pj_memcpy(&pj_addr.ipv6.sin6_addr, ip6.u.iAddr8, 16); 255 pj_addr.ipv6.sin6_port = pj_htons((pj_uint16_t) sym_addr.Port()); 256 pj_addr.ipv6.sin6_scope_id = pj_htonl(sym_addr.Scope()); 257 pj_addr.ipv6.sin6_flowinfo = pj_htonl(sym_addr.FlowLabel()); 258 *addr_len = sizeof(pj_sockaddr_in6); 259 } else { 260 pj_assert(!"Unsupported address family"); 261 return PJ_EAFNOTSUP; 262 } 263 264 return PJ_SUCCESS; 238 265 } 239 266 240 267 241 268 // Convert pj_sockaddr_in to TInetAddr 242 static inline void pj2Addr(const pj_sockaddr_in &pj_addr, 243 TInetAddr & sym_addr) 244 { 245 sym_addr.Init(KAfInet); 246 sym_addr.SetAddress((TUint32)pj_ntohl(pj_addr.sin_addr.s_addr)); 247 sym_addr.SetPort(pj_ntohs(pj_addr.sin_port)); 269 static inline pj_status_t pj2Addr(const pj_sockaddr &pj_addr, 270 int addrlen, 271 TInetAddr & sym_addr) 272 { 273 if (pj_addr.addr.sa_family == PJ_AF_INET) { 274 PJ_ASSERT_RETURN(addrlen >= sizeof(pj_sockaddr_in), PJ_EINVAL); 275 sym_addr.Init(KAfInet); 276 sym_addr.SetAddress((TUint32)pj_ntohl(pj_addr.ipv4.sin_addr.s_addr)); 277 sym_addr.SetPort(pj_ntohs(pj_addr.ipv4.sin_port)); 278 } else if (pj_addr.addr.sa_family == PJ_AF_INET6) { 279 TIp6Addr ip6; 280 281 PJ_ASSERT_RETURN(addrlen >= sizeof(pj_sockaddr_in6), PJ_EINVAL); 282 pj_memcpy(ip6.u.iAddr8, &pj_addr.ipv6.sin6_addr, 16); 283 sym_addr.Init(KAfInet6); 284 sym_addr.SetAddress(ip6); 285 sym_addr.SetScope(pj_ntohl(pj_addr.ipv6.sin6_scope_id)); 286 sym_addr.SetFlowLabel(pj_ntohl(pj_addr.ipv6.sin6_flowinfo)); 287 } else { 288 pj_assert(!"Unsupported address family"); 289 } 290 return PJ_SUCCESS; 248 291 } 249 292 … … 254 297 255 298 // Get RHostResolver instance 256 RHostResolver & GetResolver() 257 { 258 return appHostResolver_ ? *appHostResolver_ : hostResolver_; 299 RHostResolver & GetResolver(int af) 300 { 301 if (af==PJ_AF_INET6) { 302 return appHostResolver6_ ? *appHostResolver6_ : hostResolver6_; 303 } else { 304 return appHostResolver_ ? *appHostResolver_ : hostResolver_; 305 } 259 306 } 260 307 … … 304 351 bool isResolverInitialized_; 305 352 RHostResolver hostResolver_; 353 RHostResolver hostResolver6_; 306 354 307 355 CConsoleBase* console_; … … 313 361 RConnection *appConnection_; 314 362 RHostResolver *appHostResolver_; 363 RHostResolver *appHostResolver6_; 315 364 316 365 private:
Note: See TracChangeset
for help on using the changeset viewer.