added late init and setup timeout

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2001-08-24 19:27:17 +00:00
parent 70426fba08
commit 79da309276
2 changed files with 62 additions and 8 deletions

View File

@@ -194,6 +194,12 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data )
/* Global initialisers */ /* Global initialisers */
int GSocket_Init() int GSocket_Init()
{
return TRUE;
}
int GSocket_Verify_Inited() ;
int GSocket_Verify_Inited()
{ {
OSStatus err ; OSStatus err ;
#if TARGET_CARBON #if TARGET_CARBON
@@ -201,10 +207,16 @@ int GSocket_Init()
// however, documentation is unclear how this works // however, documentation is unclear how this works
OTClientContextPtr clientcontext; OTClientContextPtr clientcontext;
if ( gInetSvcRef )
return TRUE ;
InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext); InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext);
gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath,
NULL, &err, clientcontext); NULL, &err, clientcontext);
#else #else
if ( gInetSvcRef )
return TRUE ;
InitOpenTransport() ; InitOpenTransport() ;
gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err); gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err);
#endif #endif
@@ -213,7 +225,7 @@ int GSocket_Init()
OTAssert("Could not open Inet Services", err == noErr); OTAssert("Could not open Inet Services", err == noErr);
return FALSE ; return FALSE ;
} }
return TRUE; return TRUE ;
} }
void GSocket_Cleanup() void GSocket_Cleanup()
@@ -231,9 +243,13 @@ void GSocket_Cleanup()
GSocket *GSocket_new() GSocket *GSocket_new()
{ {
int i; int i;
GSocket *socket; GSocket *socket;
if ( GSocket_Verify_Inited() == FALSE )
return NULL ;
socket = (GSocket *)malloc(sizeof(GSocket)); socket = (GSocket *)malloc(sizeof(GSocket));
if (socket == NULL) if (socket == NULL)
@@ -251,8 +267,8 @@ GSocket *GSocket_new()
socket->m_server = FALSE; socket->m_server = FALSE;
socket->m_stream = TRUE; socket->m_stream = TRUE;
socket->m_non_blocking = FALSE; socket->m_non_blocking = FALSE;
socket->m_timeout = 10*60*1000; socket->m_timeout = 10*1000;
/* 10 minutes * 60 sec * 1000 millisec */ /* 10 sec * 1000 millisec */
socket->m_takesEvents = TRUE ; socket->m_takesEvents = TRUE ;
socket->m_mac_events = wxMacGetNotifierTable() ; socket->m_mac_events = wxMacGetNotifierTable() ;
return socket; return socket;
@@ -958,7 +974,9 @@ void GSocket_SetTimeout(GSocket *socket, unsigned long millisec)
{ {
assert(socket != NULL); assert(socket != NULL);
socket->m_timeout = millisec; // this is usually set too high and we have not yet been able to detect a closed
// stream, thus we leave the 10 sec timeout
// socket->m_timeout = millisec;
} }
/* GSocket_GetError: /* GSocket_GetError:
@@ -1054,6 +1072,8 @@ int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size)
OTByteCount sz = 0 ; OTByteCount sz = 0 ;
OTCountDataBytes( socket->m_endpoint , &sz ) ; OTCountDataBytes( socket->m_endpoint , &sz ) ;
if ( size > sz )
size = sz ;
res = OTRcv( socket->m_endpoint , buffer , size , &flags ) ; res = OTRcv( socket->m_endpoint , buffer , size , &flags ) ;
if ( res < 0 ) if ( res < 0 )
{ {
@@ -1249,6 +1269,8 @@ GSocketError _GAddress_translate_from(GAddress *address,
GSocketError _GAddress_translate_to(GAddress *address, GSocketError _GAddress_translate_to(GAddress *address,
InetAddress *addr) InetAddress *addr)
{ {
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
memset(addr, 0 , sizeof(struct InetAddress)); memset(addr, 0 , sizeof(struct InetAddress));
OTInitInetAddress( addr , address->m_port , address->m_host ) ; OTInitInetAddress( addr , address->m_port , address->m_host ) ;
return GSOCK_NOERROR; return GSOCK_NOERROR;
@@ -1273,6 +1295,9 @@ GSocketError GAddress_INET_SetHostName(GAddress *address, const char *hostname)
InetHostInfo hinfo ; InetHostInfo hinfo ;
OSStatus ret ; OSStatus ret ;
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
assert(address != NULL); assert(address != NULL);
CHECK_ADDRESS(address, INET, GSOCK_INVADDR); CHECK_ADDRESS(address, INET, GSOCK_INVADDR);
@@ -1369,6 +1394,8 @@ GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port)
GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, size_t sbuf) GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, size_t sbuf)
{ {
InetDomainName name ; InetDomainName name ;
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
assert(address != NULL); assert(address != NULL);
CHECK_ADDRESS(address, INET, GSOCK_INVADDR); CHECK_ADDRESS(address, INET, GSOCK_INVADDR);

View File

@@ -194,6 +194,12 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data )
/* Global initialisers */ /* Global initialisers */
int GSocket_Init() int GSocket_Init()
{
return TRUE;
}
int GSocket_Verify_Inited() ;
int GSocket_Verify_Inited()
{ {
OSStatus err ; OSStatus err ;
#if TARGET_CARBON #if TARGET_CARBON
@@ -201,10 +207,16 @@ int GSocket_Init()
// however, documentation is unclear how this works // however, documentation is unclear how this works
OTClientContextPtr clientcontext; OTClientContextPtr clientcontext;
if ( gInetSvcRef )
return TRUE ;
InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext); InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext);
gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath,
NULL, &err, clientcontext); NULL, &err, clientcontext);
#else #else
if ( gInetSvcRef )
return TRUE ;
InitOpenTransport() ; InitOpenTransport() ;
gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err); gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err);
#endif #endif
@@ -213,7 +225,7 @@ int GSocket_Init()
OTAssert("Could not open Inet Services", err == noErr); OTAssert("Could not open Inet Services", err == noErr);
return FALSE ; return FALSE ;
} }
return TRUE; return TRUE ;
} }
void GSocket_Cleanup() void GSocket_Cleanup()
@@ -231,9 +243,13 @@ void GSocket_Cleanup()
GSocket *GSocket_new() GSocket *GSocket_new()
{ {
int i; int i;
GSocket *socket; GSocket *socket;
if ( GSocket_Verify_Inited() == FALSE )
return NULL ;
socket = (GSocket *)malloc(sizeof(GSocket)); socket = (GSocket *)malloc(sizeof(GSocket));
if (socket == NULL) if (socket == NULL)
@@ -251,8 +267,8 @@ GSocket *GSocket_new()
socket->m_server = FALSE; socket->m_server = FALSE;
socket->m_stream = TRUE; socket->m_stream = TRUE;
socket->m_non_blocking = FALSE; socket->m_non_blocking = FALSE;
socket->m_timeout = 10*60*1000; socket->m_timeout = 10*1000;
/* 10 minutes * 60 sec * 1000 millisec */ /* 10 sec * 1000 millisec */
socket->m_takesEvents = TRUE ; socket->m_takesEvents = TRUE ;
socket->m_mac_events = wxMacGetNotifierTable() ; socket->m_mac_events = wxMacGetNotifierTable() ;
return socket; return socket;
@@ -958,7 +974,9 @@ void GSocket_SetTimeout(GSocket *socket, unsigned long millisec)
{ {
assert(socket != NULL); assert(socket != NULL);
socket->m_timeout = millisec; // this is usually set too high and we have not yet been able to detect a closed
// stream, thus we leave the 10 sec timeout
// socket->m_timeout = millisec;
} }
/* GSocket_GetError: /* GSocket_GetError:
@@ -1054,6 +1072,8 @@ int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size)
OTByteCount sz = 0 ; OTByteCount sz = 0 ;
OTCountDataBytes( socket->m_endpoint , &sz ) ; OTCountDataBytes( socket->m_endpoint , &sz ) ;
if ( size > sz )
size = sz ;
res = OTRcv( socket->m_endpoint , buffer , size , &flags ) ; res = OTRcv( socket->m_endpoint , buffer , size , &flags ) ;
if ( res < 0 ) if ( res < 0 )
{ {
@@ -1249,6 +1269,8 @@ GSocketError _GAddress_translate_from(GAddress *address,
GSocketError _GAddress_translate_to(GAddress *address, GSocketError _GAddress_translate_to(GAddress *address,
InetAddress *addr) InetAddress *addr)
{ {
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
memset(addr, 0 , sizeof(struct InetAddress)); memset(addr, 0 , sizeof(struct InetAddress));
OTInitInetAddress( addr , address->m_port , address->m_host ) ; OTInitInetAddress( addr , address->m_port , address->m_host ) ;
return GSOCK_NOERROR; return GSOCK_NOERROR;
@@ -1273,6 +1295,9 @@ GSocketError GAddress_INET_SetHostName(GAddress *address, const char *hostname)
InetHostInfo hinfo ; InetHostInfo hinfo ;
OSStatus ret ; OSStatus ret ;
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
assert(address != NULL); assert(address != NULL);
CHECK_ADDRESS(address, INET, GSOCK_INVADDR); CHECK_ADDRESS(address, INET, GSOCK_INVADDR);
@@ -1369,6 +1394,8 @@ GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port)
GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, size_t sbuf) GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, size_t sbuf)
{ {
InetDomainName name ; InetDomainName name ;
if ( GSocket_Verify_Inited() == FALSE )
return GSOCK_IOERR ;
assert(address != NULL); assert(address != NULL);
CHECK_ADDRESS(address, INET, GSOCK_INVADDR); CHECK_ADDRESS(address, INET, GSOCK_INVADDR);