Add chat session
This commit is contained in:
50
chat/sign/session.go
Normal file
50
chat/sign/session.go
Normal 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")
|
||||
}
|
@ -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),
|
||||
|
@ -1 +0,0 @@
|
||||
package sign
|
Reference in New Issue
Block a user