public class FecEncode extends Object implements IFecEncode
Created by JinMiao 2018/6/6.
| 限定符和类型 | 字段和说明 |
|---|---|
private ReedSolomon |
codec |
private int |
dataShards
消息包长度
|
private io.netty.buffer.ByteBuf[] |
encodeCache |
private int |
headerOffset |
private int |
maxSize |
private long |
next |
private int |
parityShards
冗余包长度
|
private long |
paws |
private int |
payloadOffset |
private io.netty.buffer.ByteBuf[] |
shardCache |
private int |
shardCount |
private int |
shardSize
dataShards+parityShards
|
private io.netty.buffer.ByteBuf |
zeros |
| 构造器和说明 |
|---|
FecEncode(int headerOffset,
ReedSolomon codec,
int mtu) |
| 限定符和类型 | 方法和说明 |
|---|---|
io.netty.buffer.ByteBuf[] |
encode(io.netty.buffer.ByteBuf byteBuf)
使用方法:
1,入bytebuf后 把bytebuf发送出去,并释放bytebuf
2,判断返回值是否为null,如果不为null发送出去并释放它
headerOffset +6字节fectHead + 2字节bodylenth(lenth-headerOffset-6)
1,对数据写入头标记为数据类型 markData
2,写入消息长度
3,获得缓存数据中最大长度,其他的缓存进行扩容到同样长度
4,去掉头长度,进行fec编码
5,对冗余字节数组进行标记为fec makefec
6,返回完整长度
注意: 传入的bytebuf如果需要释放在传入后手动释放。
|
static void |
main(String[] args) |
private void |
markData(io.netty.buffer.ByteBuf byteBuf,
int offset) |
private void |
markParity(io.netty.buffer.ByteBuf byteBuf,
int offset) |
void |
release() |
private int dataShards
private int parityShards
private int shardSize
private long paws
private long next
private int shardCount
private int maxSize
private int headerOffset
private int payloadOffset
private io.netty.buffer.ByteBuf[] shardCache
private io.netty.buffer.ByteBuf[] encodeCache
private io.netty.buffer.ByteBuf zeros
private ReedSolomon codec
public FecEncode(int headerOffset,
ReedSolomon codec,
int mtu)
public io.netty.buffer.ByteBuf[] encode(io.netty.buffer.ByteBuf byteBuf)
headerOffset +6字节fectHead + 2字节bodylenth(lenth-headerOffset-6)
1,对数据写入头标记为数据类型 markData 2,写入消息长度 3,获得缓存数据中最大长度,其他的缓存进行扩容到同样长度 4,去掉头长度,进行fec编码 5,对冗余字节数组进行标记为fec makefec 6,返回完整长度
注意: 传入的bytebuf如果需要释放在传入后手动释放。 返回的bytebuf 也需要自己释放
encode 在接口中 IFecEncodebyteBuf - public void release()
release 在接口中 IFecEncodepublic static void main(String[] args)
private void markData(io.netty.buffer.ByteBuf byteBuf,
int offset)
private void markParity(io.netty.buffer.ByteBuf byteBuf,
int offset)
Copyright © 2022. All rights reserved.