23 01 25
Сделал более понятный названия у интерфейса BodyHasLine (всё работает)
This commit is contained in:
parent
c1964adb58
commit
9f1ca37977
@ -3,25 +3,27 @@ package blockchain.body;
|
||||
/**
|
||||
* BodyHasLine — для типов, которые имеют линейные поля в body.
|
||||
*
|
||||
* Новый префикс для line-сообщений (BigEndian) в НАЧАЛЕ bodyBytes:
|
||||
* [4] lineCode код линии:
|
||||
* - 0 для нулевой линии
|
||||
* - для каналов: blockNumber "заглавия линии" (CREATE_CHANNEL или HEADER/0)
|
||||
* [4] prevLineNumber
|
||||
* [32] prevLineHash32
|
||||
* [4] thisLineNumber
|
||||
* Line-prefix (BigEndian) в НАЧАЛЕ bodyBytes:
|
||||
* [4] lineCode код линии (root-идентификатор):
|
||||
* - 0 для дефолтной линии/канала "0" (root = HEADER, blockNumber=0)
|
||||
* - для канала "X": blockNumber root-блока канала (CREATE_CHANNEL)
|
||||
*
|
||||
* [4] prevLineBlockGlobalNumber глобальный номер предыдущего блока в этой линии
|
||||
* [32] prevLineBlockHash32 hash32 предыдущего блока в этой линии
|
||||
*
|
||||
* [4] lineSeq порядковый номер сообщения внутри линии (1..N)
|
||||
*
|
||||
* Важно:
|
||||
* - Правильность prevLineNumber/hash и согласование thisLineNumber
|
||||
* проверяется на сервере/в БД при вставке (а не в body.check()).
|
||||
* - Проверка связности линии (prevLineBlockGlobalNumber ↔ prevLineBlockHash32) и корректности lineSeq
|
||||
* выполняется на сервере/в БД при вставке (а не в body.check()).
|
||||
*/
|
||||
public interface BodyHasLine {
|
||||
|
||||
int lineCode();
|
||||
|
||||
int prevLineNumber();
|
||||
int prevLineBlockGlobalNumber();
|
||||
|
||||
byte[] prevLineHash32();
|
||||
byte[] prevLineBlockHash32();
|
||||
|
||||
int thisLineNumber();
|
||||
int lineSeq();
|
||||
}
|
||||
@ -248,9 +248,9 @@ public final class ConnectionBody implements BodyRecord, BodyHasTarget, BodyHasL
|
||||
|
||||
/* ====================== BodyHasLine ====================== */
|
||||
@Override public int lineCode() { return lineCode; }
|
||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
||||
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int lineSeq() { return thisLineNumber; }
|
||||
|
||||
/* ====================== BodyHasTarget ===================== */
|
||||
@Override public String toBchName() { return toBlockchainName; }
|
||||
|
||||
@ -164,7 +164,7 @@ public final class CreateChannelBody implements BodyRecord, BodyHasLine {
|
||||
|
||||
/* ====================== BodyHasLine ====================== */
|
||||
@Override public int lineCode() { return lineCode; }
|
||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
||||
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int lineSeq() { return thisLineNumber; }
|
||||
}
|
||||
@ -505,12 +505,12 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine {
|
||||
|
||||
/* ====================== BodyHasLine ====================== */
|
||||
@Override public int lineCode() { return lineCode; }
|
||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineHash32() {
|
||||
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineBlockHash32() {
|
||||
if (prevLineHash32 == null) return null;
|
||||
return Arrays.copyOf(prevLineHash32, 32);
|
||||
}
|
||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
||||
@Override public int lineSeq() { return thisLineNumber; }
|
||||
|
||||
/* ====================== BodyHasTarget ===================== */
|
||||
@Override public String toBchName() { return toBlockchainName; }
|
||||
|
||||
@ -219,9 +219,9 @@ public final class TextLineBody implements BodyRecord, BodyHasLine, BodyHasTarge
|
||||
|
||||
/* ====================== BodyHasLine ====================== */
|
||||
@Override public int lineCode() { return lineCode; }
|
||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineHash32() { return Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
||||
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineBlockHash32() { return Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int lineSeq() { return thisLineNumber; }
|
||||
|
||||
/* ====================== BodyHasTarget ===================== */
|
||||
@Override public String toBchName() { return null; } // по ТЗ: не хранить
|
||||
|
||||
@ -195,7 +195,7 @@ public final class UserParamBody implements BodyRecord, BodyHasLine {
|
||||
|
||||
/* ====================== BodyHasLine ====================== */
|
||||
@Override public int lineCode() { return lineCode; }
|
||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
||||
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||
@Override public int lineSeq() { return thisLineNumber; }
|
||||
}
|
||||
@ -232,9 +232,9 @@ public final class Net_AddBlock_Handler implements JsonMessageHandler {
|
||||
|
||||
if (block.body instanceof BodyHasLine bl) {
|
||||
lineCode = bl.lineCode();
|
||||
prevLineNumber = bl.prevLineNumber();
|
||||
prevLineHash32 = bl.prevLineHash32();
|
||||
thisLineNumber = bl.thisLineNumber();
|
||||
prevLineNumber = bl.prevLineBlockGlobalNumber();
|
||||
prevLineHash32 = bl.prevLineBlockHash32();
|
||||
thisLineNumber = bl.lineSeq();
|
||||
|
||||
// Нормализация: -1 не пишем в БД (для совместимости со старым TextBody)
|
||||
if (prevLineNumber != null && prevLineNumber == -1) {
|
||||
|
||||
@ -294,13 +294,13 @@ public final class ChainState {
|
||||
if (t == TYPE_CONNECTION && body instanceof BodyHasLine hlc) {
|
||||
connectionLine.lastGlobalNumber = blockNumber;
|
||||
connectionLine.lastHashHex = hex64;
|
||||
connectionLine.lastThisLineNumber = hlc.thisLineNumber();
|
||||
connectionLine.lastThisLineNumber = hlc.lineSeq();
|
||||
return;
|
||||
}
|
||||
if (t == TYPE_USER_PARAM && body instanceof BodyHasLine hlu) {
|
||||
userParamLine.lastGlobalNumber = blockNumber;
|
||||
userParamLine.lastHashHex = hex64;
|
||||
userParamLine.lastThisLineNumber = hlu.thisLineNumber();
|
||||
userParamLine.lastThisLineNumber = hlu.lineSeq();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user