/branches/singlestack/binding-c/runtime/c/include/etch_udp_connection.h
C Header | 95 lines | 47 code | 19 blank | 29 comment | 0 complexity | 05ec461186fb847ae84d0921e24d5258 MD5 | raw file
Possible License(s): Apache-2.0
- /* $Id$
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version
- * 2.0 (the "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*
- * etch_connection.h
- * connection client and server classes - udp
- */
- #ifndef _ETCH_UDP_CONNECTION_H_
- #define _ETCH_UDP_CONNECTION_H_
- #include "apr_thread_proc.h"
- #include "etch_connection.h"
- #include "etch_transport_packet.h"
- #include "etch_transportint.h"
- #include "etch_session_packet.h"
- #include "etch_url.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct etch_udp_client;
- /*
- * udp specific connection type
- */
- typedef struct etch_udp_connection
- {
- ETCH_TRANSPORT_CONNECTION_COMMON_TYPES;
- struct etch_udp_client* rcvlxr; /* owned */
- i_transportpacket* itp; /* owned */
- i_sessionpacket* session; /* not owned */
- boolean is_server;
- apr_sockaddr_t *remote_addr;
- unsigned char is_reuseaddr;
- unsigned char is_broadcast;
- unsigned char is_session_owned;
- } etch_udp_connection;
- /**
- * etch_udp_client
- * udp client listener class
- */
- typedef struct etch_udp_client
- {
- ETCH_CLIENT_COMMON_TYPES;
-
- etch_udp_connection* cxlisten; /* not owned */
- } etch_udp_client;
- //extern unsigned connection_id_farm;
- int is_good_udp_params(etch_url*, void* resources, etch_rawsocket*);
- etch_udp_connection* new_udp_connection(etch_url*, void* resources, etch_rawsocket*);
- int init_etch_udpconx_interfaces (etch_udp_connection*);
- int new_udpsocket (apr_socket_t**, apr_pool_t*);
- int destroy_etch_udp_connection(void* thisx);
- int etch_udpconx_start(etch_udp_connection*);
- int etch_udpclient_start_listener (etch_udp_connection*);
- int etch_udpconx_open (etch_udp_connection*, const int is_reconnect);
- int etch_udpconx_close(etch_udp_connection*);
- int etch_udpclient_send(etch_udp_connection *conx, etch_who* whoto, unsigned char* buf, const size_t totallen, int* rc);
- int etch_udpclient_sendex (etch_udp_connection *conx, etch_who* whoto, unsigned char* buf, const size_t totallen, const int timeout_ms, int* rc);
- int etch_udpclient_receive (etch_udp_connection*, unsigned char*, const size_t, int*);
- int etch_udpclient_receivex(etch_udp_connection*, unsigned char*, const size_t, const int, int*);
- int etch_udpclient_stop_listener (etch_udp_connection*);
- #ifdef __cplusplus
- }
- #endif
- #endif /* _ETCH_UDP_CONNECTION_H_ */