00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00031
00032 #pragma once
00033
00034 #include "../api_network.h"
00035 #include "../../Core/System/sharedptr.h"
00036
00037 class CL_Event;
00038 class CL_SocketName;
00039 class CL_UDPSocket_Impl;
00040
00044 class CL_API_NETWORK CL_UDPSocket
00045 {
00048
00049 public:
00050 CL_UDPSocket();
00051
00056 CL_UDPSocket(const CL_SocketName &local_name, bool force_bind = true);
00057
00062 CL_UDPSocket(int socket, bool close_socket);
00063
00064 ~CL_UDPSocket();
00065
00069
00070 public:
00071
00075 int get_handle() const;
00076
00080 CL_SocketName get_local_name() const;
00081
00085 CL_Event get_read_event();
00086
00090 CL_Event get_write_event();
00091
00095
00096 public:
00097
00102 void bind(const CL_SocketName &local_name, bool force_bind = true);
00103
00108 void set_handle(int socket, bool close_socket);
00109
00117 int send(const void *data, int len, const CL_SocketName &to);
00118
00126 int receive(void *data, int len, CL_SocketName &out_from);
00127
00135 int peek(void *data, int len, CL_SocketName &out_from);
00136
00140
00141 private:
00142 CL_SharedPtr<CL_UDPSocket_Impl> impl;
00144 };
00145