/
messages.go
109 lines (86 loc) · 3.84 KB
/
messages.go
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/****************************************************
Copyright 2019 The OnyxChain-eventbus Authors
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.
*****************************************************/
/***************************************************
Copyright 2016 https://github.com/AsynkronIT/protoactor-go
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 actor
import "github.com/OnyxPay/OnyxChain-eventbus/mailbox"
//An AutoReceiveMessage is a special kind of user message that will be handled in some way automatially by the actor
type AutoReceiveMessage interface {
AutoReceiveMessage()
}
//NotInfluenceReceiveTimeout messages will not reset the ReceiveTimeout timer of an actor that receives the message
type NotInfluenceReceiveTimeout interface {
NotInfluenceReceiveTimeout()
}
// A SystemMessage message is reserved for specific lifecycle messages used by the actor system
type SystemMessage interface {
SystemMessage()
}
// A ReceiveTimeout message is sent to an actor after the Context.ReceiveTimeout duration has expired
type ReceiveTimeout struct{}
// A Restarting message is sent to an actor when the actor is being restarted by the system due to a failure
type Restarting struct{}
// A Stopping message is sent to an actor prior to the actor being stopped
type Stopping struct{}
// A Stopped message is sent to the actor once it has been stopped. A stopped actor will receive no further messages
type Stopped struct{}
// A Started message is sent to an actor once it has been started and ready to begin receiving messages.
type Started struct{}
// Restart is message sent by the actor system to control the lifecycle of an actor
type Restart struct{}
type Failure struct {
Who *PID
Reason interface{}
RestartStats *RestartStatistics
Message interface{}
}
type continuation struct {
message interface{}
f func()
}
func (*Restarting) AutoReceiveMessage() {}
func (*Stopping) AutoReceiveMessage() {}
func (*Stopped) AutoReceiveMessage() {}
func (*PoisonPill) AutoReceiveMessage() {}
func (*Started) SystemMessage() {}
func (*Stop) SystemMessage() {}
func (*Watch) SystemMessage() {}
func (*Unwatch) SystemMessage() {}
func (*Terminated) SystemMessage() {}
func (*Failure) SystemMessage() {}
func (*Restart) SystemMessage() {}
func (*continuation) SystemMessage() {}
var (
restartingMessage interface{} = &Restarting{}
stoppingMessage interface{} = &Stopping{}
stoppedMessage interface{} = &Stopped{}
poisonPillMessage interface{} = &PoisonPill{}
receiveTimeoutMessage interface{} = &ReceiveTimeout{}
)
var (
restartMessage interface{} = &Restart{}
startedMessage interface{} = &Started{}
stopMessage interface{} = &Stop{}
resumeMailboxMessage interface{} = &mailbox.ResumeMailbox{}
suspendMailboxMessage interface{} = &mailbox.SuspendMailbox{}
)