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()); }
/// <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); }
/// <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; }
private BiliBiliPacket(DanmakuOperation operation, string json) { PacketBuffer = Encoder(json, operation); }
private byte[] Decoder(string value, DanmakuOperation operation) { return(null); }