blob: c08b895f71f9e1fc4b991aa7ec33bb4c29b3cdfb [file] [log] [blame]
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package protocol defines the types used to represent calls to the debug server.
package protocol // import "golang.org/x/debug/server/protocol"
import (
"encoding/gob"
"golang.org/x/debug"
)
func init() {
// Register implementations of debug.Value with gob.
gob.Register(debug.Pointer{})
gob.Register(debug.Array{})
gob.Register(debug.Struct{})
gob.Register(debug.Slice{})
gob.Register(debug.Map{})
gob.Register(debug.String{})
gob.Register(debug.Channel{})
gob.Register(debug.Func{})
gob.Register(debug.Interface{})
}
// For regularity, each method has a unique Request and a Response type even
// when not strictly necessary.
// File I/O, at the top because they're simple.
type ReadAtRequest struct {
FD int
Len int
Offset int64
}
type ReadAtResponse struct {
Data []byte
}
type WriteAtRequest struct {
FD int
Data []byte
Offset int64
}
type WriteAtResponse struct {
Len int
}
type CloseRequest struct {
FD int
}
type CloseResponse struct {
}
// Program methods.
type OpenRequest struct {
Name string
Mode string
}
type OpenResponse struct {
FD int
}
type RunRequest struct {
Args []string
}
type RunResponse struct {
Status debug.Status
}
type ResumeRequest struct {
}
type ResumeResponse struct {
Status debug.Status
}
type BreakpointRequest struct {
Address uint64
}
type BreakpointAtFunctionRequest struct {
Function string
}
type BreakpointAtLineRequest struct {
File string
Line uint64
}
type BreakpointResponse struct {
PCs []uint64
}
type DeleteBreakpointsRequest struct {
PCs []uint64
}
type DeleteBreakpointsResponse struct {
}
type EvalRequest struct {
Expr string
}
type EvalResponse struct {
Result []string
}
type EvaluateRequest struct {
Expression string
}
type EvaluateResponse struct {
Result debug.Value
}
type FramesRequest struct {
Count int
}
type FramesResponse struct {
Frames []debug.Frame
}
type VarByNameRequest struct {
Name string
}
type VarByNameResponse struct {
Var debug.Var
}
type ValueRequest struct {
Var debug.Var
}
type ValueResponse struct {
Value debug.Value
}
type MapElementRequest struct {
Map debug.Map
Index uint64
}
type MapElementResponse struct {
Key debug.Var
Value debug.Var
}
type GoroutinesRequest struct {
}
type GoroutinesResponse struct {
Goroutines []*debug.Goroutine
}