File: util.go

package info (click to toggle)
golang-github-mesos-mesos-go 0.0.6%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 11,724 kB
  • sloc: makefile: 163
file content (52 lines) | stat: -rw-r--r-- 1,282 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package httpagent

import (
	"fmt"

	"github.com/mesos/mesos-go/api/v1/lib/agent"
	"github.com/mesos/mesos-go/api/v1/lib/client"
	"github.com/mesos/mesos-go/api/v1/lib/httpcli"
)

func classifyResponse(c *agent.Call) (rc client.ResponseClass, err error) {
	if c == nil {
		err = httpcli.ProtocolError("nil agent.Call not allowed")
		return
	}

	switch t := c.GetType(); t {
	// singleton
	case agent.Call_GET_HEALTH,
		agent.Call_GET_FLAGS,
		agent.Call_GET_VERSION,
		agent.Call_GET_METRICS,
		agent.Call_GET_LOGGING_LEVEL,
		agent.Call_LIST_FILES,
		agent.Call_READ_FILE,
		agent.Call_GET_STATE,
		agent.Call_GET_CONTAINERS,
		agent.Call_GET_FRAMEWORKS,
		agent.Call_GET_EXECUTORS,
		agent.Call_GET_TASKS,
		agent.Call_GET_AGENT,
		agent.Call_WAIT_NESTED_CONTAINER:
		rc = client.ResponseClassSingleton

	// streaming
	case agent.Call_LAUNCH_NESTED_CONTAINER_SESSION,
		agent.Call_ATTACH_CONTAINER_OUTPUT:
		rc = client.ResponseClassStreaming

	// no-data
	case agent.Call_SET_LOGGING_LEVEL,
		agent.Call_LAUNCH_NESTED_CONTAINER,
		agent.Call_KILL_NESTED_CONTAINER,
		agent.Call_REMOVE_NESTED_CONTAINER,
		agent.Call_ATTACH_CONTAINER_INPUT:
		rc = client.ResponseClassNoData

	default:
		err = httpcli.ProtocolError(fmt.Sprintf("unsupported agent.Call type: %v", t))
	}
	return
}