Goal
Second walking-skeleton slice: round-trip a byte[] through Geode. PutAsync(key, bytes) followed by GetAsync(key) returns equal bytes.
Done when
PutOperation encodes a Put (7) message with key + value parts and parses the Reply (6) for success/exception.
GetOperation encodes a Request (0) message and parses Response (1).
- Both operations handle the
Exception (2) message type — wrap as a typed .NET exception.
- Integration test: against the Testcontainers Geode +
test REPLICATE region, Put("k", new byte[]{1,2,3}) then Get("k") returns [1,2,3].
Tasks
References
cppcache/src/TcrMessage.cpp — addStringPart, addBytesPart, addObjPart, readObjectPart
cppcache/src/ThinClientRegion.cpp — putNoThrow, getNoThrow
Out of scope
- Typed values (Phase 4) —
byte[] only here.
- Bulk operations (
PutAll / GetAll) — Phase 4 or later.
- Region creation — DBA pre-creates
test via gfsh.
Branch
feat/phase-3-put-get
Goal
Second walking-skeleton slice: round-trip a
byte[]through Geode.PutAsync(key, bytes)followed byGetAsync(key)returns equal bytes.Done when
PutOperationencodes aPut (7)message with key + value parts and parses theReply (6)for success/exception.GetOperationencodes aRequest (0)message and parsesResponse (1).Exception (2)message type — wrap as a typed .NET exception.testREPLICATE region,Put("k", new byte[]{1,2,3})thenGet("k")returns[1,2,3].Tasks
src/Geode.Client/Operations/PutOperation.cssrc/Geode.Client/Operations/GetOperation.cssrc/Geode.Client/Operations/GeodeServerException.cssrc/Geode.Client/Operations/MessageDispatcher.cs— routes server replies to the right operation byTransactionId.tests/Geode.Client.Tests/Operations/PutGetEncodingTests.cs(byte fixtures)tests/Geode.Client.IntegrationTests/PutGetTests.csReferences
cppcache/src/TcrMessage.cpp—addStringPart,addBytesPart,addObjPart,readObjectPartcppcache/src/ThinClientRegion.cpp—putNoThrow,getNoThrowOut of scope
byte[]only here.PutAll/GetAll) — Phase 4 or later.testviagfsh.Branch
feat/phase-3-put-get