mirror of
https://github.com/falk-werner/webfuse
synced 2024-10-27 20:34:10 +00:00
5.3 KiB
5.3 KiB
Webufse 2 Protocol
Endianness
All numeric data types are transferred in Big Endian.
For instance, the uint32 value 1 will be transferred as
00 00 00 01
Data Types
Basic data types
Data Type | Width | Description |
---|---|---|
bool | 8 bit | boolean value |
u8 | 8 bit | 8 bit unsigned integer |
u32 | 32 bit | 32 bit unsigned integer |
u64 | 64 bit | 64 bit unsigned integer |
i32 | 32 bit | 32 bit signed integer |
Derrived integral types
Data Type | Base Type | Description |
---|---|---|
uid | u32 | user ID |
gid | u32 | group ID |
dev | u64 | device ID |
handle | u64 | file handle |
Flags and Enums
Data Type | Base Type | Description |
---|---|---|
result | i32 | result type of methods |
access_mode | u32 | mode of access method |
mode | u32 | file type and permissions |
open_flags | i32 | flags of open method |
rename_flags | u8 | flags of rename method |
result
Value Range | Description |
---|---|
0 | method call succeed |
negative value | error code (see below) |
positive value | amount of bytes read or written (read and write only) |
Error Code | Value | Description |
---|---|---|
E2BIG | -7 | argument list too long |
EACCES | -13 | permission denied |
EAGAIN | -11 | resource temporarily unavailable |
EBADF | -9 | bad file descriptor |
EBUSY | -16 | device or resource busy |
EDESTADDRREQ | -89 | destination address required |
EDQUOT | -122 | disk quota exceeded |
EEXIST | -17 | file exists |
EFAULT | -14 | bad address |
EFBIG | -27 | file too large |
EINTR | -4 | interrupt function call |
EINVAL | -22 | invalid argument |
EIO | -5 | input / output error |
EISDIR | -21 | is a directory |
ELOOP | -40 | too many levels of symbolic links |
EMFILE | -24 | too many open files |
EMLINK | -31 | too many links |
ENAMETOOLONG | -36 | filename too long |
ENFILE | -23 | too many open files in system |
ENODATA | -61 | the named attribute does not exist, or the process has not access to this attribute |
ENODEV | -19 | no such device |
ENOENT | -2 | no such file or directory |
ENOMEM | -12 | not enough space / cannot allocate memory |
ENOSPC | -28 | no space left on device |
ENOSYS | -38 | function not implemented |
ENOTDIR | -20 | not a directory |
ENOTEMPTY | -39 | directory not empty |
ENOTSUP | -95 | operation not supported |
ENXIO | -6 | no such device or address |
EOVERFLOW | -75 | value too large to be stored in data type |
EPERM | -1 | operation not permitted |
EPIPE | -32 | broken pipe |
ERANGE | -34 | result too large |
EROFS | -30 | read-only filesystem |
ETXTBSY | -26 | text file busy |
EXDEV | -18 | improper link |
EWOULDBLOCK | -11 | resource temporarily unavailable |
Complex Types
Data Type | Description |
---|---|
string | UTF-8 string |
bytes | array of bytes |
timestamp | date and time |
attributes | file attributes |
statistics | filesystem statistics |
string
Field | Data Type | Description |
---|---|---|
size | u32 | length of the string in bytes |
data | u8[] | string data (UTF-8) |
bytes
Field | Data Type | Description |
---|---|---|
size | u32 | length of the byte array |
data | u8[] | array data |
timestamp
Field | Data Type | Description |
---|---|---|
seconds | u64 | seconds sind epoch (1.1.1970) |
nsec | u32 | nano seconds |
attributes
Field | Data Type | Description |
---|---|---|
inode | u64 | Inode value |
nlink | u64 | Number of hard links |
mode | mode (u32) | file mode flags |
uid | uid (u32) | user ID |
gid | gid (u32) | group ID |
rdev | dev (u64) | device ID |
size | u64 | file size |
blocks | u64 | number 512-byte blocks |
atime | timestamp | time of last access |
mtime | timestamp | time of last modification |
ctime | timestamp | time of last status change |
statistics
Message
Methods
access
Field | Data Type | Description |
---|---|---|
uint32 | message id | |
type | uint8 | message type (0x00) |
path | string | |
mode | access_mode (i8) |
Response
| Field |