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