Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include <venti.h>

int
vtfcallfmt(Fmt *f)
{
        VtFcall *t;

        t = va_arg(f->args, VtFcall*);
        if(t == nil){
                fmtprint(f, "<nil fcall>");
                return 0;
        }
        switch(t->msgtype){
        default:
                return fmtprint(f, "%c%d tag %ud", "TR"[t->msgtype&1], t->msgtype>>1, t->tag);
        case VtRerror:
                return fmtprint(f, "Rerror tag %ud error %s", t->tag, t->error);
        case VtTping:
                return fmtprint(f, "Tping tag %ud", t->tag);
        case VtRping:
                return fmtprint(f, "Rping tag %ud", t->tag);
        case VtThello:
                return fmtprint(f, "Thello tag %ud vers %s uid %s strength %d crypto %d:%.*H codec %d:%.*H", t->tag,
                        t->version, t->uid, t->strength, t->ncrypto, t->ncrypto, t->crypto,
                        t->ncodec, t->ncodec, t->codec);
        case VtRhello:
                return fmtprint(f, "Rhello tag %ud sid %s rcrypto %d rcodec %d", t->tag, t->sid, t->rcrypto, t->rcodec);
        case VtTgoodbye:
                return fmtprint(f, "Tgoodbye tag %ud", t->tag);
        case VtRgoodbye:
                return fmtprint(f, "Rgoodbye tag %ud", t->tag);
        case VtTauth0:
                return fmtprint(f, "Tauth0 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
        case VtRauth0:
                return fmtprint(f, "Rauth0 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
        case VtTauth1:
                return fmtprint(f, "Tauth1 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
        case VtRauth1:
                return fmtprint(f, "Rauth1 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
        case VtTread:
                return fmtprint(f, "Tread tag %ud score %V blocktype %d count %d", t->tag, t->score, t->blocktype, t->count);
        case VtRread:
                return fmtprint(f, "Rread tag %ud count %d", t->tag, packetsize(t->data));
        case VtTwrite:
                return fmtprint(f, "Twrite tag %ud blocktype %d count %d", t->tag, t->blocktype, packetsize(t->data));
        case VtRwrite:
                return fmtprint(f, "Rwrite tag %ud score %V", t->tag, t->score);
        case VtTsync:
                return fmtprint(f, "Tsync tag %ud", t->tag);
        case VtRsync:
                return fmtprint(f, "Rsync tag %ud", t->tag);
        }
}