Skip to content

Commit

Permalink
other: v2 优化体验
Browse files Browse the repository at this point in the history
  • Loading branch information
kercylan98 committed Jun 12, 2024
1 parent bd92df0 commit 9987b13
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 7 deletions.
3 changes: 2 additions & 1 deletion minotaur/application_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package minotaur_test

import (
"github.com/gobwas/ws"
"github.com/kercylan98/minotaur/minotaur"
"github.com/kercylan98/minotaur/minotaur/transport"
"github.com/kercylan98/minotaur/minotaur/transport/network"
Expand All @@ -16,7 +17,7 @@ func TestNewApplication(t *testing.T) {
Protocol().
SubscribeConnOpenedEvent("conn_opened",
func(ctx vivid.MessageContext, event transport.ServerConnOpenedEvent) {
t.Log("conn opened")
event.Write(transport.NewPacket([]byte("Hello, World!")).SetContext(ws.OpText))
},
)
}),
Expand Down
17 changes: 14 additions & 3 deletions minotaur/transport/conn_actor.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ type (
ConnReceivePacketMessage struct {
Packet
}

ConnSubscribeReceivePacketEvent struct {
Id string
Handler func(ctx vivid.MessageContext, event ConnReceivePacketMessage)
}
)

func newConn(server vivid.ActorContext, c net.Conn, writer ConnWriter) *ConnActor {
Expand Down Expand Up @@ -42,19 +47,21 @@ type ConnActor struct {
}

func (c *ConnActor) OnReceive(ctx vivid.MessageContext) {
switch ctx.GetMessage().(type) {
switch m := ctx.GetMessage().(type) {
case vivid.OnBoot:
c.reader = ctx.GetRef()
c.writer = vivid.ActorOf[*ConnWriteActor](c.server, vivid.NewActorOptions[*ConnWriteActor]().
WithName(fmt.Sprintf("conn-write-%s", c.conn.RemoteAddr().String())).
WithName(fmt.Sprintf("conn-writer-%s", c.conn.RemoteAddr().String())).
WithConstruct(func() *ConnWriteActor {
return &ConnWriteActor{
conn: c.conn,
writer: c.connWriter,
}
}()))
case ConnSubscribeReceivePacketEvent:
ctx.GetSystem().Subscribe(m.Id, ctx, ConnReceivePacketMessage{})
case ConnReceivePacketMessage:

ctx.GetSystem().Publish(c.reader, m.Packet)
}
}

Expand All @@ -72,6 +79,10 @@ func (c *ConnActor) React(packet Packet) {
c.reader.Tell(ConnReceivePacketMessage{packet})
}

func (c *ConnActor) SubscribeReceivePacketEvent(id vivid.SubscribeId, handler func(ctx vivid.MessageContext, event ConnReceivePacketMessage)) {
c.reader.Tell(ConnSubscribeReceivePacketEvent{id, handler})
}

func (c *ConnActor) Close() {
_ = c.conn.Close()
c.reader.Tell(vivid.OnTerminate{})
Expand Down
7 changes: 6 additions & 1 deletion minotaur/transport/server_actor.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,12 @@ func (s *ServerActor) onServerShutdown(ctx vivid.MessageContext, m ServerShutdow
func (s *ServerActor) onServerConnOpened(ctx vivid.MessageContext, m ServerConnOpenedMessage) {
conn := newConn(ctx.GetContext(), m.conn, m.writer)
vivid.ActorOfI(ctx, conn, func(options *vivid.ActorOptions[*ConnActor]) {
options.WithName(fmt.Sprintf("conn-%s", m.conn.RemoteAddr().String()))
options.
WithName(fmt.Sprintf("conn-reader-%s", m.conn.RemoteAddr().String())).
WithSupervisor(func(message, reason vivid.Message) vivid.Directive {
log.Error("connOpened", log.String("message", reflect.TypeOf(message).String()), log.Any("reason", reason))
return vivid.DirectiveStop
})
})
s.connections[m.conn] = conn
ctx.Reply(ConnCore(conn))
Expand Down
4 changes: 2 additions & 2 deletions minotaur/vivid/actor_system.go
Original file line number Diff line number Diff line change
Expand Up @@ -464,9 +464,9 @@ func generateActor[T Actor](system *ActorSystem, actor T, options *ActorOptions[

// 生命周期
if restart {
core.Tell(OnRestart{})
core.Tell(OnRestart{}, WithInstantly(true))
}
core.Tell(OnBoot{})
core.Tell(OnBoot{}, WithInstantly(true))

return core, nil
}
Expand Down

0 comments on commit 9987b13

Please sign in to comment.