Skip to content

Instantly share code, notes, and snippets.

View teivah's full-sized avatar
Building my newsletter: The Coder Cafe

Teiva Harsanyi teivah

Building my newsletter: The Coder Cafe
View GitHub Profile
parentActor := gosiris.Actor{}
defer parentActor.Close()
gosiris.ActorSystem().RegisterActor("parentActor", &parentActor, nil)
childActor := gosiris.Actor{}
defer childActor.Close()
childActor.React("message", func(context gosiris.Context) {
context.Self.LogInfo(context, "Received %v\n", context.Data)
})
gosiris.ActorSystem().SpawnActor(&parentActor, "childActor", &childActor, nil)
parentActorRef, _ := gosiris.ActorSystem().ActorOf("parentActor")
childActorRef, _ := gosiris.ActorSystem().ActorOf("childActor")
childActorRef.Tell(gosiris.EmptyContext, "message", "Hi! How are you?", parentActorRef)
package main
import (
"gosiris/gosiris"
)
func main() {
gosiris.InitActorSystem(gosiris.SystemOptions{
ActorSystemName: "ActorSystem",
})
type StatefulActor struct {
gosiris.Actor
someState interface{}
}
statefulActor := new(StatefulActor).React("someEvent", func(context gosiris.Context) {
//Some behavior
})
actor.React(gosiris.GosirisMsgChildClosed, func(context gosiris.Context) {
context.Self.LogInfo(context, "My child is closed")
})
context.Self.AskForClose(context.Self)
angry := func(context gosiris.Context) {
if context.Data == "happy" {
context.Self.LogInfo(context, "Unbecome\n")
context.Self.Unbecome(context.MessageType)
} else {
context.Self.LogInfo(context, "Angrily receiving %v\n", context.Data)
}
}
happy := func(context gosiris.Context) {
gosiris.InitActorSystem(gosiris.SystemOptions{
ActorSystemName: "ActorSystem",
RegistryUrl: "http://etcd:2379",
ZipkinOptions: gosiris.ZipkinOptions{
Url: "http://zipkin:9411/api/v1/spans",
Debug: true,
HostPort: "0.0.0.0",
SameSpan: true,
},
})
actor1 := new(gosiris.Actor).React("reply", func(context gosiris.Context) {
context.Self.LogInfo(context, "Received: %v", context.Data)
})
defer actor1.Close()
gosiris.ActorSystem().RegisterActor("actor1", actor1, new(gosiris.ActorOptions)
.SetRemote(true)
.SetRemoteType(gosiris.Amqp)
.SetUrl("amqp://guest:guest@amqp:5672/")
.SetDestination("actor1"))