|
- // Copyright 2018 Google Inc. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- // Package protocol defines the types used to represent calls to the debug server.
- package protocol
-
- import (
- "encoding/gob"
-
- "cloud.google.com/go/cmd/go-cloud-debug-agent/internal/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
- }
|