comparison sources/network.cpp @ 4:a7051ac7118b

added primary parser implementation renamed some functions to well-formed format bool => false, pointers => NULL removed useless eTime()
author Vlad Glagolev <enqlave@gmail.com>
date Thu, 24 Jan 2008 19:38:34 +0300
parents 19227b0b7cc1
children 0faceb076254
comparison
equal deleted inserted replaced
3:cd60300cae0b 4:a7051ac7118b
17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
19 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 */ 20 */
21 21
22 #include "cabal.hpp" // required: network.hpp 22 #include "cabal.hpp" // required: network.hpp
23 23
24 Network::Network() 24 Network::Network()
25 { 25 {
26 cout << "NETWORK: going online...\n"; 26 cout << "NETWORK: going online...\n";
27 } 27 }
28 28
29 Network::~Network() 29 Network::~Network()
30 { 30 {
31 socketClose(); 31 closeSocket();
32 32
33 cout << "NETWORK: offline\n"; 33 cout << "NETWORK: offline\n";
34 } 34 }
35 35
36 void Network::sendMsg(string m) 36 void Network::sendMsg(string m)
86 } 86 }
87 87
88 return ""; 88 return "";
89 } 89 }
90 90
91 bool Network::hostResolve(pchar name, struct address_type *a, int inet) 91 bool Network::resolveHost(pchar name, struct address_type *a, int inet)
92 { 92 {
93 #ifdef ENABLE_IPV6 93 #ifdef ENABLE_IPV6
94
95 bool e = 0; 94 bool e = 0;
96 95
97 struct addrinfo hints, *res, *reso; 96 struct addrinfo hints, *res, *reso;
98 struct sockaddr_in *in; 97 struct sockaddr_in *in;
99 struct sockaddr_in6 *in6; 98 struct sockaddr_in6 *in6;
136 } 135 }
137 136
138 freeaddrinfo(reso); 137 freeaddrinfo(reso);
139 138
140 return e; 139 return e;
141
142 #else 140 #else
143
144 if (inet && inet != AF_INET) 141 if (inet && inet != AF_INET)
145 return 0; 142 return 0;
146 143
147 a->inet = AF_INET; 144 a->inet = AF_INET;
148 145
155 return 0; 152 return 0;
156 } else 153 } else
157 memcpy(&a->sa.sin_addr.s_addr, he->h_addr_list[0], he->h_length); 154 memcpy(&a->sa.sin_addr.s_addr, he->h_addr_list[0], he->h_length);
158 155
159 return 1; 156 return 1;
160
161 #endif // ENABLE_IPV6 157 #endif // ENABLE_IPV6
162 } 158 }
163 159
164 bool Network::tcpActivate (int port, pchar host) 160 bool Network::activateTCP(int port, pchar host)
165 { 161 {
166 cs = socket(address.inet, SOCK_STREAM, IPPROTO_TCP); 162 cs = socket(address.inet, SOCK_STREAM, IPPROTO_TCP);
167 163
168 if (cs == -1) 164 if (cs == -1)
169 return 0; 165 return 0;
170 166
171 if (host) { 167 if (host) {
172 struct address_type a; 168 struct address_type a;
173 169
174 if (!hostResolve(host, &a, address.inet)) { 170 if (!resolveHost(host, &a, address.inet)) {
175 close(cs); 171 close(cs);
176 return 0; 172 return 0;
177 } 173 }
178 174
179 int e; 175 int e;
214 cout << "NETWORK: socket opened........... " << cs << endl; 210 cout << "NETWORK: socket opened........... " << cs << endl;
215 211
216 return 1; 212 return 1;
217 } 213 }
218 214
219 bool Network::hostOpen() 215 bool Network::openHost()
220 { 216 {
221 int e; 217 int e;
222 #ifdef ENABLE_IPV6 218 #ifdef ENABLE_IPV6
223 if (address.inet == AF_INET6) 219 if (address.inet == AF_INET6)
224 e = connect(cs, (struct sockaddr *)&address.sa6, sizeof(address.sa6)); 220 e = connect(cs, (struct sockaddr *)&address.sa6, sizeof(address.sa6));
233 229
234 return 1; 230 return 1;
235 } 231 }
236 232
237 if (errno != EWOULDBLOCK && errno != EINPROGRESS && errno != EALREADY) { 233 if (errno != EWOULDBLOCK && errno != EINPROGRESS && errno != EALREADY) {
238 socketClose(); 234 closeSocket();
239 235
240 connecting = 0; 236 connecting = 0;
241 237
242 return 0; 238 return 0;
243 } 239 }
251 cout << "NETWORK: socket connected........ " << cs << endl; 247 cout << "NETWORK: socket connected........ " << cs << endl;
252 248
253 return 1; 249 return 1;
254 } 250 }
255 251
256 bool Network::socketClose() 252 bool Network::closeSocket()
257 { 253 {
258 if (cs == -1) 254 if (cs == -1)
259 return 0; 255 return 0;
260 256
261 close (cs); 257 close(cs);
262 258
263 cs = -1; 259 cs = -1;
264 260
265 return 1; 261 return 1;
266 } 262 }