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" "mongo.games.com/goserver/srvlib/protocol" ) func init() { netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &protocol.SSPacketBroadcast{}, BroadcastHandler) } 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())) } } return nil } func CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetId int, data interface{}) (proto.Message, error) { pack := &protocol.SSPacketBroadcast{ SessParam: sp, PacketId: int32(packetId), } if byteData, ok := data.([]byte); ok { pack.Data = byteData } else { byteData, err := netlib.MarshalPacket(packetId, data) if err == nil { pack.Data = byteData } else { logger.Logger.Warnf("CreateBroadcastPacket err:%v", err) return nil, err } } return pack, nil }