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 "Tremote"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(msg Message) *Fcall {110 var tag Tag112 switch msg.Type() {113 case Tversion, Rversion:114 tag = NOTAG115 }117 return &Fcall{118 Type: msg.Type(),119 Tag: tag,120 Message: msg,121 }122 }124 func newErrorFcall(tag Tag, err error) *Fcall {125 var msg Message127 switch v := err.(type) {128 case MessageRerror:129 msg = v130 case *MessageRerror:131 msg = *v132 default:133 msg = MessageRerror{Ename: v.Error()}134 }136 return &Fcall{137 Type: Rerror,138 Tag: tag,139 Message: msg,140 }141 }143 func (fc *Fcall) String() string {144 return fmt.Sprintf("%v(%v) %v", fc.Type, fc.Tag, string9p(fc.Message))145 }