axutil_network_handler.h

00001 
00002 /*
00003  * Copyright 2004,2005 The Apache Software Foundation.
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License");
00006  * you may not use this file except in compliance with the License.
00007  * You may obtain count copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef AXUTIL_NETWORK_HANDLER_H
00019 #define AXUTIL_NETWORK_HANDLER_H
00020 
00021 #include <axutil_utils.h>
00022 #include <axutil_utils_defines.h>
00023 #include <axutil_env.h>
00024 #include <sys/types.h>
00025 #include <platforms/axutil_platform_auto_sense.h>
00026 
00027 #ifdef __cplusplus
00028 extern "C"
00029 {
00030 #endif
00031 
00044     AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00045 
00046     axutil_network_handler_open_socket(
00047         const axutil_env_t * env,
00048         char *server,
00049         int port);
00050 
00056     AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00057 
00058     axutil_network_handler_create_server_socket(
00059         const axutil_env_t * env,
00060         int port);
00061 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068 
00069     axutil_network_handler_close_socket(
00070         const axutil_env_t * env,
00071         axis2_socket_t socket);
00072 
00080     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00081 
00082     axutil_network_handler_set_sock_option(
00083         const axutil_env_t * env,
00084         axis2_socket_t socket,
00085         int option,
00086         int value);
00087 
00093     AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00094 
00095     axutil_network_handler_svr_socket_accept(
00096         const axutil_env_t * env,
00097         axis2_socket_t socket);
00098 
00104     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00105     axutil_network_handler_get_svr_ip(
00106         const axutil_env_t * env,
00107         axis2_socket_t socket);
00108 
00109     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00110     axutil_network_handler_get_peer_ip(
00111         const axutil_env_t * env,
00112         axis2_socket_t socket);
00113 
00114         /* 
00115          * Create a datagram socket. 
00116          * @param env pointer to env
00117          * @return a datagram socket
00118          */
00119         AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00120         axutil_network_handler_open_dgram_socket(const axutil_env_t *env);
00121 
00122         /*
00123          * Send a UDP packet to the given source and port address.
00124          * Read a incoming UDP packet from the port and server address.
00125          * @param env pointer to the env structure
00126          * @param socket a datagram socket
00127          * @param buffer a buffer containing the data to be sent
00128          * @param buf_len length of the buffer
00129          * @param addr address of the source field
00130          * @param port udp port number
00131          * @return success if everything goes well
00132          */
00133         AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00134         axutil_network_handler_send_dgram(const axutil_env_t *env, axis2_socket_t socket, 
00135                                                                  axis2_char_t *buff, int *buf_len, 
00136                                                                  axis2_char_t *addr, int dest_port, int *source_port);
00137 
00138         /* 
00139          * Read a incoming UDP packet from the port and server address.
00140          * @param env pointer to the env structure
00141          * @param socket a datagram socket
00142          * @param buffer a buffer allocated and passed to be filled
00143          * @param buf_len length of the buffer allocated. In return buffer len 
00144                           contains the length of the data read
00145          * @param addr address of the sender. This is a return value.
00146          * @param port senders port address. Return value
00147          * @return if everything goes well return success 
00148          */
00149         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00150         axutil_network_handler_read_dgram(const axutil_env_t *env, axis2_socket_t socket, 
00151                                                                          axis2_char_t *buffer, int *buf_len,
00152                                                                          axis2_char_t **addr, int *port);
00153 
00154         /* 
00155          * Create a datagram socket to receive incoming UDP packets.
00156          * @param env a pointer to the env structure
00157          * @param port udp port to listen
00158          * @return AXIS2_SUCCESS if everything goes well
00159          */
00160         AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00161         axutil_network_handler_create_dgram_svr_socket(
00162                                                                         const axutil_env_t *env, 
00163                                                                         int port);
00164 
00165         /* 
00166          * Bind a socket to the specified address
00167          * @param env a pointer to the env structure
00168          * @param sock socket
00169          * @param port port number to bind to
00170          * @return AXIS2_SUCCESS if binding is performed
00171          */
00172         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00173         axutil_network_handler_bind_socket(const axutil_env_t *env, 
00174                                                                         axis2_socket_t sock, int port);
00175 
00176         /* 
00177          * Create a multicast socket for listening on the given port. 
00178          * @param env a pointer to the env structure
00179          * @param port udp port to listen
00180          * @param mul_addr multicast address to join. The address should be valid and in dotted format.
00181          * @param ttl TTL value. 
00182          * @return AXIS2_SUCCESS if everything goes well.s
00183          */
00184         AXIS2_EXTERN axis2_socket_t AXIS2_CALL
00185         axutil_network_hadler_create_multicast_svr_socket(const axutil_env_t *env, 
00186                                                                         int port, axis2_char_t *mul_addr);
00187 
00190 #ifdef __cplusplus
00191 }
00192 #endif
00193 
00194 #endif                          /* AXIS2_NETWORK_HANDLER_H */

Generated on Fri Apr 17 11:49:42 2009 for Axis2/C by  doxygen 1.5.3