[ https://issues.apache.org/jira/browse/PROTON-2830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17854288#comment-17854288 ]
Yuriy Lepikhov edited comment on PROTON-2830 at 6/12/24 7:28 AM: ----------------------------------------------------------------- {quote}If you are unhappy with the free client implementation then you can use the proton engine to implement a client based off the existing source. {quote} I am very happy with free client implementation and very grateful for your work and for the fact that you respond so quickly. I just wanted to notice, that there are existing components in dotnet that might be reused, not a big deal. Thank you! was (Author: ylepikhov): {quote} If you are unhappy with the free client implementation then you can use the proton engine to implement a client based off the existing source. {quote} I am very happy with free client implementation and very grateful for your work and for the fact that you respond so quickly. I just wanted to notice, that there is existing components in dotnet that might be reused, not a big deal. Thank you! > [proton-dotnet] ClientStreamSender lacks async variant of BeginMessage > ---------------------------------------------------------------------- > > Key: PROTON-2830 > URL: https://issues.apache.org/jira/browse/PROTON-2830 > Project: Qpid Proton > Issue Type: Bug > Components: proton-dotnet > Affects Versions: proton-dotnet-1.0.0-M10 > Reporter: Yuriy Lepikhov > Assignee: Timothy A. Bish > Priority: Minor > Fix For: proton-dotnet-1.0.0-M11 > > > ClientStreamSender.BeginMessage is blocking and shouldn't be called in > EventLoop callback. > Call of ClientStreamSender.BeginMessage from EventLoop callback leads to > deadlock. > For example: > {code:java} > using var sender = await > connection.OpenStreamSenderAsync(address).ConfigureAwait(false); > // coninuation will be executed in EventLoop callback, but BeginMessage > publishes event to EventLoop and blocks = deadlock > var message = sender.BeginMessage(); {code} > In general it is good idea not to mix sync and async calls, and > BeginMessageAsync would help in this situation. > > Also, is it necessary to introduce new API such as EventLoop whereas > TaskFactory already exists? > May be something like this would be useful: > {code:java} > ConcurrentExclusiveSchedulerPair concurrentExclusiveSchedulerPair = new > ConcurrentExclusiveSchedulerPair(TaskScheduler.Default, 1, 1); > TaskFactory taskFactory = new > TaskFactory(concurrentExclusiveSchedulerPair.ExclusiveScheduler); > // ... > taskFactory.StartNew(...); {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org