×
Namespaces

Variants
Actions
(Difference between revisions)

WISE Timeout

From Nokia Developer Wiki
Jump to: navigation, search
ebra (Talk | contribs)
hamishwillee (Talk | contribs)
m (Hamishwillee - Fix categories)
Line 1: Line 1:
 +
[[Category:Bluetooth]][[Category:Maemo]][[Category:Symbian]][[Category:Symbian C++]][[Category:Porting]]
 
== Description ==
 
== Description ==
  
Line 62: Line 63:
 
* [[Wireless Information Sharing Engine]]
 
* [[Wireless Information Sharing Engine]]
 
* [[WISE Protocol]]
 
* [[WISE Protocol]]
 
[[Category:Bluetooth]][[Category:Maemo]][[Category:S60]]
 

Revision as of 05:59, 2 May 2012

Contents

Description

When the device runs as a WISE server there is a need to stop the service after a timeout period if no client connects before it.

The waiting is done syncronously with the Maemo Platform and asyncronously with the S60 Platform.

Maemo Platform

int server_start(wise_server* server,int time_out)
{
struct sockaddr_rc client_addr = { 0 };
socklen_t opt = sizeof(client_addr);
char buf[50];
 
struct timeval timeout;
fd_set readfds;
int error;
 
memset(&timeout,0,sizeof(timeout));
timeout.tv_sec = time_out;
timeout.tv_usec = 0;
 
FD_ZERO(&readfds);
FD_SET(server->server_socket,&readfds);
 
/* put server socket into listening mode */
error = listen(server->server_socket,0);
if ( error ) return error;
 
select(server->server_socket+1,&readfds,NULL,NULL,&timeout);
 
if ( FD_ISSET(server->server_socket,&readfds) )
{
/* accept one connection */
server->client_socket = accept(server->server_socket,
(struct sockaddr *)&client_addr,&opt);
ba2str(&client_addr.rc_bdaddr,server->client_address);
server->client_connected = TRUE;
}
else
{
server->client_connected = FALSE;
return WISE_CONNECTION_ERROR;
}
return WISE_OK;
}

S60 Platform

// set to accept incoming connections, active object will handle
iServerSock.Accept(iClientSock,iStatus);
SetActive();
iServerSock.CancelAccept();

Links

53 page views in the last 30 days.
×