podman

Форк
0
65 строк · 1.4 Кб
1
// Copyright (C) MongoDB, Inc. 2017-present.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License"); you may
4
// not use this file except in compliance with the License. You may obtain
5
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6

7
package bsoncodec
8

9
import "fmt"
10

11
type mode int
12

13
const (
14
	_ mode = iota
15
	mTopLevel
16
	mDocument
17
	mArray
18
	mValue
19
	mElement
20
	mCodeWithScope
21
	mSpacer
22
)
23

24
func (m mode) String() string {
25
	var str string
26

27
	switch m {
28
	case mTopLevel:
29
		str = "TopLevel"
30
	case mDocument:
31
		str = "DocumentMode"
32
	case mArray:
33
		str = "ArrayMode"
34
	case mValue:
35
		str = "ValueMode"
36
	case mElement:
37
		str = "ElementMode"
38
	case mCodeWithScope:
39
		str = "CodeWithScopeMode"
40
	case mSpacer:
41
		str = "CodeWithScopeSpacerFrame"
42
	default:
43
		str = "UnknownMode"
44
	}
45

46
	return str
47
}
48

49
// TransitionError is an error returned when an invalid progressing a
50
// ValueReader or ValueWriter state machine occurs.
51
type TransitionError struct {
52
	parent      mode
53
	current     mode
54
	destination mode
55
}
56

57
func (te TransitionError) Error() string {
58
	if te.destination == mode(0) {
59
		return fmt.Sprintf("invalid state transition: cannot read/write value while in %s", te.current)
60
	}
61
	if te.parent == mode(0) {
62
		return fmt.Sprintf("invalid state transition: %s -> %s", te.current, te.destination)
63
	}
64
	return fmt.Sprintf("invalid state transition: %s -> %s; parent %s", te.current, te.destination, te.parent)
65
}
66

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.