Annotation of mqtt/src/client.c, revision 1.3

1.2       misho       1: #include "global.h"
                      2: #include "mqtt.h"
                      3: #include "client.h"
                      4: 
                      5: 
                      6: int
                      7: ConnectClient(int sock)
                      8: {
                      9:        int siz = 0;
                     10:        struct pollfd pfd;
                     11: 
                     12:        siz = mqtt_msgCONNECT(args->msg, (char*) AIT_GET_STR(&args->ConnID), args->ka, 
                     13:                        (char*) AIT_GET_STR(&args->User), (char*) AIT_GET_STR(&args->Pass), 
                     14:                        (char*) args->Will.Topic.val.string, (char*) args->Will.Msg.val.string, 
                     15:                        !args->notClear, args->QoS, args->Retain);
                     16:        if (siz == -1) {
                     17:                printf("Error:: msgCONNECT #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());
                     18:                return -1;
                     19:        }
                     20: 
                     21:        siz = send(sock, args->msg->msg_base, siz, 0);
                     22:        if (siz == -1) {
                     23:                printf("Error:: send() #%d - %s\n", errno, strerror(errno));
                     24:                return -1;
                     25:        } else
                     26:                ioVERBOSE(3) printf("Sended CONNECT %d bytes\n", siz);
                     27: 
                     28:        pfd.fd = sock;
                     29:        pfd.events = POLLIN | POLLPRI;
                     30:        switch (poll(&pfd, 1, args->ka * 1000)) {
                     31:                case -1:
                     32:                        printf("Error:: poll() #%d - %s\n", errno, strerror(errno));
                     33:                        return -1;
                     34:                case 0:
                     35:                        ioVERBOSE(3) printf("Timeout reached (%d) ...\n", args->ka * 1000);
                     36:                        return -1;
                     37:        }
                     38:        if (pfd.revents & (POLLERR | POLLHUP | POLLNVAL))
                     39:                return -1;
                     40: 
1.3     ! misho      41:        memset(args->msg->msg_base, 0, args->msg->msg_len);
1.2       misho      42:        siz = recv(sock, args->msg->msg_base, args->msg->msg_len, 0);
                     43:        if (siz == -1) {
                     44:                printf("Error:: recv() #%d - %s\n", errno, strerror(errno));
                     45:                return -1;
                     46:        } else
                     47:                ioVERBOSE(3) printf("Received %d bytes\n", siz);
                     48: 
                     49:        return (u_char) mqtt_readCONNACK(args->msg);
                     50: }
                     51: 
                     52: void *
                     53: OpenFile(void)
                     54: {
                     55:        int f, siz = 0;
                     56:        void *mem;
                     57: 
                     58:        if (!args->isFile)
                     59:                return NULL;
                     60: 
                     61:        f = open(AIT_GET_STR(&args->Value), O_RDONLY);
                     62:        if (f == -1) {
                     63:                printf("Error:: in open file #%d - %s\n", errno, strerror(errno));
                     64:                return NULL;
                     65:        }
                     66:        mem = mmap(NULL, siz, PROT_READ, MAP_PRIVATE, f, 0);
                     67:        if (mem == MAP_FAILED) {
                     68:                printf("Error:: in map file #%d - %s\n", errno, strerror(errno));
                     69:                close(f);
                     70:                return NULL;
                     71:        } else
                     72:                close(f);
                     73: 
                     74:        AIT_SET_PTR(&args->Value, mem, siz);
                     75:        return mem;
                     76: }
                     77: 
                     78: void
                     79: CloseFile(void)
                     80: {
                     81:        if (args->isFile) {
                     82:                munmap(AIT_GET_PTR(&args->Value), AIT_LEN(&args->Value));
                     83:                AIT_FREE_VAL(&args->Value);
                     84:        }
                     85: }
                     86: 
                     87: inline int
                     88: SendTo(int sock, int siz)
                     89: {
1.3     ! misho      90:        siz = send(sock, args->msg->msg_base, siz, MSG_NOSIGNAL);
1.2       misho      91:        if (siz == -1) {
                     92:                printf("Error:: send() #%d - %s\n", errno, strerror(errno));
                     93:                return -1;
                     94:        } else
1.3     ! misho      95:                ioVERBOSE(3) printf("Sended %d bytes\n", siz);
1.2       misho      96: 
                     97:        return siz;
                     98: }
                     99: 
                    100: inline int
                    101: RecvFrom(int sock)
                    102: {
                    103:        struct pollfd pfd;
                    104:        int siz = 0;
                    105: 
1.3     ! misho     106:        memset(args->msg->msg_base, 0, args->msg->msg_len);
        !           107: 
1.2       misho     108:        pfd.fd = sock;
                    109:        pfd.events = POLLIN | POLLPRI;
                    110:        do {
                    111:                switch (poll(&pfd, 1, args->ka * 1000)) {
                    112:                        case -1:
                    113:                                printf("Error:: poll() #%d - %s\n", errno, strerror(errno));
                    114:                                return -1;
                    115:                        case 0:
                    116:                                ioVERBOSE(3) printf("Timeout reached (%d) ...\n", args->ka * 1000);
1.3     ! misho     117:                                if (mqtt_KeepAlive(sock, args->ka, 1) == -1)
1.2       misho     118:                                        return -1;
                    119:                                continue;
                    120:                }
                    121:                if (pfd.revents & (POLLERR | POLLHUP | POLLNVAL))
                    122:                        return -1;
                    123:        } while (0);
                    124: 
                    125:        siz = recv(sock, args->msg->msg_base, args->msg->msg_len, 0);
                    126:        if (siz == -1) {
                    127:                printf("Error:: recv() #%d - %s\n", errno, strerror(errno));
                    128:                return -1;
                    129:        } else
                    130:                ioVERBOSE(3) printf("Received %d bytes\n", siz);
                    131: 
                    132:        return siz;
                    133: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>