Add chat session

This commit is contained in:
Tnze
2023-01-01 13:17:07 +08:00
parent 77857a1a85
commit fa83b762bf
15 changed files with 244 additions and 25 deletions

50
chat/sign/session.go Normal file
View File

@ -0,0 +1,50 @@
package sign
import (
"io"
"github.com/google/uuid"
"github.com/Tnze/go-mc/chat"
pk "github.com/Tnze/go-mc/net/packet"
"github.com/Tnze/go-mc/yggdrasil/user"
)
type Message struct {
Link struct {
Index int
Sender uuid.UUID
Session uuid.UUID
}
Signature []byte
PackedMessageBody
Unsigned *chat.Message
FilterMask
}
type Session struct {
sessionID uuid.UUID
publicKey user.PublicKey
}
func (s Session) WriteTo(w io.Writer) (n int64, err error) {
n1, err := pk.UUID(s.sessionID).WriteTo(w)
if err != nil {
return n1, err
}
n2, err := s.publicKey.WriteTo(w)
return n1 + n2, err
}
func (s *Session) ReadFrom(r io.Reader) (n int64, err error) {
n1, err := ((*pk.UUID)(&s.sessionID)).ReadFrom(r)
if err != nil {
return n1, err
}
n2, err := s.publicKey.ReadFrom(r)
return n1 + n2, err
}
func (s *Session) Update(msg Message) bool {
panic("todo")
}

View File

@ -4,18 +4,19 @@ import (
"io"
"time"
pk "github.com/Tnze/go-mc/net/packet"
"github.com/google/uuid"
pk "github.com/Tnze/go-mc/net/packet"
)
type MessageBody struct {
type PackedMessageBody struct {
PlainMsg string
Timestamp time.Time
Salt int64
LastSeen []PackedSignature
}
func (m *MessageBody) WriteTo(w io.Writer) (n int64, err error) {
func (m *PackedMessageBody) WriteTo(w io.Writer) (n int64, err error) {
return pk.Tuple{
pk.String(m.PlainMsg),
pk.Long(m.Timestamp.UnixMilli()),
@ -24,7 +25,7 @@ func (m *MessageBody) WriteTo(w io.Writer) (n int64, err error) {
}.WriteTo(w)
}
func (m *MessageBody) ReadFrom(r io.Reader) (n int64, err error) {
func (m *PackedMessageBody) ReadFrom(r io.Reader) (n int64, err error) {
var timestamp pk.Long
n, err = pk.Tuple{
(*pk.String)(&m.PlainMsg),

View File

@ -1 +0,0 @@
package sign