Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a fn to check if two senders or two receivers use the same channel #98

Merged
merged 2 commits into from
Jul 29, 2024

Conversation

rklaehn
Copy link
Contributor

@rklaehn rklaehn commented Jul 23, 2024

I am porting some code from flume to async_channel, and this is one fn that I am sorely missing.

The implementation seems to be quite simple.

rklaehn added a commit to n0-computer/iroh that referenced this pull request Jul 24, 2024
This is mostly a 1:1 replacement, except for the fact that the same_channel
api is missing from async_channel. So I replaced it with some ugly code
that uses the fact that a async_channel Sender or Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98 is
merged, but until then I think it is fine.
rklaehn added a commit to n0-computer/iroh that referenced this pull request Jul 24, 2024
This is mostly a 1:1 replacement, except for the fact that the same_channel
api is missing from async_channel. So I replaced it with some ugly code
that uses the fact that a async_channel Sender or Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98 is
merged, but until then I think it is fine.
Copy link
Member

@notgull notgull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add examples of usage to these two functions?

github-merge-queue bot pushed a commit to n0-computer/iroh that referenced this pull request Jul 29, 2024
## Description

This is mostly a 1:1 replacement, except for the fact that the
same_channel api is missing from async_channel. So I replaced it with
some ugly code that uses the fact that a async_channel Sender or
Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98
is merged, but until then I think it is fine.

## Breaking Changes

None

## Notes & open questions

Note: we can not use tokio::sync::mpsc::Channel for the actor because we
can't control from which thread Drop is called.
Note: some streams were Unpin before, but it was not explicit. Now I
added Unpin explicitly (and boxed the stream to make it true). Not sure
if the version check would catch this, pretty sure that not. But taking
away Unpin would have been a breaking change.

## Change checklist

- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
@rklaehn rklaehn requested a review from notgull July 29, 2024 09:01
Copy link
Member

@notgull notgull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@notgull notgull merged commit 74b2c74 into smol-rs:master Jul 29, 2024
7 checks passed
@dignifiedquire dignifiedquire deleted the same-channel branch July 29, 2024 18:21
rklaehn added a commit to n0-computer/iroh-blobs that referenced this pull request Oct 22, 2024
## Description

This is mostly a 1:1 replacement, except for the fact that the
same_channel api is missing from async_channel. So I replaced it with
some ugly code that uses the fact that a async_channel Sender or
Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98
is merged, but until then I think it is fine.

## Breaking Changes

None

## Notes & open questions

Note: we can not use tokio::sync::mpsc::Channel for the actor because we
can't control from which thread Drop is called.
Note: some streams were Unpin before, but it was not explicit. Now I
added Unpin explicitly (and boxed the stream to make it true). Not sure
if the version check would catch this, pretty sure that not. But taking
away Unpin would have been a breaking change.

## Change checklist

- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
rklaehn added a commit to n0-computer/iroh-blobs that referenced this pull request Oct 22, 2024
## Description

This is mostly a 1:1 replacement, except for the fact that the
same_channel api is missing from async_channel. So I replaced it with
some ugly code that uses the fact that a async_channel Sender or
Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98
is merged, but until then I think it is fine.

## Breaking Changes

None

## Notes & open questions

Note: we can not use tokio::sync::mpsc::Channel for the actor because we
can't control from which thread Drop is called.
Note: some streams were Unpin before, but it was not explicit. Now I
added Unpin explicitly (and boxed the stream to make it true). Not sure
if the version check would catch this, pretty sure that not. But taking
away Unpin would have been a breaking change.

## Change checklist

- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
dignifiedquire pushed a commit to n0-computer/iroh-docs that referenced this pull request Oct 23, 2024
## Description

This is mostly a 1:1 replacement, except for the fact that the
same_channel api is missing from async_channel. So I replaced it with
some ugly code that uses the fact that a async_channel Sender or
Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98
is merged, but until then I think it is fine.

## Breaking Changes

None

## Notes & open questions

Note: we can not use tokio::sync::mpsc::Channel for the actor because we
can't control from which thread Drop is called.
Note: some streams were Unpin before, but it was not explicit. Now I
added Unpin explicitly (and boxed the stream to make it true). Not sure
if the version check would catch this, pretty sure that not. But taking
away Unpin would have been a breaking change.

## Change checklist

- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
matheus23 pushed a commit to n0-computer/iroh that referenced this pull request Nov 14, 2024
## Description

This is mostly a 1:1 replacement, except for the fact that the
same_channel api is missing from async_channel. So I replaced it with
some ugly code that uses the fact that a async_channel Sender or
Receiver is just an Arc<Channel>.

To be removed if/when smol-rs/async-channel#98
is merged, but until then I think it is fine.

## Breaking Changes

None

## Notes & open questions

Note: we can not use tokio::sync::mpsc::Channel for the actor because we
can't control from which thread Drop is called.
Note: some streams were Unpin before, but it was not explicit. Now I
added Unpin explicitly (and boxed the stream to make it true). Not sure
if the version check would catch this, pretty sure that not. But taking
away Unpin would have been a breaking change.

## Change checklist

- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants