mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 07:25:03 +01:00
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"erupe-ce/common/byteframe"
|
|
"erupe-ce/network/mhfpacket"
|
|
)
|
|
|
|
func handleMsgSysInsertUser(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysDeleteUser(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysSetUserBinary(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgSysSetUserBinary)
|
|
s.server.userBinaryPartsLock.Lock()
|
|
s.server.userBinaryParts[userBinaryPartID{charID: s.charID, index: pkt.BinaryType}] = pkt.RawDataPayload
|
|
s.server.userBinaryPartsLock.Unlock()
|
|
|
|
err := s.server.db.QueryRow("SELECT type2 FROM user_binaries WHERE id=$1", s.charID)
|
|
if err != nil {
|
|
s.server.db.Exec("INSERT INTO user_binaries (id) VALUES ($1)", s.charID)
|
|
}
|
|
|
|
s.server.db.Exec(fmt.Sprintf("UPDATE user_binaries SET type%d=$1 WHERE id=$2", pkt.BinaryType), pkt.RawDataPayload, s.charID)
|
|
|
|
msg := &mhfpacket.MsgSysNotifyUserBinary{
|
|
CharID: s.charID,
|
|
BinaryType: pkt.BinaryType,
|
|
}
|
|
|
|
s.server.BroadcastMHF(msg, s)
|
|
}
|
|
|
|
func handleMsgSysGetUserBinary(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgSysGetUserBinary)
|
|
|
|
// Try to get the data.
|
|
s.server.userBinaryPartsLock.RLock()
|
|
defer s.server.userBinaryPartsLock.RUnlock()
|
|
data, ok := s.server.userBinaryParts[userBinaryPartID{charID: pkt.CharID, index: pkt.BinaryType}]
|
|
resp := byteframe.NewByteFrame()
|
|
|
|
// If we can't get the real data, try to get it from the database.
|
|
if !ok {
|
|
var data []byte
|
|
rows, _ := s.server.db.Queryx(fmt.Sprintf("SELECT type%d FROM user_binaries WHERE id=$1", pkt.BinaryType), pkt.CharID)
|
|
for rows.Next() {
|
|
rows.Scan(&data)
|
|
resp.WriteBytes(data)
|
|
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
|
return
|
|
}
|
|
doAckBufFail(s, pkt.AckHandle, make([]byte, 4))
|
|
return
|
|
} else {
|
|
resp.WriteBytes(data)
|
|
}
|
|
|
|
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
|
}
|
|
|
|
func handleMsgSysNotifyUserBinary(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgMhfGetBbsUserStatus(s *Session, p mhfpacket.MHFPacket) {}
|