using FishNet.Managing.Scened;
using FishNet.Managing.Server;
using FishNet.Object.Helping;
using FishNet.Transporting;
using UnityEngine;
namespace FishNet.Serializing.Helping
{
    internal static class Broadcasts
    {
        /// 
        /// Writes a broadcast to writer.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        internal static PooledWriter WriteBroadcast(PooledWriter writer, T message, Channel channel)
        {
            writer.WritePacketId(PacketId.Broadcast);
            writer.WriteUInt16(typeof(T).FullName.GetStableHash16()); //muchlater codegen this to pass in hash. use technique similar to rpcs to limit byte/shorts.            
            //Write data to a new writer.
            PooledWriter dataWriter = WriterPool.GetWriter();
            dataWriter.Write(message);
            //Write length of data.
            writer.WriteLength(dataWriter.Length);
            //Write data.
            writer.WriteArraySegment(dataWriter.GetArraySegment());
            dataWriter.Dispose();
            return writer;
        }
    }
}