mirror of
https://github.com/diamondburned/cchat-mock.git
synced 2025-05-06 13:44:22 +00:00
fixed segfault completion bug
This commit is contained in:
parent
4f6dfbfc24
commit
df8d1b10f9
2
go.mod
2
go.mod
|
@ -4,7 +4,7 @@ go 1.14
|
|||
|
||||
require (
|
||||
github.com/Pallinder/go-randomdata v1.2.0
|
||||
github.com/diamondburned/aqs v0.0.0-20200704043812-99b676ee44eb
|
||||
github.com/diamondburned/aqs v0.0.0-20201115033607-76f603ff676a
|
||||
github.com/diamondburned/cchat v0.3.11
|
||||
github.com/lucasb-eyer/go-colorful v1.0.3
|
||||
github.com/pkg/errors v0.9.1
|
||||
|
|
2
go.sum
2
go.sum
|
@ -3,6 +3,8 @@ github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqC
|
|||
github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA=
|
||||
github.com/diamondburned/aqs v0.0.0-20200704043812-99b676ee44eb h1:Ja/niwykeFoSkYxdRRzM8QUAuCswfLmaiBTd2UIU+54=
|
||||
github.com/diamondburned/aqs v0.0.0-20200704043812-99b676ee44eb/go.mod h1:q1MbMBfZrv7xqV8n7LgMwhHs3oBbNwWJes8exs2AmDs=
|
||||
github.com/diamondburned/aqs v0.0.0-20201115033607-76f603ff676a h1:XqKaACqS5vdKzbt0jaTcKfRgpjyjZ7xAXniAALUjElw=
|
||||
github.com/diamondburned/aqs v0.0.0-20201115033607-76f603ff676a/go.mod h1:q1MbMBfZrv7xqV8n7LgMwhHs3oBbNwWJes8exs2AmDs=
|
||||
github.com/diamondburned/cchat v0.2.11 h1:w4c/6t02htGtVj6yIjznecOGMlkcj0TmmLy+K48gHeM=
|
||||
github.com/diamondburned/cchat v0.2.11/go.mod h1:IlMtF+XIvAJh0GL/2yFdf0/34w+Hdy5A1GgvSwAXtQI=
|
||||
github.com/diamondburned/cchat v0.2.12 h1:R4wrBdhELMfhv2Kn3xL/H3ci8UcLXzFRPq1IrY4+js4=
|
||||
|
|
|
@ -17,7 +17,7 @@ type Channel struct {
|
|||
name string
|
||||
user Username
|
||||
|
||||
messenger Messenger
|
||||
messenger *Messenger
|
||||
}
|
||||
|
||||
var _ cchat.Server = (*Channel)(nil)
|
||||
|
@ -40,7 +40,7 @@ func AsCChatServers(channels []*Channel) []cchat.Server {
|
|||
|
||||
// NewChannel creates a new random channel.
|
||||
func NewChannel(state *shared.State) *Channel {
|
||||
return &Channel{
|
||||
ch := &Channel{
|
||||
id: state.NextID(),
|
||||
name: "#" + randomdata.Noun(),
|
||||
user: Username{
|
||||
|
@ -51,6 +51,10 @@ func NewChannel(state *shared.State) *Channel {
|
|||
},
|
||||
},
|
||||
}
|
||||
|
||||
ch.messenger = NewMessenger(ch)
|
||||
|
||||
return ch
|
||||
}
|
||||
|
||||
func (ch *Channel) ID() string {
|
||||
|
@ -66,6 +70,5 @@ func (ch *Channel) AsNicknamer() cchat.Nicknamer {
|
|||
}
|
||||
|
||||
func (ch *Channel) AsMessenger() cchat.Messenger {
|
||||
ch.messenger.channel = ch
|
||||
return &ch.messenger
|
||||
return ch.messenger
|
||||
}
|
||||
|
|
|
@ -44,6 +44,22 @@ type Messenger struct {
|
|||
|
||||
var _ cchat.Messenger = (*Messenger)(nil)
|
||||
|
||||
func NewMessenger(ch *Channel) *Messenger {
|
||||
msgr := Messenger{}
|
||||
msgr.channel = ch
|
||||
// Initialize.
|
||||
msgr.messages = make(map[uint32]message.Message, FetchBacklog)
|
||||
msgr.messageids = make([]uint32, 0, FetchBacklog)
|
||||
|
||||
// Allocate 3 channels that we won't clean up, because we're lazy.
|
||||
msgr.send = NewMessageSender(&msgr)
|
||||
msgr.edit = make(chan message.Message)
|
||||
msgr.del = make(chan message.Header)
|
||||
msgr.typ = typing.NewSubscriber(message.NewAuthor(msgr.channel.user.Rich()))
|
||||
|
||||
return &msgr
|
||||
}
|
||||
|
||||
func (msgr *Messenger) JoinServer(ctx context.Context, ct cchat.MessagesContainer) (func(), error) {
|
||||
// Is this a fresh channel? If yes, generate messages with some IO latency.
|
||||
if len(msgr.messageids) == 0 || msgr.messages == nil {
|
||||
|
@ -52,16 +68,6 @@ func (msgr *Messenger) JoinServer(ctx context.Context, ct cchat.MessagesContaine
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// Initialize.
|
||||
msgr.messages = make(map[uint32]message.Message, FetchBacklog)
|
||||
msgr.messageids = make([]uint32, 0, FetchBacklog)
|
||||
|
||||
// Allocate 3 channels that we won't clean up, because we're lazy.
|
||||
msgr.send = NewMessageSender(msgr)
|
||||
msgr.edit = make(chan message.Message)
|
||||
msgr.del = make(chan message.Header)
|
||||
msgr.typ = typing.NewSubscriber(message.NewAuthor(msgr.channel.user.Rich()))
|
||||
|
||||
// Generate the backlog.
|
||||
for i := 0; i < FetchBacklog; i++ {
|
||||
msgr.addMessage(msgr.randomMsg(), ct)
|
||||
|
|
Loading…
Reference in a new issue