2008-08-08 20:30:57 +04:00
/*
Unix SMB / CIFS implementation .
async socket operations
Copyright ( C ) Volker Lendecke 2008
2009-05-29 16:14:50 +04:00
* * NOTE ! The following LGPL license applies to the async_sock
* * library . This does NOT imply that all of Samba is released
* * under the LGPL
2008-08-08 20:30:57 +04:00
2009-05-29 16:14:50 +04:00
This library is free software ; you can redistribute it and / or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation ; either
version 3 of the License , or ( at your option ) any later version .
This library is distributed in the hope that it will be useful ,
2008-08-08 20:30:57 +04:00
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2009-05-29 16:14:50 +04:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Library General Public License for more details .
2008-08-08 20:30:57 +04:00
2009-05-29 16:14:50 +04:00
You should have received a copy of the GNU Lesser General Public License
2008-08-08 20:30:57 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __ASYNC_SOCK_H__
# define __ASYNC_SOCK_H__
2009-06-08 10:15:57 +04:00
# include <talloc.h>
# include <tevent.h>
2008-08-08 20:30:57 +04:00
2010-12-26 18:03:58 +03:00
struct tevent_req * sendto_send ( TALLOC_CTX * mem_ctx , struct tevent_context * ev ,
int fd , const void * buf , size_t len , int flags ,
2010-12-29 10:46:08 +03:00
const struct sockaddr_storage * addr ) ;
2010-12-26 18:03:58 +03:00
ssize_t sendto_recv ( struct tevent_req * req , int * perrno ) ;
struct tevent_req * recvfrom_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
int fd , void * buf , size_t len , int flags ,
2010-12-29 10:46:08 +03:00
struct sockaddr_storage * addr ,
socklen_t * addr_len ) ;
2010-12-26 18:03:58 +03:00
ssize_t recvfrom_recv ( struct tevent_req * req , int * perrno ) ;
2009-02-23 10:56:35 +03:00
2009-02-22 21:49:18 +03:00
struct tevent_req * async_connect_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
int fd , const struct sockaddr * address ,
socklen_t address_len ) ;
int async_connect_recv ( struct tevent_req * req , int * perrno ) ;
2008-08-08 20:30:57 +04:00
2009-02-22 22:16:32 +03:00
struct tevent_req * writev_send ( TALLOC_CTX * mem_ctx , struct tevent_context * ev ,
2009-03-01 21:43:07 +03:00
struct tevent_queue * queue , int fd ,
2009-05-23 18:10:54 +04:00
bool err_on_readability ,
2009-03-01 21:43:07 +03:00
struct iovec * iov , int count ) ;
2009-02-22 22:16:32 +03:00
ssize_t writev_recv ( struct tevent_req * req , int * perrno ) ;
2009-02-23 01:13:34 +03:00
struct tevent_req * read_packet_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
int fd , size_t initial ,
ssize_t ( * more ) ( uint8_t * buf ,
size_t buflen ,
void * private_data ) ,
void * private_data ) ;
ssize_t read_packet_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
uint8_t * * pbuf , int * perrno ) ;
2011-07-26 17:06:44 +04:00
struct tevent_req * wait_for_read_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
int fd ) ;
bool wait_for_read_recv ( struct tevent_req * req , int * perr ) ;
2008-08-08 20:30:57 +04:00
# endif