|
| |||||||||||||
#include "libjwgc.h"Go to the source code of this file.
Functions | |
| jwgconn | jwg_new () |
| jwgconn | jwg_server () |
| void | jwg_delete (jwgconn jwg) |
| void | jwg_cleanup (jwgconn jwg) |
| void | jwg_event_handler (jwgconn jwg, jwgconn_packet_h h) |
| void | jwg_start (jwgconn jwg) |
| void | jwg_servstart (jwgconn jwg) |
| void | jwg_reset (jwgconn jwg) |
| void | jwg_stop (jwgconn jwg) |
| int | jwg_getfd (jwgconn jwg) |
| void | jwg_send (jwgconn jwg, xode x) |
| void | jwg_servsend (jwgconn jwg, xode x) |
| void | jwg_serverror (jwgconn jwg, char *text) |
| void | jwg_servsuccess (jwgconn jwg, char *text) |
| void | jwg_send_raw (jwgconn jwg, const char *str) |
| void | jwg_servsend_raw (jwgconn jwg, const char *str) |
| int | jwg_sockselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) |
| int | jwg_sockrecv (int sockfd, char *buf, size_t maxsize) |
| int | jwg_socksend (int sockfd, char *buf, size_t len) |
| void | jwg_recv (jwgconn jwg) |
| void | jwg_servrecv (jwgconn jwg) |
| void | jwg_poll (jwgconn jwg, int timeout) |
| void | jwg_servpoll (jwgconn jwg, int timeout) |
| jwgpacket | jwgpacket_new (xode x) |
| jwgpacket | jwgpacket_reset (jwgpacket p) |
|
|
Definition at line 107 of file JXMLComm.c. References jwgconn, and jwgconn_struct::sckfd. Referenced by jwg_on_event_handler(). 00108 {
00109 if (!jwg)
00110 return;
00111 if (jwg->sckfd == -1)
00112 return;
00113
00114 close(jwg->sckfd);
00115 jwg->sckfd = -1;
00116 }
|
|
|
Definition at line 97 of file JXMLComm.c. References jwg_stop(), jwgconn, jwgconn_struct::p, and xode_pool_free(). 00098 {
00099 if (!jwg)
00100 return;
00101
00102 jwg_stop(jwg);
00103 xode_pool_free(jwg->p);
00104 }
|
|
||||||||||||
|
Definition at line 126 of file JXMLComm.c. References jwgconn, and jwgconn_struct::on_packet. Referenced by check_live_jwgc(), jctl_do_sendrecv(), jwgc_init(), and main(). 00127 {
00128 if (!jwg)
00129 return;
00130
00131 jwg->on_packet = h;
00132 }
|
|
|
Definition at line 243 of file JXMLComm.c. References jwgconn_struct::fd, and jwgconn. Referenced by check_live_jwgc(), jctl_do_sendrecv(), jwgc_init(), and main(). 00244 {
00245 if (jwg) {
00246 return jwg->fd;
00247 }
00248 else {
00249 return -1;
00250 }
00251 }
|
|
|
Definition at line 40 of file JXMLComm.c. References jwgconn_struct::fd, jwgconn, jwgconn_struct::p, jwgconn_struct::sckfd, jwgconn_struct::state, xode_pool, xode_pool_mallocx(), and xode_pool_new(). Referenced by check_live_jwgc(), jctl_do_sendrecv(), and main(). 00041 {
00042 xode_pool p;
00043 jwgconn jwg;
00044
00045 p = xode_pool_new();
00046 if (!p)
00047 return (NULL);
00048 jwg = xode_pool_mallocx(p, sizeof(jwgconn_struct), 0);
00049 if (!jwg)
00050 return (NULL);
00051 jwg->p = p;
00052
00053 jwg->state = JWGCONN_STATE_OFF;
00054 jwg->fd = -1;
00055 jwg->sckfd = -1;
00056
00057 return jwg;
00058 }
|
|
||||||||||||
|
Definition at line 674 of file JXMLComm.c. References jwgconn_struct::fd, jwg_recv(), jwg_sockselect(), jwgconn, NULL, and jwgconn_struct::state. Referenced by check_live_jwgc(), jctl_do_sendrecv(), and main(). 00675 {
00676 fd_set fds;
00677 FILE *selfd;
00678 struct timeval tv;
00679
00680 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00681 return;
00682
00683 FD_ZERO(&fds);
00684 FD_SET(jwg->fd, &fds);
00685 selfd = (FILE *) jwg->fd;
00686
00687 if (timeout < 0) {
00688 if (jwg_sockselect((int) selfd + 1, &fds, NULL, NULL, NULL) > 0)
00689 jwg_recv(jwg);
00690 }
00691 else {
00692 tv.tv_sec = 0;
00693 tv.tv_usec = timeout;
00694
00695 if (jwg_sockselect((int) selfd + 1, &fds, NULL, NULL, &tv) > 0)
00696 jwg_recv(jwg);
00697 }
00698 }
|
|
|
Definition at line 529 of file JXMLComm.c. References dJWG, dParser, dprintf(), errno, jwgconn_struct::fd, jwg_sockrecv(), jwg_sockselect(), jwgconn, NULL, jwgconn_struct::parser, jwgconn_struct::state, XML_ErrorString(), XML_GetCurrentByteIndex(), XML_GetCurrentColumnNumber(), XML_GetCurrentLineNumber(), XML_GetErrorCode(), and XML_Parse(). Referenced by jwg_poll(). 00530 {
00531 char *fullbuf;
00532 static char buf[4096];
00533 int len, totallen, fromlen, errcode;
00534 struct sockaddr_in from;
00535 fd_set fds;
00536 FILE *selfd;
00537 struct timeval tv;
00538
00539 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00540 return;
00541
00542 fullbuf = (char *) malloc(sizeof(char));
00543 fullbuf[0] = '\0';
00544 totallen = 0;
00545
00546 FD_ZERO(&fds);
00547 FD_SET(jwg->fd, &fds);
00548 selfd = (FILE *) jwg->fd;
00549 tv.tv_sec = 0;
00550 tv.tv_usec = 100000;
00551
00552 while (jwg_sockselect((int) selfd + 1, &fds, NULL, NULL, &tv) > 0) {
00553 len = jwg_sockrecv(jwg->fd, buf, sizeof(buf) - 1);
00554 if (len <= 0) {
00555 break;
00556 }
00557 dprintf(dJWG, " in piece[%d]: %s\n", len, buf);
00558 fullbuf = (char *) realloc(fullbuf, strlen(fullbuf) + strlen(buf) + 1);
00559 strcat(fullbuf, buf);
00560 totallen += len;
00561 }
00562 /*
00563 while ((len = jwg_sockrecv(jwg->fd, buf, sizeof(buf) - 1)) > 0) {
00564 dprintf(dJWG, " in piece[%d]: %s\n", len, buf);
00565 fullbuf = (char *) realloc(fullbuf, strlen(fullbuf) + strlen(buf) + 1);
00566 strcat(fullbuf, buf);
00567 totallen += len;
00568 }
00569 */
00570
00571 if (totallen > 0) {
00572 dprintf(dJWG, " in[%d]: %s\n", totallen, fullbuf);
00573 errcode = XML_Parse(jwg->parser, fullbuf, totallen - 1, 0);
00574 dprintf(dParser, "parser index %d, line %d, col %d\n", XML_GetCurrentByteIndex(jwg->parser), XML_GetCurrentLineNumber(jwg->parser), XML_GetCurrentColumnNumber(jwg->parser));
00575 if (errcode == 0) {
00576 dprintf(dParser, "parser error %d at byte %d: %s\n", XML_GetErrorCode(jwg->parser), XML_GetCurrentByteIndex(jwg->parser), XML_ErrorString(XML_GetErrorCode(jwg->parser)));
00577 }
00578 else {
00579 dprintf(dParser, "parser complete\n");
00580 }
00581 }
00582 else {
00583 dprintf(dJWG, "jwg_recv: read failed, %d:%d:%s\n", totallen, errno, strerror(errno));
00584 }
00585
00586 free(fullbuf);
00587 }
|
|
|
Definition at line 205 of file JXMLComm.c. References jwgconn, NULL, jwgconn_struct::parser, XML_ParserCreate(), XML_ParserFree(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), and XML_SetUserData(). Referenced by jwg_servrecv(). 00206 {
00207 XML_ParserFree(jwg->parser);
00208 jwg->parser = XML_ParserCreate(NULL);
00209 XML_SetUserData(jwg->parser, (void *) jwg);
00210 XML_SetElementHandler(jwg->parser, jwg_startElement, jwg_endElement);
00211 XML_SetCharacterDataHandler(jwg->parser, jwg_charData);
00212 }
|
|
||||||||||||
|
Definition at line 261 of file JXMLComm.c. References dJWG, dprintf(), errno, jwgconn_struct::fd, jwg_sockselect(), jwg_socksend(), jwgconn, NULL, jwgconn_struct::state, xode, and xode_to_str(). Referenced by check_live_jwgc(), jctl_do_sendrecv(), and main(). 00262 {
00263 char *buf = xode_to_str(x);
00264 fd_set fds;
00265 FILE *selfd;
00266 struct timeval tv;
00267 int numwrote, totalsize, len, ret;
00268
00269 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00270 return;
00271
00272 if (!buf)
00273 return;
00274
00275 FD_ZERO(&fds);
00276 FD_SET(jwg->fd, &fds);
00277 selfd = (FILE *) jwg->fd;
00278 tv.tv_sec = 0;
00279 tv.tv_usec = 100000;
00280
00281 ret = jwg_sockselect((int) selfd + 1, NULL, &fds, NULL, &tv);
00282 if (ret < 0) {
00283 dprintf(dJWG, "Error on select: %s\n", strerror(errno));
00284 return;
00285 }
00286 else if (ret == 0) {
00287 dprintf(dJWG, "Time expired while waiting to write.\n");
00288 return;
00289 }
00290
00291 totalsize = strlen(buf) + 1;
00292 numwrote = 0;
00293 while (numwrote < totalsize) {
00294 /*
00295 len = send(jwg->fd, buf, totalsize - numwrote, 0);
00296 */
00297 len = jwg_socksend(jwg->fd, buf, totalsize - numwrote);
00298 if (len < 0) {
00299 dprintf(dJWG, "Error writing to socket: %s\n", strerror(errno));
00300 break;
00301 }
00302 numwrote += len;
00303 dprintf(dJWG, "sent %d bytes, %d wrote out of %d\n", len, numwrote, totalsize);
00304 buf += len;
00305 }
00306 dprintf(dJWG, "out[%d]: %s\n", totalsize, buf);
00307 }
|
|
||||||||||||
|
Definition at line 409 of file JXMLComm.c. References dJWG, dprintf(), jwgconn_struct::fd, jwgconn, and jwgconn_struct::state. 00410 {
00411 if (jwg && jwg->state != JWGCONN_STATE_OFF)
00412 write(jwg->fd, str, strlen(str));
00413 dprintf(dJWG, "out: %s\n", str);
00414 }
|
|
|
Definition at line 69 of file JXMLComm.c. References jwgconn_struct::fd, jwgconn, jwgconn_struct::p, jwgconn_struct::sckfd, jwgconn_struct::state, xode_pool, xode_pool_mallocx(), and xode_pool_new(). Referenced by jwgc_init(). 00070 {
00071 xode_pool p;
00072 jwgconn jwg;
00073
00074 p = xode_pool_new();
00075 if (!p)
00076 return (NULL);
00077 jwg = xode_pool_mallocx(p, sizeof(jwgconn_struct), 0);
00078 if (!jwg)
00079 return (NULL);
00080 jwg->p = p;
00081
00082 jwg->state = JWGCONN_STATE_OFF;
00083 jwg->fd = -1;
00084 jwg->sckfd = -1;
00085
00086 return jwg;
00087 }
|
|
||||||||||||
|
Definition at line 373 of file JXMLComm.c. References jwg_servsend(), jwgconn, xode, xode_free(), xode_insert_cdata(), and xode_new(). Referenced by jwg_on_event_handler(). 00374 {
00375 xode out;
00376
00377 out = xode_new("error");
00378 xode_insert_cdata(out, text, strlen(text));
00379 jwg_servsend(jwg, out);
00380 xode_free(out);
00381 }
|
|
||||||||||||
|
Definition at line 708 of file JXMLComm.c. References jwgconn_struct::fd, jwg_servrecv(), jwg_sockselect(), jwgconn, NULL, and jwgconn_struct::state. 00709 {
00710 fd_set fds;
00711 FILE *selfd;
00712 struct timeval tv;
00713
00714 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00715 return;
00716
00717 FD_ZERO(&fds);
00718 FD_SET(jwg->fd, &fds);
00719 selfd = (FILE *) jwg->fd;
00720
00721
00722 if (timeout < 0) {
00723 if (select((int) selfd + 1, &fds, NULL, NULL, NULL) > 0)
00724 jwg_servrecv(jwg);
00725 }
00726 else {
00727 tv.tv_sec = 0;
00728 tv.tv_usec = timeout;
00729
00730 if (jwg_sockselect((int) selfd + 1, &fds, NULL, NULL, &tv) > 0)
00731 jwg_servrecv(jwg);
00732 }
00733 }
|
|
|
Definition at line 596 of file JXMLComm.c. References dJWG, dParser, dprintf(), errno, jwgconn_struct::fd, jwg_reset(), jwg_sockrecv(), jwg_sockselect(), jwgconn, NULL, jwgconn_struct::parser, jwgconn_struct::sckfd, jwgconn_struct::state, XML_ErrorString(), XML_GetCurrentByteIndex(), XML_GetCurrentColumnNumber(), XML_GetCurrentLineNumber(), XML_GetErrorCode(), and XML_Parse(). Referenced by jwg_servpoll(), and jwgc_init(). 00597 {
00598 char *fullbuf;
00599 static char buf[4096];
00600 int len, totallen, fromlen, errcode;
00601 struct sockaddr_in from;
00602 fd_set fds;
00603 FILE *selfd;
00604 struct timeval tv;
00605 struct linger li;
00606
00607 li.l_onoff = 1;
00608 li.l_linger = 900;
00609
00610 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00611 return;
00612
00613 fullbuf = (char *) malloc(sizeof(char));
00614 fullbuf[0] = '\0';
00615 totallen = 0;
00616
00617 fromlen = sizeof(from);
00618 jwg->sckfd = accept(jwg->fd, (struct sockaddr *) & from, &fromlen);
00619 if (jwg->sckfd < 0) {
00620 dprintf(dJWG, "jwg_recv: accept failed, %d:%s\n", errno, strerror(errno));
00621 return;
00622 }
00623
00624 if (setsockopt(jwg->sckfd, SOL_SOCKET, SO_LINGER, (char *)&li,
00625 sizeof(li)) == -1) {
00626 dprintf(dJWG, "jwg_recv: set linger failed, %d:%s\n", errno, strerror(errno));
00627 return;
00628 }
00629
00630 FD_ZERO(&fds);
00631 FD_SET(jwg->sckfd, &fds);
00632 selfd = (FILE *) jwg->sckfd;
00633 tv.tv_sec = 0;
00634 tv.tv_usec = 100000;
00635
00636 while (jwg_sockselect((int) selfd + 1, &fds, NULL, NULL, &tv) > 0) {
00637 len = jwg_sockrecv(jwg->sckfd, buf, sizeof(buf) - 1);
00638 if (len <= 0) {
00639 break;
00640 }
00641 dprintf(dJWG, " in piece[%d]: %s\n", len, buf);
00642 fullbuf = (char *) realloc(fullbuf, strlen(fullbuf) + strlen(buf) + 1);
00643 strcat(fullbuf, buf);
00644 totallen += len;
00645 }
00646
00647 if (totallen > 0) {
00648 dprintf(dJWG, " in[%d]: %s\n", totallen, fullbuf);
00649 errcode = XML_Parse(jwg->parser, fullbuf, totallen - 1, 0);
00650 dprintf(dParser, "parser index %d, line %d, col %d\n", XML_GetCurrentByteIndex(jwg->parser), XML_GetCurrentLineNumber(jwg->parser), XML_GetCurrentColumnNumber(jwg->parser));
00651 if (errcode == 0) {
00652 dprintf(dParser, "parser error %d at byte %d: %s\n", XML_GetErrorCode(jwg->parser), XML_GetCurrentByteIndex(jwg->parser), XML_ErrorString(XML_GetErrorCode(jwg->parser)));
00653 }
00654 else {
00655 dprintf(dParser, "parser complete\n");
00656 }
00657 jwg_reset(jwg);
00658 }
00659 else {
00660 dprintf(dJWG, "jwg_servrecv: read failed, %d:%d:%s\n", totallen, errno, strerror(errno));
00661 }
00662
00663 free(fullbuf);
00664 }
|
|
||||||||||||
|
Definition at line 317 of file JXMLComm.c. References dJWG, dprintf(), errno, jwg_sockselect(), jwg_socksend(), jwgconn, NULL, jwgconn_struct::sckfd, jwgconn_struct::state, xode, and xode_to_str(). Referenced by jwg_on_event_handler(), jwg_serverror(), jwg_servsuccess(), list_contacts(), list_contacts_bygroup(), and show_status(). 00318 {
00319 char *buf = xode_to_str(x);
00320 int numwrote, totalsize, len, ret;
00321 FILE *selfd;
00322 struct timeval tv;
00323 fd_set fds;
00324
00325 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00326 return;
00327
00328 if (!buf)
00329 return;
00330
00331 FD_ZERO(&fds);
00332 FD_SET(jwg->sckfd, &fds);
00333 selfd = (FILE *) jwg->sckfd;
00334 tv.tv_sec = 0;
00335 tv.tv_usec = 100000;
00336
00337 ret = jwg_sockselect((int) selfd + 1, NULL, &fds, NULL, &tv);
00338 if (ret < 0) {
00339 dprintf(dJWG, "Error on select: %s\n", strerror(errno));
00340 return;
00341 }
00342 else if (ret == 0) {
00343 dprintf(dJWG, "Time expired while waiting to write.\n");
00344 return;
00345 }
00346
00347 totalsize = strlen(buf) + 1;
00348 numwrote = 0;
00349 dprintf(dJWG, "out[%d]: %s\n", totalsize, buf);
00350 while (numwrote < totalsize) {
00351 /*
00352 len = send(jwg->sckfd, buf, totalsize - numwrote, 0);
00353 */
00354 len = jwg_socksend(jwg->sckfd, buf, totalsize - numwrote);
00355 if (len < 0) {
00356 dprintf(dJWG, "Error writing to socket: %s\n", strerror(errno));
00357 break;
00358 }
00359 numwrote += len;
00360 dprintf(dJWG, "sent %d bytes, %d wrote out of %d\n", len, numwrote, totalsize);
00361 buf += len;
00362 }
00363 }
|
|
||||||||||||
|
Definition at line 424 of file JXMLComm.c. References dJWG, dprintf(), jwgconn, jwgconn_struct::sckfd, and jwgconn_struct::state. 00425 {
00426 if (jwg && jwg->state != JWGCONN_STATE_OFF)
00427 write(jwg->sckfd, str, strlen(str));
00428 dprintf(dJWG, "out: %s\n", str);
00429 }
|
|
|
Definition at line 174 of file JXMLComm.c. References jwgconn_struct::fd, JSetupComm(), jwgconn, NULL, jwgconn_struct::parser, jwgconn_struct::state, XML_ParserCreate(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), and XML_SetUserData(). Referenced by jwgc_init(). 00175 {
00176 int flags = 0;
00177
00178 if (!jwg || jwg->state != JWGCONN_STATE_OFF)
00179 return;
00180
00181 jwg->parser = XML_ParserCreate(NULL);
00182 XML_SetUserData(jwg->parser, (void *) jwg);
00183 XML_SetElementHandler(jwg->parser, jwg_startElement, jwg_endElement);
00184 XML_SetCharacterDataHandler(jwg->parser, jwg_charData);
00185
00186 jwg->fd = JSetupComm();
00187 if (jwg->fd < 0) {
00188 return;
00189 }
00190 /*
00191 jwg->port = get_netport();
00192 */
00193
00194 jwg->state = JWGCONN_STATE_CONNECTED;
00195 }
|
|
||||||||||||
|
Definition at line 391 of file JXMLComm.c. References jwg_servsend(), jwgconn, xode, xode_free(), xode_insert_cdata(), and xode_new(). Referenced by jwg_on_event_handler(). 00392 {
00393 xode out;
00394
00395 out = xode_new("success");
00396 xode_insert_cdata(out, text, strlen(text));
00397 jwg_servsend(jwg, out);
00398 xode_free(out);
00399 }
|
|
||||||||||||||||
|
Definition at line 471 of file JXMLComm.c. References errno. Referenced by jwg_recv(), and jwg_servrecv(). 00472 {
00473 size_t totalread = 0;
00474 int ret;
00475
00476 do {
00477 ret = recv(sockfd, buf, maxsize - totalread, 0);
00478 if (ret < 0 && errno != EINTR) {
00479 return ret;
00480 }
00481 else if (ret == 0) {
00482 return totalread;
00483 }
00484 else if (ret > 0) {
00485 totalread += ret;
00486 return totalread;
00487 }
00488 else if (ret == -1 && errno == EINTR) {
00489 if (recv(sockfd, buf, maxsize - totalread, MSG_PEEK)
00490 <= 0) {
00491 return totalread;
00492 }
00493 }
00494 } while (totalread < maxsize);
00495
00496 return totalread;
00497 }
|
|
||||||||||||||||||||||||
|
Definition at line 432 of file JXMLComm.c. Referenced by jwg_poll(), jwg_recv(), jwg_send(), jwg_servpoll(), jwg_servrecv(), and jwg_servsend(). 00434 {
00435 int ret;
00436 struct timeval currenttv, parttv;
00437
00438 if (!timeout) {
00439 while (1) {
00440 ret = select(nfds, readfds, writefds, exceptfds, NULL);
00441 if (ret < 0 && errno != EINTR) {
00442 return ret;
00443 }
00444 else if (ret >= 0) {
00445 return ret;
00446 }
00447 }
00448 }
00449
00450 currenttv.tv_sec = 0;
00451 currenttv.tv_usec = timeout->tv_usec;
00452
00453 while (currenttv.tv_usec > 0) {
00454 parttv.tv_sec = 0;
00455 parttv.tv_usec = 1;
00456 ret = select(nfds, readfds, writefds, exceptfds, &parttv);
00457 if (ret < 0 && errno != EINTR) {
00458 return ret;
00459 }
00460 else if (ret >= 0) {
00461 return ret;
00462 }
00463 currenttv.tv_sec = 0;
00464 currenttv.tv_usec -= 1;
00465 }
00466
00467 return 0;
00468 }
|
|
||||||||||||||||
|
Definition at line 500 of file JXMLComm.c. References errno. Referenced by jwg_send(), and jwg_servsend(). 00501 {
00502 size_t totalsent = 0;
00503 int ret;
00504
00505 do {
00506 ret = send(sockfd, buf, len - totalsent, 0);
00507 if (ret < 0 && errno != EINTR) {
00508 return ret;
00509 }
00510 else if (ret == 0) {
00511 return totalsent;
00512 }
00513 else if (ret > 0) {
00514 totalsent += ret;
00515 return totalsent;
00516 }
00517 } while (totalsent < len);
00518
00519 return totalsent;
00520 }
|
|
|
Definition at line 143 of file JXMLComm.c. References jwgconn_struct::fd, JConnect(), jwgconn, NULL, jwgconn_struct::parser, jwgconn_struct::state, XML_ParserCreate(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), XML_SetUserData(), and xode. Referenced by check_live_jwgc(), jctl_do_sendrecv(), and main(). 00144 {
00145 xode x;
00146 char *t, *t2;
00147 int len, fromlen, errcode;
00148 struct sockaddr_in from;
00149
00150 if (!jwg || jwg->state != JWGCONN_STATE_OFF)
00151 return;
00152
00153 jwg->parser = XML_ParserCreate(NULL);
00154 XML_SetUserData(jwg->parser, (void *) jwg);
00155 XML_SetElementHandler(jwg->parser, jwg_startElement, jwg_endElement);
00156 XML_SetCharacterDataHandler(jwg->parser, jwg_charData);
00157
00158 jwg->fd = JConnect();
00159 if (jwg->fd < 0) {
00160 return;
00161 }
00162 jwg->state = JWGCONN_STATE_CONNECTED;
00163 }
|
|
|
Definition at line 221 of file JXMLComm.c. References jwgconn_struct::fd, jwgconn, jwgconn_struct::parser, jwgconn_struct::sckfd, jwgconn_struct::state, and XML_ParserFree(). Referenced by check_live_jwgc(), jabber_finalize(), jctl_do_sendrecv(), jwg_delete(), and main(). 00222 {
00223 if (!jwg || jwg->state == JWGCONN_STATE_OFF)
00224 return;
00225
00226 jwg->state = JWGCONN_STATE_OFF;
00227 close(jwg->fd);
00228 jwg->fd = -1;
00229 jwg->sckfd = -1;
00230 XML_ParserFree(jwg->parser);
00231 }
|
|
|
Definition at line 736 of file JXMLComm.c. References _jwgpacket, jwgpacket, jwgpacket_reset(), jwgpacket_struct::x, xode, xode_get_pool(), and xode_pool_malloc(). 00737 {
00738 jwgpacket p;
00739
00740 if (x == NULL)
00741 return NULL;
00742
00743 p = xode_pool_malloc(xode_get_pool(x), sizeof(_jwgpacket));
00744 p->x = x;
00745
00746 return jwgpacket_reset(p);
00747 }
|
|
|
Definition at line 750 of file JXMLComm.c. References _jwgpacket, jwgpacket, jwgpacket_struct::p, jwgpacket_struct::type, jwgpacket_struct::x, xode, xode_get_name(), and xode_get_pool(). Referenced by jwg_on_event_handler(), and jwgpacket_new(). 00751 {
00752 xode x;
00753
00754 x = p->x;
00755 memset(p, 0, sizeof(_jwgpacket));
00756 p->x = x;
00757 p->p = xode_get_pool(x);
00758
00759 if (strncmp(xode_get_name(x), "message", 7) == 0) {
00760 p->type = JWGPACKET_MESSAGE;
00761 }
00762 else if (strncmp(xode_get_name(x), "locate", 6) == 0) {
00763 p->type = JWGPACKET_LOCATE;
00764 }
00765 else if (strncmp(xode_get_name(x), "status", 6) == 0) {
00766 p->type = JWGPACKET_STATUS;
00767 }
00768 else if (strncmp(xode_get_name(x), "shutdown", 8) == 0) {
00769 p->type = JWGPACKET_SHUTDOWN;
00770 }
00771 else if (strncmp(xode_get_name(x), "check", 5) == 0) {
00772 p->type = JWGPACKET_CHECK;
00773 }
00774 else if (strncmp(xode_get_name(x), "reread", 6) == 0) {
00775 p->type = JWGPACKET_REREAD;
00776 }
00777 else if (strncmp(xode_get_name(x), "showvar", 7) == 0) {
00778 p->type = JWGPACKET_SHOWVAR;
00779 }
00780 else if (strncmp(xode_get_name(x), "subscribe", 9) == 0) {
00781 p->type = JWGPACKET_SUBSCRIBE;
00782 }
00783 else if (strncmp(xode_get_name(x), "unsubscribe", 11) == 0) {
00784 p->type = JWGPACKET_UNSUBSCRIBE;
00785 }
00786 else if (strncmp(xode_get_name(x), "nickname", 8) == 0) {
00787 p->type = JWGPACKET_NICKNAME;
00788 }
00789 else if (strncmp(xode_get_name(x), "group", 5) == 0) {
00790 p->type = JWGPACKET_GROUP;
00791 }
00792 else if (strncmp(xode_get_name(x), "register", 8) == 0) {
00793 p->type = JWGPACKET_REGISTER;
00794 }
00795 else if (strncmp(xode_get_name(x), "search", 6) == 0) {
00796 p->type = JWGPACKET_SEARCH;
00797 }
00798 else if (strncmp(xode_get_name(x), "setvar", 6) == 0) {
00799 p->type = JWGPACKET_SETVAR;
00800 }
00801 else if (strncmp(xode_get_name(x), "join", 4) == 0) {
00802 p->type = JWGPACKET_JOIN;
00803 }
00804 else if (strncmp(xode_get_name(x), "leave", 5) == 0) {
00805 p->type = JWGPACKET_LEAVE;
00806 }
00807 else if (strncmp(xode_get_name(x), "debug", 5) == 0) {
00808 p->type = JWGPACKET_DEBUG;
00809 }
00810 else if (strncmp(xode_get_name(x), "ping", 4) == 0) {
00811 p->type = JWGPACKET_PING;
00812 }
00813 else {
00814 p->type = JWGPACKET_UNKNOWN;
00815 }
00816
00817 return p;
00818 }
|
| Last updated at Tue Dec 18 21:07:42 PST 2007. | This site and project hosted by... |