src/nexus.c
author Tero Marttila <terom@fixme.fi>
Sun, 22 Feb 2009 08:21:22 +0200
changeset 8 be88e543c8ff
parent 7 844f014409ff
child 9 4c4c906cc649
permissions -rw-r--r--
split off line_proto, and make sock_stream_error return a const error_info
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include <stdlib.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#include <unistd.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include <stdio.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
#include <string.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
#include <event.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
#include <assert.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
#include <err.h>
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    11
#include "sock.h"
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    12
#include "line_proto.h"
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    13
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
#define CONNECT_HOST "irc.fixme.fi"
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    15
#define CONNECT_SERV "6697"
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
#define LINE_LENGTH 512
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
int main (int argc, char **argv) {
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    19
    struct sock_stream *sock;
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    20
    struct line_proto *lp;
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    char line_buf[LINE_LENGTH + 1];
4
a3ca0f97a075 change ERROR_* to use pointers again, and implement error_info for sock_init
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    22
    struct error_info err;
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    // initialize
4
a3ca0f97a075 change ERROR_* to use pointers again, and implement error_info for sock_init
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    25
    if (sock_init(&err))
7
844f014409ff and then error_msg
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    26
        errx(1, "sock_init: %s", error_msg(&err));
4
a3ca0f97a075 change ERROR_* to use pointers again, and implement error_info for sock_init
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    27
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    // over-simplified connect
5
a09a0797f6f0 ERROR-ify sock_gnutls
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    29
    if (sock_gnutls_connect(&sock, CONNECT_HOST, CONNECT_SERV, &err))
7
844f014409ff and then error_msg
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    30
        errx(1, "sock_gnutls_connect: %s", error_msg(&err));
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    32
    // line protocol
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    33
    if (line_proto_create(&lp, sock, &err))
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    34
        errx(1, "line_proto_create: %s", error_msg(&err));
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    35
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    // read lines and dump them out
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
    do {
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
        // recv
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    39
        if (line_proto_read(lp, line_buf, sizeof(line_buf)))
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    40
            errx(1, "line_proto_read: %s", error_msg(line_proto_error(lp)));
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
        // printf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        printf("<<< %s\n", line_buf);
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
    } while (1);
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
    
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
    // ok
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
    return 0;
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50