Skip to content

Commit 5923659

Browse files
committed
removed recvfile
1 parent 5ddbcfd commit 5923659

File tree

4 files changed

+0
-125
lines changed

4 files changed

+0
-125
lines changed

io/jvm/src/main/scala/fs2/io/net/SelectingSocket.scala

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -105,33 +105,6 @@ private final class SelectingSocket[F[_]: LiftIO] private (
105105
case _ =>
106106
super.sendfile(file, offset, count, chunkSize)
107107
}
108-
109-
override def recvfile(
110-
file: FileHandle[F],
111-
offset: Long,
112-
count: Long,
113-
chunkSize: Int
114-
): Stream[F, Nothing] = file match {
115-
case syncFileHandle: SyncFileHandle[F] =>
116-
val fileChannel = syncFileHandle.chan
117-
118-
def go(currOffset: Long, remaining: Long): F[Unit] =
119-
if (remaining <= 0) F.unit
120-
else {
121-
F.blocking(fileChannel.transferFrom(ch, currOffset, remaining)).flatMap { readBytes =>
122-
if (readBytes > 0) {
123-
go(currOffset + readBytes, remaining - readBytes)
124-
} else {
125-
selector.select(ch, OP_READ).to *> go(currOffset, remaining)
126-
}
127-
}
128-
}
129-
130-
Stream.eval(readMutex.lock.surround(go(offset, count))).drain
131-
132-
case _ =>
133-
super.recvfile(file, offset, count, chunkSize)
134-
}
135108
}
136109

137110
private object SelectingSocket {

io/jvm/src/main/scala/fs2/io/net/unixsocket/UnixSocketsPlatform.scala

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -161,31 +161,5 @@ private[unixsocket] trait UnixSocketsCompanionPlatform {
161161
super.sendfile(file, offset, count, chunkSize)
162162
}
163163

164-
override def recvfile(
165-
file: FileHandle[F],
166-
offset: Long,
167-
count: Long,
168-
chunkSize: Int
169-
): Stream[F, Nothing] = file match {
170-
case syncFileHandle: SyncFileHandle[F] =>
171-
val fileChannel = syncFileHandle.chan
172-
173-
def go(currOffset: Long, remaining: Long): F[Unit] =
174-
if (remaining <= 0) F.unit
175-
else {
176-
F.blocking(fileChannel.transferFrom(ch, currOffset, remaining)).flatMap { readBytes =>
177-
if (readBytes == 0) F.unit
178-
else {
179-
go(currOffset + readBytes, remaining - readBytes)
180-
}
181-
}
182-
}
183-
184-
Stream.eval(readMutex.lock.surround(go(offset, count))).drain
185-
186-
case _ =>
187-
super.recvfile(file, offset, count, chunkSize)
188-
}
189-
190164
}
191165
}

io/shared/src/main/scala/fs2/io/net/Socket.scala

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -98,37 +98,6 @@ trait Socket[F[_]] {
9898

9999
go(offset, count).through(writes)
100100
}
101-
102-
/** Reads from a socket and writes to a file.
103-
* Streams the socket data of the specified size and writes them to the file.
104-
* The stream terminates when the socket signals end of input or the specified count is reached.
105-
*
106-
* @param file the file handle to write to
107-
* @param offset the starting position in the file
108-
* @param count the maximum number of bytes to transfer
109-
* @param chunkSize the size of each chunk to read
110-
*/
111-
def recvfile(
112-
file: FileHandle[F],
113-
offset: Long,
114-
count: Long,
115-
chunkSize: Int
116-
): Stream[F, Nothing] = {
117-
118-
def go(currOffset: Long, remaining: Long): Stream[F, Nothing] =
119-
if (remaining > 0)
120-
Stream.eval(read(math.min(remaining, chunkSize.toLong).toInt)).flatMap {
121-
case Some(chunk) if chunk.nonEmpty =>
122-
Stream.eval(file.write(chunk, currOffset)) >> go(
123-
currOffset + chunk.size,
124-
remaining - chunk.size
125-
)
126-
case _ => Stream.empty
127-
}
128-
else Stream.empty
129-
130-
go(offset, count)
131-
}
132101
}
133102

134103
object Socket extends SocketCompanionPlatform

io/shared/src/test/scala/fs2/io/net/tcp/SocketSuite.scala

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -325,47 +325,6 @@ class SocketSuite extends Fs2Suite with SocketSuitePlatform {
325325
assertEquals(received, expected)
326326
}
327327
}
328-
test("recvfile - send data from socket to file from the offset") {
329-
val content = "Hello, world!"
330-
val offset = 0L
331-
val count = 5L
332-
val expected = "Hello"
333-
val chunkSize = 2
334-
335-
val setup = for {
336-
tempFile <- Files[IO].tempFile
337-
serverSetup <- Network[IO].serverResource(Some(ip"127.0.0.1"))
338-
(bindAddress, server) = serverSetup
339-
client <- Network[IO].client(bindAddress)
340-
} yield (tempFile, server, client)
341-
342-
Stream
343-
.resource(setup)
344-
.flatMap { case (tempFile, server, client) =>
345-
val serverStream = server.head.flatMap { socket =>
346-
Stream.eval(socket.write(Chunk.array(content.getBytes))) >>
347-
Stream.eval(socket.endOfOutput)
348-
}
349-
350-
val clientStream =
351-
Stream.resource(Files[IO].open(tempFile, Flags.Write)).flatMap { fileHandle =>
352-
client.recvfile(fileHandle, offset, count, chunkSize).drain
353-
}
354-
355-
val checkFile = Files[IO]
356-
.readAll(tempFile, chunkSize, Flags.Read)
357-
.through(text.utf8.decode)
358-
.compile
359-
.string
360-
361-
clientStream.concurrently(serverStream).drain ++ Stream.eval(checkFile)
362-
}
363-
.compile
364-
.lastOrError
365-
.map { received =>
366-
assertEquals(received, expected)
367-
}
368-
}
369328

370329
}
371330
}

0 commit comments

Comments
 (0)