Mercurial > cabal
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 } |
