Advertisement
Guest User

C# F# translation

a guest
May 24th, 2025
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. C#
  2. await using var subscription = client.SubscribeToStream(
  3. "some-stream",
  4. FromStream.Start,
  5. cancellationToken: ct);
  6. await foreach (var message in subscription.Messages.WithCancellation(ct)) {
  7. switch (message) {
  8. case StreamMessage.Event(var evnt):
  9. Console.WriteLine($"Received event {evnt.OriginalEventNumber}@{evnt.OriginalStreamId}");
  10. await HandleEvent(evnt);
  11. break;
  12. }
  13. }
  14.  
  15. F#
  16. use subscription = client.SubscribeToStream(
  17. this.StreamName,
  18. checkpoint,
  19. resolveLinkTos = true)
  20.  
  21. let asyncSubscription = AsyncSeq.ofAsyncEnum subscription.Messages
  22.  
  23. logger.LogInformation(
  24. "Projection {Name} STARTED on stream {StreamName}.",
  25. this.Name, this.StreamName)
  26.  
  27. do! asyncSubscription
  28. |> AsyncSeq.foldAsync (fun _ message ->
  29. async {
  30. match message with
  31. | :? StreamMessage.Event as evnt ->
  32. do! this.handleEvent<'TEvent> evnt.ResolvedEvent |> Async.AwaitTask
  33. checkpoint <- FromStream.After(evnt.ResolvedEvent.OriginalEventNumber)
  34. resubscriptionAttempt <- 0
  35. | _ -> ()
  36. return ()
  37. }) ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement