Skip to content

Commit

Permalink
Cleanup Android file errors
Browse files Browse the repository at this point in the history
Follow up to godotengine#90403
  • Loading branch information
m4gr3d authored and theromis committed Apr 29, 2024
1 parent 28c0d48 commit 32c02fe
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 17 deletions.
9 changes: 6 additions & 3 deletions platform/android/file_access_filesystem_jandroid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Error FileAccessFilesystemJAndroid::open_internal(const String &p_path, int p_mo
default:
return ERR_FILE_CANT_OPEN;

case -1:
case -2:
return ERR_FILE_NOT_FOUND;
}
}
Expand Down Expand Up @@ -334,10 +334,13 @@ Error FileAccessFilesystemJAndroid::resize(int64_t p_length) {
switch (res) {
case 0:
return OK;
case -3:
case -4:
return ERR_INVALID_PARAMETER;
case -2:
case -3:
return ERR_FILE_CANT_OPEN;
case -2:
return ERR_FILE_NOT_FOUND;
case -1:
default:
return FAILED;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,6 @@ internal abstract class DataAccess(private val filePath: String) {
companion object {
private val TAG = DataAccess::class.java.simpleName

private const val OK_ERROR_ID = 0;
private const val FAILED_ERROR_ID = -1;
private const val FILE_CANT_OPEN_ERROR_ID = -2;
private const val INVALID_PARAMETER_ERROR_ID = -3;

fun generateDataAccess(
storageScope: StorageScope,
context: Context,
Expand Down Expand Up @@ -145,15 +140,15 @@ internal abstract class DataAccess(private val filePath: String) {
fun resize(length: Long): Int {
return try {
fileChannel.truncate(length)
OK_ERROR_ID
FileErrors.OK.nativeValue
} catch (e: NonWritableChannelException) {
FILE_CANT_OPEN_ERROR_ID
FileErrors.FILE_CANT_OPEN.nativeValue
} catch (e: ClosedChannelException) {
FILE_CANT_OPEN_ERROR_ID
FileErrors.FILE_CANT_OPEN.nativeValue
} catch (e: IllegalArgumentException) {
INVALID_PARAMETER_ERROR_ID
FileErrors.INVALID_PARAMETER.nativeValue
} catch (e: IOException) {
FAILED_ERROR_ID
FileErrors.FAILED.nativeValue
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ class FileAccessHandler(val context: Context) {
companion object {
private val TAG = FileAccessHandler::class.java.simpleName

private const val FAILED_ERROR_ID = -1;
private const val FILE_NOT_FOUND_ERROR_ID = -1
internal const val INVALID_FILE_ID = 0
private const val STARTING_FILE_ID = 1

Expand Down Expand Up @@ -119,7 +117,7 @@ class FileAccessHandler(val context: Context) {
lastFileId
} ?: INVALID_FILE_ID
} catch (e: FileNotFoundException) {
FILE_NOT_FOUND_ERROR_ID
FileErrors.FILE_NOT_FOUND.nativeValue
} catch (e: Exception) {
Log.w(TAG, "Error while opening $path", e)
INVALID_FILE_ID
Expand Down Expand Up @@ -193,7 +191,7 @@ class FileAccessHandler(val context: Context) {

fun fileResize(fileId: Int, length: Long): Int {
if (!hasFileId(fileId)) {
return FAILED_ERROR_ID
return FileErrors.FAILED.nativeValue
}

return files[fileId].resize(length)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/**************************************************************************/
/* FileErrors.kt */
/**************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/**************************************************************************/

package org.godotengine.godot.io.file

/**
* Set of errors that may occur when performing data access.
*/
internal enum class FileErrors(val nativeValue: Int) {
OK(0),
FAILED(-1),
FILE_NOT_FOUND(-2),
FILE_CANT_OPEN(-3),
INVALID_PARAMETER(-4);

companion object {
fun fromNativeError(error: Int): FileErrors? {
for (fileError in entries) {
if (fileError.nativeValue == error) {
return fileError
}
}
return null
}
}
}

0 comments on commit 32c02fe

Please sign in to comment.