package server import ( "git.mascherari.press/cwtch/protocol" "git.mascherari.press/cwtch/server/listen" "git.mascherari.press/cwtch/storage" "github.com/s-rah/go-ricochet/application" "github.com/s-rah/go-ricochet/channels" ) type ServerInstance struct { rai *application.ApplicationInstance ra *application.RicochetApplication msi storage.MessageStoreInterface } func (si *ServerInstance) Init(rai *application.ApplicationInstance, ra *application.RicochetApplication, msi storage.MessageStoreInterface) { si.rai = rai si.ra = ra si.msi = msi } func (si *ServerInstance) HandleFetchRequest() []*protocol.GroupMessage { return si.msi.FetchMessages() } // HandleGroupMessage func (si *ServerInstance) HandleGroupMessage(gm *protocol.GroupMessage) { si.msi.AddMessage(*gm) go si.ra.Broadcast(func(rai *application.ApplicationInstance) { rai.Connection.Do(func() error { channel := rai.Connection.Channel("im.cwtch.server.listen", channels.Inbound) if channel != nil { cslc, ok := channel.Handler.(*listen.CwtchServerListenChannel) if ok { cslc.SendGroupMessage(gm) } } return nil }) }) }