添加消息转发协议
This commit is contained in:
parent
d23b68f6f3
commit
5ada0828ca
|
@ -1,8 +1,6 @@
|
|||
package action
|
||||
|
||||
import (
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"mongo.games.com/goserver/core/netlib"
|
||||
"mongo.games.com/goserver/srvlib"
|
||||
|
@ -17,29 +15,57 @@ func BroadcastHandler(s *netlib.Session, packetId int, data interface{}) error {
|
|||
if bp, ok := data.(*protocol.SSPacketBroadcast); ok {
|
||||
pd := bp.GetData()
|
||||
sp := bp.GetSessParam()
|
||||
if bcss := sp.GetBcss(); bcss != nil {
|
||||
srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType()))
|
||||
if v := sp.GetBcss(); v != nil {
|
||||
srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(v.GetSArea()), int(v.GetSType()))
|
||||
return nil
|
||||
}
|
||||
srvlib.ClientSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetId int, data interface{}) (proto.Message, error) {
|
||||
pack := &protocol.SSPacketBroadcast{
|
||||
func BroadcastMessage(areaId, serverType int, packetId int, pack interface{}, sp *protocol.BCSessionUnion) error {
|
||||
if packetId == 0 || pack == nil {
|
||||
return nil
|
||||
}
|
||||
data := &protocol.SSPacketBroadcast{
|
||||
SessParam: sp,
|
||||
PacketId: int32(packetId),
|
||||
}
|
||||
|
||||
if byteData, ok := data.([]byte); ok {
|
||||
pack.Data = byteData
|
||||
if byteData, ok := pack.([]byte); ok {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, data)
|
||||
byteData, err := netlib.MarshalPacket(packetId, pack)
|
||||
if err == nil {
|
||||
pack.Data = byteData
|
||||
data.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Warnf("CreateBroadcastPacket err:%v", err)
|
||||
return nil, err
|
||||
logger.Logger.Errorf("CreateBroadcastPacket err:%v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return pack, nil
|
||||
srvlib.ServerSessionMgrSington.Broadcast(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), data, areaId, serverType)
|
||||
return nil
|
||||
}
|
||||
|
||||
func BroadcastMessageToServer(s *netlib.Session, packetId int, pack interface{}, sp *protocol.BCSessionUnion) error {
|
||||
if packetId == 0 || pack == nil || s == nil {
|
||||
return nil
|
||||
}
|
||||
data := &protocol.SSPacketBroadcast{
|
||||
SessParam: sp,
|
||||
PacketId: int32(packetId),
|
||||
}
|
||||
if byteData, ok := pack.([]byte); ok {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, pack)
|
||||
if err == nil {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Errorf("CreateBroadcastPacket err:%v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
s.Send(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), data)
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package action
|
||||
|
||||
import (
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"mongo.games.com/goserver/core/netlib"
|
||||
"mongo.games.com/goserver/srvlib"
|
||||
"mongo.games.com/goserver/srvlib/protocol"
|
||||
|
@ -37,3 +38,49 @@ func getSession(su *protocol.MCSessionUnion) *netlib.Session {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func MulticastMessage(areaId, serverType int, packetId int, pack interface{}, sis ...*protocol.MCSessionUnion) error {
|
||||
if packetId == 0 || pack == nil {
|
||||
return nil
|
||||
}
|
||||
data := &protocol.SSPacketMulticast{
|
||||
Sessions: sis,
|
||||
PacketId: int32(packetId),
|
||||
}
|
||||
if byteData, ok := pack.([]byte); ok {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, pack)
|
||||
if err == nil {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Errorf("CreateMulticastPacket err:%v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
srvlib.ServerSessionMgrSington.Broadcast(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), data, areaId, serverType)
|
||||
return nil
|
||||
}
|
||||
|
||||
func MulticastMessageToServer(s *netlib.Session, packetId int, pack interface{}, sis ...*protocol.MCSessionUnion) error {
|
||||
if packetId == 0 || pack == nil || s == nil {
|
||||
return nil
|
||||
}
|
||||
data := &protocol.SSPacketMulticast{
|
||||
Sessions: sis,
|
||||
PacketId: int32(packetId),
|
||||
}
|
||||
if byteData, ok := pack.([]byte); ok {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, pack)
|
||||
if err == nil {
|
||||
data.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Errorf("CreateMulticastPacket err:%v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
s.Send(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), data)
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue