Blame


1 e342de7d 2015-11-11 adrien package p9p
2 e342de7d 2015-11-11 adrien
3 e342de7d 2015-11-11 adrien import "fmt"
4 e342de7d 2015-11-11 adrien
5 e342de7d 2015-11-11 adrien type FcallType uint8
6 e342de7d 2015-11-11 adrien
7 e342de7d 2015-11-11 adrien const (
8 e342de7d 2015-11-11 adrien Tversion FcallType = iota + 100
9 e342de7d 2015-11-11 adrien Rversion
10 e342de7d 2015-11-11 adrien Tauth
11 e342de7d 2015-11-11 adrien Rauth
12 e342de7d 2015-11-11 adrien Tattach
13 e342de7d 2015-11-11 adrien Rattach
14 e342de7d 2015-11-11 adrien Terror
15 e342de7d 2015-11-11 adrien Rerror
16 e342de7d 2015-11-11 adrien Tflush
17 e342de7d 2015-11-11 adrien Rflush
18 e342de7d 2015-11-11 adrien Twalk
19 e342de7d 2015-11-11 adrien Rwalk
20 e342de7d 2015-11-11 adrien Topen
21 e342de7d 2015-11-11 adrien Ropen
22 e342de7d 2015-11-11 adrien Tcreate
23 e342de7d 2015-11-11 adrien Rcreate
24 e342de7d 2015-11-11 adrien Tread
25 e342de7d 2015-11-11 adrien Rread
26 e342de7d 2015-11-11 adrien Twrite
27 e342de7d 2015-11-11 adrien Rwrite
28 e342de7d 2015-11-11 adrien Tclunk
29 e342de7d 2015-11-11 adrien Rclunk
30 e342de7d 2015-11-11 adrien Tremove
31 e342de7d 2015-11-11 adrien Rremove
32 e342de7d 2015-11-11 adrien Tstat
33 e342de7d 2015-11-11 adrien Rstat
34 e342de7d 2015-11-11 adrien Twstat
35 e342de7d 2015-11-11 adrien Rwstat
36 e342de7d 2015-11-11 adrien Tmax
37 e342de7d 2015-11-11 adrien )
38 e342de7d 2015-11-11 adrien
39 e342de7d 2015-11-11 adrien func (fct FcallType) String() string {
40 e342de7d 2015-11-11 adrien switch fct {
41 e342de7d 2015-11-11 adrien case Tversion:
42 e342de7d 2015-11-11 adrien return "Tversion"
43 e342de7d 2015-11-11 adrien case Rversion:
44 e342de7d 2015-11-11 adrien return "Rversion"
45 e342de7d 2015-11-11 adrien case Tauth:
46 e342de7d 2015-11-11 adrien return "Tauth"
47 e342de7d 2015-11-11 adrien case Rauth:
48 e342de7d 2015-11-11 adrien return "Rauth"
49 e342de7d 2015-11-11 adrien case Tattach:
50 e342de7d 2015-11-11 adrien return "Tattach"
51 e342de7d 2015-11-11 adrien case Rattach:
52 e342de7d 2015-11-11 adrien return "Rattach"
53 e342de7d 2015-11-11 adrien case Terror:
54 e342de7d 2015-11-11 adrien // invalid.
55 e342de7d 2015-11-11 adrien return "Terror"
56 e342de7d 2015-11-11 adrien case Rerror:
57 e342de7d 2015-11-11 adrien return "Rerror"
58 e342de7d 2015-11-11 adrien case Tflush:
59 e342de7d 2015-11-11 adrien return "Tflush"
60 e342de7d 2015-11-11 adrien case Rflush:
61 e342de7d 2015-11-11 adrien return "Rflush"
62 e342de7d 2015-11-11 adrien case Twalk:
63 e342de7d 2015-11-11 adrien return "Twalk"
64 e342de7d 2015-11-11 adrien case Rwalk:
65 e342de7d 2015-11-11 adrien return "Rwalk"
66 e342de7d 2015-11-11 adrien case Topen:
67 e342de7d 2015-11-11 adrien return "Topen"
68 e342de7d 2015-11-11 adrien case Ropen:
69 e342de7d 2015-11-11 adrien return "Ropen"
70 e342de7d 2015-11-11 adrien case Tcreate:
71 e342de7d 2015-11-11 adrien return "Tcreate"
72 e342de7d 2015-11-11 adrien case Rcreate:
73 e342de7d 2015-11-11 adrien return "Rcreate"
74 e342de7d 2015-11-11 adrien case Tread:
75 e342de7d 2015-11-11 adrien return "Tread"
76 e342de7d 2015-11-11 adrien case Rread:
77 e342de7d 2015-11-11 adrien return "Rread"
78 e342de7d 2015-11-11 adrien case Twrite:
79 e342de7d 2015-11-11 adrien return "Twrite"
80 e342de7d 2015-11-11 adrien case Rwrite:
81 e342de7d 2015-11-11 adrien return "Rwrite"
82 e342de7d 2015-11-11 adrien case Tclunk:
83 e342de7d 2015-11-11 adrien return "Tclunk"
84 e342de7d 2015-11-11 adrien case Rclunk:
85 e342de7d 2015-11-11 adrien return "Rclunk"
86 e342de7d 2015-11-11 adrien case Tremove:
87 e342de7d 2015-11-11 adrien return "Tremote"
88 e342de7d 2015-11-11 adrien case Rremove:
89 e342de7d 2015-11-11 adrien return "Rremove"
90 e342de7d 2015-11-11 adrien case Tstat:
91 e342de7d 2015-11-11 adrien return "Tstat"
92 e342de7d 2015-11-11 adrien case Rstat:
93 e342de7d 2015-11-11 adrien return "Rstat"
94 e342de7d 2015-11-11 adrien case Twstat:
95 e342de7d 2015-11-11 adrien return "Twstat"
96 e342de7d 2015-11-11 adrien case Rwstat:
97 e342de7d 2015-11-11 adrien return "Rwstat"
98 e342de7d 2015-11-11 adrien default:
99 e342de7d 2015-11-11 adrien return "Tunknown"
100 e342de7d 2015-11-11 adrien }
101 e342de7d 2015-11-11 adrien }
102 e342de7d 2015-11-11 adrien
103 e342de7d 2015-11-11 adrien type Fcall struct {
104 e342de7d 2015-11-11 adrien Type FcallType
105 e342de7d 2015-11-11 adrien Tag Tag
106 e342de7d 2015-11-11 adrien Message Message
107 e342de7d 2015-11-11 adrien }
108 e342de7d 2015-11-11 adrien
109 e342de7d 2015-11-11 adrien func newFcall(msg Message) *Fcall {
110 e342de7d 2015-11-11 adrien var tag Tag
111 e342de7d 2015-11-11 adrien
112 e342de7d 2015-11-11 adrien switch msg.Type() {
113 e342de7d 2015-11-11 adrien case Tversion, Rversion:
114 e342de7d 2015-11-11 adrien tag = NOTAG
115 e342de7d 2015-11-11 adrien }
116 e342de7d 2015-11-11 adrien
117 e342de7d 2015-11-11 adrien return &Fcall{
118 e342de7d 2015-11-11 adrien Type: msg.Type(),
119 e342de7d 2015-11-11 adrien Tag: tag,
120 e342de7d 2015-11-11 adrien Message: msg,
121 e342de7d 2015-11-11 adrien }
122 e342de7d 2015-11-11 adrien }
123 e342de7d 2015-11-11 adrien
124 e342de7d 2015-11-11 adrien func newErrorFcall(tag Tag, err error) *Fcall {
125 e342de7d 2015-11-11 adrien var msg Message
126 e342de7d 2015-11-11 adrien
127 e342de7d 2015-11-11 adrien switch v := err.(type) {
128 e342de7d 2015-11-11 adrien case MessageRerror:
129 e342de7d 2015-11-11 adrien msg = v
130 e342de7d 2015-11-11 adrien case *MessageRerror:
131 e342de7d 2015-11-11 adrien msg = *v
132 e342de7d 2015-11-11 adrien default:
133 e342de7d 2015-11-11 adrien msg = MessageRerror{Ename: v.Error()}
134 e342de7d 2015-11-11 adrien }
135 e342de7d 2015-11-11 adrien
136 e342de7d 2015-11-11 adrien return &Fcall{
137 e342de7d 2015-11-11 adrien Type: Rerror,
138 e342de7d 2015-11-11 adrien Tag: tag,
139 e342de7d 2015-11-11 adrien Message: msg,
140 e342de7d 2015-11-11 adrien }
141 e342de7d 2015-11-11 adrien }
142 e342de7d 2015-11-11 adrien
143 e342de7d 2015-11-11 adrien func (fc *Fcall) String() string {
144 e342de7d 2015-11-11 adrien return fmt.Sprintf("%v(%v) %v", fc.Type, fc.Tag, string9p(fc.Message))
145 e342de7d 2015-11-11 adrien }