Changeset 9e2a109 for lib/format_wag.c


Ignore:
Timestamp:
08/04/05 15:37:08 (16 years ago)
Author:
Daniel Lawson <dlawson@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
ef55d05
Parents:
fe43699
Message:

moved format.h to libtrace_int.h

pulled out all the format-specific libtrace_t stuff into an opaque pointer which is defined inside each format_*.o file, for both input and output

This seems to work, it compiles at least, and wag and erf both work

rtclient input is currently broken, I suspect it's not stepping over the status properly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_wag.c

    rfe43699 r9e2a109  
    3030
    3131#include "libtrace.h"
    32 #include "format.h"
     32#include "libtrace_int.h"
    3333#include "wag.h"
    3434
     
    5858#define O_LARGEFILE 0
    5959#endif
     60
     61struct libtrace_format_data_t {
     62        union {
     63                /** Information about rtclients */
     64                struct {
     65                        char *hostname;
     66                        short port;
     67                } rt;
     68                char *path;             /**< information for local sockets */
     69        } conn_info;
     70        /** Information about the current state of the input device */
     71        union {
     72                int fd;
     73#if HAVE_ZLIB
     74                gzFile *file;
     75#else   
     76                FILE *file;
     77#endif
     78        } input;       
     79};
     80
    6081static int wag_init_input(struct libtrace_t *libtrace) {
    6182        struct stat buf;
     
    6384        struct sockaddr_in remote;
    6485        struct sockaddr_un unix_sock;
    65         if (!strncmp(libtrace->conn_info.path,"-",1)) {
     86        libtrace->format_data = (struct libtrace_format_data_t *)
     87                calloc(1,sizeof(struct libtrace_format_data_t));
     88        libtrace->format_data->conn_info.path = libtrace->uridata;
     89        if (!strncmp(libtrace->format_data->conn_info.path,"-",1)) {
    6690                // STDIN
    6791#if HAVE_ZLIB
    68                 libtrace->input.file = gzdopen(STDIN, "r");
     92                libtrace->format_data->input.file = gzdopen(STDIN, "r");
    6993#else   
    70                 libtrace->input.file = stdin;
     94                libtrace->format_data->input.file = stdin;
    7195#endif
    7296
    7397        } else {
    74                 if (stat(libtrace->conn_info.path,&buf) == -1 ) {
     98                if (stat(libtrace->format_data->conn_info.path,&buf) == -1 ) {
    7599                        perror("stat");
    76100                        return 0;
     
    78102                if (S_ISSOCK(buf.st_mode)) {
    79103                        // SOCKET
    80                         if ((libtrace->input.fd = socket(
     104                        if ((libtrace->format_data->input.fd = socket(
    81105                                        AF_UNIX, SOCK_STREAM, 0)) == -1) {
    82106                                perror("socket");
     
    87111                        snprintf(unix_sock.sun_path,
    88112                                        108,"%s"
    89                                         ,libtrace->conn_info.path);
    90 
    91                         if (connect(libtrace->input.fd,
     113                                        ,libtrace->format_data->conn_info.path);
     114
     115                        if (connect(libtrace->format_data->input.fd,
    92116                                        (struct sockaddr *)&unix_sock,
    93117                                        sizeof(struct sockaddr)) == -1) {
     
    101125                        // ourselves. However, this way is messy and
    102126                        // we lose any error checking on "open"
    103                         libtrace->input.file =
     127                        libtrace->format_data->input.file =
    104128                                gzdopen(open(
    105                                         libtrace->conn_info.path,
     129                                        libtrace->format_data->conn_info.path,
    106130                                        O_LARGEFILE), "r");
    107131#else
    108                         libtrace->input.file =
     132                        libtrace->format_data->input.file =
    109133                                fdopen(open(
    110                                         libtrace->conn_info.path,
     134                                        libtrace->format_data->conn_info.path,
    111135                                        O_LARGEFILE), "r");
    112136#endif
     
    118142static int wag_fin_input(struct libtrace_t *libtrace) {
    119143#if HAVE_ZLIB
    120         gzclose(libtrace->input.file);
     144        gzclose(libtrace->format_data->input.file);
    121145#else   
    122         fclose(libtrace->input.file);   
     146        fclose(libtrace->format_data->input.file);     
    123147#endif
    124148}
     
    137161                switch(libtrace->sourcetype) {
    138162                        case DEVICE:
    139                                 if ((numbytes=read(libtrace->input.fd,
     163                                if ((numbytes=read(libtrace->format_data->input.fd,
    140164                                                                buffer,
    141165                                                                len)) == -1) {
     
    146170                        default:
    147171#if HAVE_ZLIB
    148                                 if ((numbytes=gzread(libtrace->input.file,
     172                                if ((numbytes=gzread(libtrace->format_data->input.file,
    149173                                                                buffer,
    150174                                                                len)) == -1) {
     
    154178#else
    155179                                if ((numbytes=fread(buffer,len,1,
    156                                         libtrace->input.file)) == 0 ) {
    157                                         if(feof(libtrace->input.file)) {
     180                                        libtrace->format_data->input.file)) == 0 ) {
     181                                        if(feof(libtrace->format_data->input.file)) {
    158182                                                return 0;
    159183                                        }
    160                                         if(ferror(libtrace->input.file)) {
     184                                        if(ferror(libtrace->format_data->input.file)) {
    161185                                                perror("fread");
    162186                                                return -1;
     
    283307}
    284308
    285 static struct format_t wag = {
     309static struct libtrace_format_t wag = {
    286310        "wag",
    287311        "$Id$",
Note: See TracChangeset for help on using the changeset viewer.