MCPcopy Create free account
hub / github.com/google/gapid / decode

Method decode

core/java/jdwp/coder.go:153–275  ·  view source on GitHub ↗

decode reads the value v from r, using the JDWP encoding scheme.

(r binary.Reader, v reflect.Value)

Source from the content-addressed store, hash-verified

151
152// decode reads the value v from r, using the JDWP encoding scheme.
153func (c *Connection) decode(r binary.Reader, v reflect.Value) error {
154 if debug {
155 defer func() {
156 if r := recover(); r != nil {
157 panic(fmt.Errorf("Type %T %v %v", v.Interface(), v.Type().Name(), v.Kind()))
158 }
159 }()
160 }
161
162 switch v.Type() {
163 case reflect.TypeOf((*Event)(nil)).Elem():
164 var kind EventKind
165 if err := c.decode(r, reflect.ValueOf(&kind)); err != nil {
166 return err
167 }
168 event := kind.event()
169 v.Set(reflect.ValueOf(event))
170 v = v.Elem()
171 // Continue to decode event body below.
172
173 case reflect.TypeOf((*Value)(nil)).Elem():
174 tag := Tag(r.Uint8())
175 var ty reflect.Type
176 switch tag {
177 case TagArray:
178 ty = reflect.TypeOf(ArrayID(0))
179 case TagByte:
180 ty = reflect.TypeOf(byte(0))
181 case TagChar:
182 ty = reflect.TypeOf(Char(0))
183 case TagObject:
184 ty = reflect.TypeOf(ObjectID(0))
185 case TagFloat:
186 ty = reflect.TypeOf(float32(0))
187 case TagDouble:
188 ty = reflect.TypeOf(float64(0))
189 case TagInt:
190 ty = reflect.TypeOf(int(0))
191 case TagShort:
192 ty = reflect.TypeOf(int16(0))
193 case TagLong:
194 ty = reflect.TypeOf(int64(0))
195 case TagBoolean:
196 ty = reflect.TypeOf(false)
197 case TagString:
198 ty = reflect.TypeOf(StringID(0))
199 case TagThread:
200 ty = reflect.TypeOf(ThreadID(0))
201 case TagThreadGroup:
202 ty = reflect.TypeOf(ThreadGroupID(0))
203 case TagClassLoader:
204 ty = reflect.TypeOf(ClassLoaderID(0))
205 case TagClassObject:
206 ty = reflect.TypeOf(ClassObjectID(0))
207 case TagVoid:
208 v.Set(reflect.New(v.Type()).Elem())
209 return r.Error()
210 default:

Callers 1

recvMethod · 0.95

Calls 15

eventMethod · 0.95
ArrayIDTypeAlias · 0.85
ObjectIDTypeAlias · 0.85
StringIDTypeAlias · 0.85
ThreadIDTypeAlias · 0.85
ThreadGroupIDTypeAlias · 0.85
ClassLoaderIDTypeAlias · 0.85
ClassObjectIDTypeAlias · 0.85
InterfaceMethod · 0.80
MakeSliceMethod · 0.80
TagTypeAlias · 0.70
CharTypeAlias · 0.70

Tested by

no test coverage detected