예제 #1
0
        private byte[] Encoder(string value, DanmakuOperation operation)
        {
            var data      = Encoding.UTF8.GetBytes(value);
            var packetLen = 16 + data.Length;
            var header    = new byte[] { 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0, (byte)operation, 0, 0, 0, 1 };

            WriteInt(header, 0, 4, packetLen);
            return(header.Concat(data).ToArray());
        }
예제 #2
0
        /// <summary>
        /// Constructor of DanmakuPacket.
        /// </summary>
        /// <param name="version"></param>
        /// <param name="operation"></param>
        /// <param name="sequence"></param>
        /// <param name="body"></param>
        private BiliBiliPacket(DanmakuOperation operation, JSONObject json)
        {
            //var headerBytes = new byte[HeaderLength];
            //var bodyBuffer = Encoding.UTF8.GetBytes(json.ToString());
            //DataView.SetInt32(headerBytes, PacketOffset, HeaderLength + bodyBuffer.Length);
            //DataView.SetInt16(headerBytes, HeaderOffset, HeaderLength);
            //DataView.SetInt16(headerBytes, VersionOffset, version);
            //DataView.SetInt32(headerBytes, OperationOffset, (int)operation);
            //DataView.SetInt32(headerBytes, SequenceOffset, sequence);

            //var packetBuffer = DataView.MergeBytes(new List<byte[]> {
            //	headerBytes, bodyBuffer
            //});
            PacketBuffer = Encoder(json.ToString(), operation);
        }
예제 #3
0
        /// <summary>
        /// Constructor of DanmakuPacket.
        /// </summary>
        /// <param name="version"></param>
        /// <param name="operation"></param>
        /// <param name="sequence"></param>
        /// <param name="body"></param>
        public DanmakuPacket(int version, DanmakuOperation operation, int sequence, string body)
        {
            var headerBytes = new byte[HeaderLength];
            var bodyBuffer  = Encoding.UTF8.GetBytes(body);

            DataView.SetInt32(headerBytes, PacketOffset, HeaderLength + bodyBuffer.Length);
            DataView.SetInt16(headerBytes, HeaderOffset, HeaderLength);
            DataView.SetInt16(headerBytes, VersionOffset, version);
            DataView.SetInt32(headerBytes, OperationOffset, (int)operation);
            DataView.SetInt32(headerBytes, SequenceOffset, sequence);

            var packetBuffer = DataView.MergeBytes(new List <byte[]> {
                headerBytes, bodyBuffer
            });

            this.PacketBuffer = packetBuffer;
        }
예제 #4
0
 private BiliBiliPacket(DanmakuOperation operation, string json)
 {
     PacketBuffer = Encoder(json, operation);
 }
예제 #5
0
 private byte[] Decoder(string value, DanmakuOperation operation)
 {
     return(null);
 }