Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b24e6a5b4a |
25
CHANGELOG.md
25
CHANGELOG.md
@@ -10,6 +10,31 @@ Semver intent:
|
||||
- **minor** — additive features, new hooks, new capability flags
|
||||
- **patch** — bug fixes, security hardening, internal perf
|
||||
|
||||
## 0.4.0 — 2026-04-25
|
||||
|
||||
### Added
|
||||
|
||||
- **`TComSession.HasPendingTx: Boolean`** — public read-only
|
||||
accessor. True iff there are outbound bytes already
|
||||
queued in the send stream that haven't been pushed to
|
||||
the socket yet. Mirror of the same accessor added to
|
||||
fpc-binkp's `TBPSession` in 0.4.0. Lets driver loops
|
||||
pass it as the `WantWrite` flag in
|
||||
`Transport.WaitReady`; primarily a perf improvement for
|
||||
high-volume sends (avoids per-frame idle wait).
|
||||
- Recommended driver loop pattern:
|
||||
```pascal
|
||||
while Session.NextStep do
|
||||
Transport.WaitReady(True, Session.HasPendingTx, 50);
|
||||
```
|
||||
|
||||
### Not changed
|
||||
|
||||
- Wire protocol unchanged; consumers pinned to 0.3.0 can
|
||||
upgrade in place. `HasPendingTx` is purely additive --
|
||||
callers that don't use it keep the old behaviour.
|
||||
- `CM_MIN_COMPATIBLE_VERSION` stays at `0.1.0`.
|
||||
|
||||
## 0.3.0 — 2026-04-24
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -181,6 +181,16 @@ type
|
||||
function Phase: TCometPhase;
|
||||
function Result_: TCometSessionResult;
|
||||
|
||||
{ True iff there are outbound bytes already queued in the
|
||||
send stream that haven't been pushed to the socket yet.
|
||||
Driver loops use this to choose whether WaitReady should
|
||||
also wait for socket WRITE-readiness -- when True,
|
||||
select() returns the moment the kernel send buffer can
|
||||
take more bytes, so high-volume transfers don't pay a
|
||||
50 ms idle wait per frame. Mirror of the same accessor
|
||||
on fpc-binkp's TBPSession. }
|
||||
function HasPendingTx: Boolean;
|
||||
|
||||
{ ---- Hooks for cm.xfer ---- }
|
||||
{ Queue a complete frame onto the outbound stream. Bytes
|
||||
drain to the transport on the next NextStep / Pump. }
|
||||
@@ -1288,6 +1298,12 @@ begin
|
||||
Result := FResult;
|
||||
end;
|
||||
|
||||
function TComSession.HasPendingTx: Boolean;
|
||||
begin
|
||||
Result := (FSendStream <> nil) and
|
||||
((FSendStream.Size - FSendPos) > 0);
|
||||
end;
|
||||
|
||||
procedure TComSession.EmitFrame(PktType, Seq: Byte; const Buf;
|
||||
Len: SizeInt);
|
||||
var
|
||||
|
||||
@@ -21,9 +21,9 @@ interface
|
||||
|
||||
const
|
||||
CM_VERSION_MAJOR = 0;
|
||||
CM_VERSION_MINOR = 3;
|
||||
CM_VERSION_MINOR = 4;
|
||||
CM_VERSION_PATCH = 0;
|
||||
CM_VERSION = '0.3.0';
|
||||
CM_VERSION = '0.4.0';
|
||||
|
||||
{ Oldest version a consumer pinned to CM_VERSION is
|
||||
guaranteed to remain ABI/API-compatible with. Bumped
|
||||
|
||||
Reference in New Issue
Block a user