Last active
February 22, 2021 16:24
-
-
Save conorgriffin/9eae19f8bf6e7ce5c0aaab5b8970609e to your computer and use it in GitHub Desktop.
SftpOperations - Multiple Read Requests
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
def retrieveFileInputStream(name: String, | |
handler: Handler, | |
offset: Long, | |
maxUnconfirmedReads: Int): Try[InputStream] = | |
Try { | |
val remoteFile = handler.open(name, java.util.EnumSet.of(OpenMode.READ)) | |
val is = maxUnconfirmedReads match { | |
case m if m > 1 => | |
new remoteFile.ReadAheadRemoteFileInputStream(m, offset) { | |
override def close(): Unit = | |
try { | |
super.close() | |
} finally { | |
remoteFile.close() | |
} | |
} | |
case _ => | |
new remoteFile.RemoteFileInputStream(offset) { | |
override def close(): Unit = | |
try { | |
super.close() | |
} finally { | |
remoteFile.close() | |
} | |
} | |
} | |
Option(is).getOrElse { | |
remoteFile.close() | |
throw new IOException(s"$name: No such file or directory") | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment