Blob
1 package p9p3 import "fmt"5 type FcallType uint87 const (8 Tversion FcallType = iota + 1009 Rversion10 Tauth11 Rauth12 Tattach13 Rattach14 Terror15 Rerror16 Tflush17 Rflush18 Twalk19 Rwalk20 Topen21 Ropen22 Tcreate23 Rcreate24 Tread25 Rread26 Twrite27 Rwrite28 Tclunk29 Rclunk30 Tremove31 Rremove32 Tstat33 Rstat34 Twstat35 Rwstat36 Tmax37 )39 func (fct FcallType) String() string {40 switch fct {41 case Tversion:42 return "Tversion"43 case Rversion:44 return "Rversion"45 case Tauth:46 return "Tauth"47 case Rauth:48 return "Rauth"49 case Tattach:50 return "Tattach"51 case Rattach:52 return "Rattach"53 case Terror:54 // invalid.55 return "Terror"56 case Rerror:57 return "Rerror"58 case Tflush:59 return "Tflush"60 case Rflush:61 return "Rflush"62 case Twalk:63 return "Twalk"64 case Rwalk:65 return "Rwalk"66 case Topen:67 return "Topen"68 case Ropen:69 return "Ropen"70 case Tcreate:71 return "Tcreate"72 case Rcreate:73 return "Rcreate"74 case Tread:75 return "Tread"76 case Rread:77 return "Rread"78 case Twrite:79 return "Twrite"80 case Rwrite:81 return "Rwrite"82 case Tclunk:83 return "Tclunk"84 case Rclunk:85 return "Rclunk"86 case Tremove:87 return "Tremove"88 case Rremove:89 return "Rremove"90 case Tstat:91 return "Tstat"92 case Rstat:93 return "Rstat"94 case Twstat:95 return "Twstat"96 case Rwstat:97 return "Rwstat"98 default:99 return "Tunknown"100 }101 }103 type Fcall struct {104 Type FcallType105 Tag Tag106 Message Message107 }109 func newFcall(tag Tag, msg Message) *Fcall {110 switch msg.Type() {111 case Tversion, Rversion:112 tag = NOTAG113 }115 return &Fcall{116 Type: msg.Type(),117 Tag: tag,118 Message: msg,119 }120 }122 func newErrorFcall(tag Tag, err error) *Fcall {123 var msg Message125 switch v := err.(type) {126 case MessageRerror:127 msg = v128 case *MessageRerror:129 msg = *v130 default:131 msg = MessageRerror{Ename: v.Error()}132 }134 return &Fcall{135 Type: Rerror,136 Tag: tag,137 Message: msg,138 }139 }141 func (fc *Fcall) String() string {142 return fmt.Sprintf("%v(%v) %v", fc.Type, fc.Tag, string9p(fc.Message))143 }