static HB_GARBAGE_FUNC( hb_inetSocketFinalize ) { PHB_SOCKET_STRUCT socket = ( PHB_SOCKET_STRUCT ) Cargo; if( socket->sd != HB_NO_SOCKET ) hb_inetCloseSocket( socket, HB_TRUE ); else hb_inetCloseStream( socket ); if( socket->pPeriodicBlock ) { hb_itemRelease( socket->pPeriodicBlock ); socket->pPeriodicBlock = NULL; } if( socket->remote ) { hb_xfree( socket->remote ); socket->remote = NULL; } if( socket->buffer ) { hb_xfree( socket->buffer ); socket->buffer = NULL; } }
static HB_GARBAGE_FUNC( hb_inetSocketFinalize ) { PHB_SOCKET_STRUCT socket = ( PHB_SOCKET_STRUCT ) Cargo; if( socket->sd != HB_NO_SOCKET ) { hb_socketShutdown( socket->sd, HB_SOCKET_SHUT_RDWR ); hb_inetCloseSocket( socket ); } if( socket->pPeriodicBlock ) { hb_itemRelease( socket->pPeriodicBlock ); socket->pPeriodicBlock = NULL; } if( socket->remote ) { hb_xfree( socket->remote ); socket->remote = NULL; } if( socket->buffer ) { hb_xfree( socket->buffer ); socket->buffer = NULL; } hb_inetCloseStream( socket ); }
static int hb_inetCloseSocket( PHB_SOCKET_STRUCT socket, HB_BOOL fShutDown ) { int ret; hb_inetCloseStream( socket ); if( fShutDown ) hb_socketShutdown( socket->sd, HB_SOCKET_SHUT_RDWR ); ret = hb_socketClose( socket->sd ); socket->sd = HB_NO_SOCKET; socket->inbuffer = 0; return ret; }
HB_BOOL hb_znetInetInitialize( PHB_ITEM pItem, PHB_ZNETSTREAM pStream, HB_INET_RFUNC recvFunc, HB_INET_SFUNC sendFunc, HB_INET_FFUNC flushFunc, HB_INET_CFUNC cleanFunc ) { PHB_SOCKET_STRUCT socket = ( PHB_SOCKET_STRUCT ) hb_itemGetPtrGC( pItem, &s_gcInetFuncs ); if( socket ) { hb_inetCloseStream( socket ); socket->recvFunc = recvFunc; socket->sendFunc = sendFunc; socket->flushFunc = flushFunc; socket->cleanFunc = cleanFunc; socket->stream = pStream; return HB_TRUE; } hb_inetErrRT(); return HB_FALSE; }