@@ -122,6 +122,18 @@ string status = JsonDocument.Parse(statusResponse.Content)
122122 .GetProperty (" state" )
123123 .GetString ();
124124
125+ Console .WriteLine ($" Transaction status: {status }" );
126+
127+ // Wait for the entry to be committed
128+ while (status == " Pending" )
129+ {
130+ statusResponse = ledgerClient .GetTransactionStatus (transactionId );
131+ status = JsonDocument .Parse (statusResponse .Content )
132+ .RootElement
133+ .GetProperty (" state" )
134+ .GetString ();
135+ }
136+
125137Console .WriteLine ($" Transaction status: {status }" );
126138```
127139
@@ -157,18 +169,45 @@ Response postResponse = ledgerClient.PostLedgerEntry(
157169 RequestContent .Create (
158170 new { contents = " Hello world!" }));
159171postResponse .Headers .TryGetValue (ConfidentialLedgerConstants .Headers .TransactionId , out string transactionId );
160- string subLedgerId = JsonDocument .Parse (statusResponse .Content )
172+ string subLedgerId = JsonDocument .Parse (postResponse .Content )
161173 .RootElement
162174 .GetProperty (" subLedgerId" )
163175 .GetString ();
164176
177+ // Wait for the entry to be available.
178+ status = " Pending" ;
179+ while (status == " Pending" )
180+ {
181+ statusResponse = ledgerClient .GetTransactionStatus (transactionId );
182+ status = JsonDocument .Parse (statusResponse .Content )
183+ .RootElement
184+ .GetProperty (" state" )
185+ .GetString ();
186+ }
187+
188+ Console .WriteLine ($" Transaction status: {status }" );
189+
165190// Provide both the transactionId and subLedgerId.
166191Response getBySubledgerResponse = ledgerClient .GetLedgerEntry (transactionId , subLedgerId );
167192
168- string contents = JsonDocument .Parse (getBySubledgerResponse .Content )
169- .RootElement
170- .GetProperty (" contents" )
171- .GetString ();
193+ // Try until the entry is available.
194+ bool loaded = false ;
195+ JsonElement element = default ;
196+ string contents = null ;
197+ while (! loaded )
198+ {
199+ loaded = JsonDocument .Parse (getBySubledgerResponse .Content )
200+ .RootElement
201+ .TryGetProperty (" entry" , out element );
202+ if (loaded )
203+ {
204+ contents = element .GetProperty (" contents" ).GetString ();
205+ }
206+ else
207+ {
208+ getBySubledgerResponse = ledgerClient .GetLedgerEntry (transactionId , subLedgerId );
209+ }
210+ }
172211
173212Console .WriteLine (contents ); // "Hello world!"
174213
@@ -177,6 +216,7 @@ getBySubledgerResponse = ledgerClient.GetLedgerEntry(transactionId);
177216
178217string subLedgerId2 = JsonDocument .Parse (getBySubledgerResponse .Content )
179218 .RootElement
219+ .GetProperty (" entry" )
180220 .GetProperty (" subLedgerId" )
181221 .GetString ();
182222
@@ -199,31 +239,104 @@ ledgerClient.PostLedgerEntry(
199239
200240firstPostResponse .Headers .TryGetValue (ConfidentialLedgerConstants .Headers .TransactionId , out string transactionId );
201241
242+ // Wait for the entry to be committed
243+ status = " Pending" ;
244+ while (status == " Pending" )
245+ {
246+ statusResponse = ledgerClient .GetTransactionStatus (transactionId );
247+ status = JsonDocument .Parse (statusResponse .Content )
248+ .RootElement
249+ .GetProperty (" state" )
250+ .GetString ();
251+ }
252+
202253// The ledger entry written at the transactionId in firstResponse is retrieved from the default sub-ledger.
203254Response getResponse = ledgerClient .GetLedgerEntry (transactionId );
255+
256+ // Try until the entry is available.
257+ loaded = false ;
258+ element = default ;
259+ contents = null ;
260+ while (! loaded )
261+ {
262+ loaded = JsonDocument .Parse (getResponse .Content )
263+ .RootElement
264+ .TryGetProperty (" entry" , out element );
265+ if (loaded )
266+ {
267+ contents = element .GetProperty (" contents" ).GetString ();
268+ }
269+ else
270+ {
271+ getResponse = ledgerClient .GetLedgerEntry (transactionId , subLedgerId );
272+ }
273+ }
274+
204275string firstEntryContents = JsonDocument .Parse (getResponse .Content )
205276 .RootElement
277+ .GetProperty (" entry" )
206278 .GetProperty (" contents" )
207279 .GetString ();
208280
209281Console .WriteLine (firstEntryContents ); // "Hello world 0"
210282
211283// This will return the latest entry available in the default sub-ledger.
212284getResponse = ledgerClient .GetCurrentLedgerEntry ();
213- string latestDefaultSubLedger = JsonDocument .Parse (getResponse .Content )
214- .RootElement
215- .GetProperty (" contents" )
216- .GetString ();
285+
286+ // Try until the entry is available.
287+ loaded = false ;
288+ element = default ;
289+ string latestDefaultSubLedger = null ;
290+ while (! loaded )
291+ {
292+ loaded = JsonDocument .Parse (getResponse .Content )
293+ .RootElement
294+ .TryGetProperty (" contents" , out element );
295+ if (loaded )
296+ {
297+ latestDefaultSubLedger = element .GetString ();
298+ }
299+ else
300+ {
301+ getResponse = ledgerClient .GetCurrentLedgerEntry ();
302+ }
303+ }
217304
218305Console .WriteLine ($" The latest ledger entry from the default sub-ledger is {latestDefaultSubLedger }" ); // "Hello world 1"
219306
220307// The ledger entry written at subLedgerTransactionId is retrieved from the sub-ledger 'sub-ledger'.
221308subLedgerPostResponse .Headers .TryGetValue (ConfidentialLedgerConstants .TransactionIdHeaderName , out string subLedgerTransactionId );
309+
310+ // Wait for the entry to be committed
311+ status = " Pending" ;
312+ while (status == " Pending" )
313+ {
314+ statusResponse = ledgerClient .GetTransactionStatus (subLedgerTransactionId );
315+ status = JsonDocument .Parse (statusResponse .Content )
316+ .RootElement
317+ .GetProperty (" state" )
318+ .GetString ();
319+ }
320+
222321getResponse = ledgerClient .GetLedgerEntry (subLedgerTransactionId , " my sub-ledger" );
223- string subLedgerEntry = JsonDocument .Parse (getResponse .Content )
224- .RootElement
225- .GetProperty (" contents" )
226- .GetString ();
322+ // Try until the entry is available.
323+ loaded = false ;
324+ element = default ;
325+ string subLedgerEntry = null ;
326+ while (! loaded )
327+ {
328+ loaded = JsonDocument .Parse (getResponse .Content )
329+ .RootElement
330+ .TryGetProperty (" entry" , out element );
331+ if (loaded )
332+ {
333+ subLedgerEntry = element .GetProperty (" contents" ).GetString ();
334+ }
335+ else
336+ {
337+ getResponse = ledgerClient .GetLedgerEntry (subLedgerTransactionId , " my sub-ledger" );
338+ }
339+ }
227340
228341Console .WriteLine (subLedgerEntry ); // "Hello world sub-ledger 0"
229342
@@ -242,7 +355,7 @@ Console.WriteLine($"The latest ledger entry from the sub-ledger is {latestSubLed
242355Ledger entries in a sub-ledger may be retrieved over a range of transaction ids.
243356
244357``` C# Snippet:RangedQuery
245- ledgerClient .GetLedgerEntries (fromTransactionId : " 2.1" , toTransactionId : " 4.5 " );
358+ ledgerClient .GetLedgerEntries (fromTransactionId : " 2.1" , toTransactionId : subLedgerTransactionId );
246359```
247360
248361### User management
0 commit comments