Socket sendall for large buffers using memoryview#185
Merged
jeff5 merged 2 commits intojython:masterfrom Jun 15, 2022
Merged
Conversation
This provides a _socket._realsocket.sendall that continues to send() until all the data has all gone. This fixes jython#60 (bjo 2618). We follow the solution proposed by both Roland Walter and Gunter Bach, but scope the lifetime of the memoryview using with and there is a test. We apply the fix also to ChildSocket.
We allow memoryview to be coerced to java.nio.ByteBuffer when presented as a call argument, which in turn means it may be passed to networking calls in the implementation of socket send(), for example. We are careful to manage the life-cycle of memoryview slices.
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This provides a
_socket._realsocket.sendallthat continues to send() until all the data has all gone. This fixes #60 (bjo 2618).The PR follows the solution proposed by both Roland Walter and Gunter Bach (#80), but scope the lifetime of the
memoryviewusingwith.and There is also a test. We apply the fix also to ChildSocket.There are FIXMEs in this code that lament our inability to use
memoryviewthrough its buffer interface, which results in a lot of data copying. A further change set is intended to correct that.