package ru.serce.jnrfuse.struct;
import jnr.ffi.NativeType;
import jnr.ffi.Runtime;
import jnr.ffi.BaseStruct;
import jnr.posix.util.Platform;
import static ru.serce.jnrfuse.FuseCallbacks.*;
/**
* fuse_operations struct
*
* @author Sergey Tselovalnikov
* @since 30.05.15
*/
public class FuseOperations extends BaseStruct {
public FuseOperations(Runtime runtime) {
super(runtime);
}
public final Func<GetAttrCallback> getattr = func(GetAttrCallback.class);
public final Func<ReadlinkCallback> readlink = func(ReadlinkCallback.class);
@Deprecated
public final Func<GetAttrCallback> getdir = func(GetAttrCallback.class);
public final Func<MknodCallback> mknod = func(MknodCallback.class);
public final Func<MkdirCallback> mkdir = func(MkdirCallback.class);
public final Func<UnlinkCallback> unlink = func(UnlinkCallback.class);
public final Func<RmdirCallback> rmdir = func(RmdirCallback.class);
public final Func<SymlinkCallback> symlink = func(SymlinkCallback.class);
public final Func<RenameCallback> rename = func(RenameCallback.class);
public final Func<LinkCallback> link = func(LinkCallback.class);
public final Func<ChmodCallback> chmod = func(ChmodCallback.class);
public final Func<ChownCallback> chown = func(ChownCallback.class);
public final Func<TruncateCallback> truncate = func(TruncateCallback.class);
@Deprecated
public final Func<GetAttrCallback> utime = func(GetAttrCallback.class);
public final Func<OpenCallback> open = func(OpenCallback.class);
public final Func<ReadCallback> read = func(ReadCallback.class);
public final Func<WriteCallback> write = func(WriteCallback.class);
public final Func<StatfsCallback> statfs = func(StatfsCallback.class);
public final Func<FlushCallback> flush = func(FlushCallback.class);
public final Func<ReleaseCallback> release = func(ReleaseCallback.class);
public final Func<FsyncCallback> fsync = func(FsyncCallback.class);
public final Func<SetxattrCallback> setxattr = func(SetxattrCallback.class);
public final Func<GetxattrCallback> getxattr = func(GetxattrCallback.class);
public final Func<ListxattrCallback> listxattr = func(ListxattrCallback.class);
public final Func<RemovexattrCallback> removexattr = func(RemovexattrCallback.class);
public final Func<OpendirCallback> opendir = func(OpendirCallback.class);
public final Func<ReaddirCallback> readdir = func(ReaddirCallback.class);
public final Func<ReleasedirCallback> releasedir = func(ReleasedirCallback.class);
public final Func<FsyncdirCallback> fsyncdir = func(FsyncdirCallback.class);
public final Func<InitCallback> init = func(InitCallback.class);
public final Func<DestroyCallback> destroy = func(DestroyCallback.class);
public final Func<AccessCallback> access = func(AccessCallback.class);
public final Func<CreateCallback> create = func(CreateCallback.class);
public final Func<FtruncateCallback> ftruncate = func(FtruncateCallback.class);
public final Func<FgetattrCallback> fgetattr = func(FgetattrCallback.class);
public final Func<LockCallback> lock = func(LockCallback.class);
public final Func<UtimensCallback> utimens = func(UtimensCallback.class);
public final Func<BmapCallback> bmap = func(BmapCallback.class);
/**
* Flag indicating that the filesystem can accept a NULL path
* as the first argument for the following operations:
*
* read, write, flush, release, fsync, readdir, releasedir,
* fsyncdir, ftruncate, fgetattr, lock, ioctl and poll
*
* If this flag is set these operations continue to work on
* unlinked files even if "-ohard_remove" option was specified.
*/
public final Padding flag_nullpath_ok = new Padding(NativeType.UCHAR, 1);
/**
* Flag indicating that the path need not be calculated for
* the following operations:
*
* read, write, flush, release, fsync, readdir, releasedir,
* fsyncdir, ftruncate, fgetattr, lock, ioctl and poll
*
* Closely related to flag_nullpath_ok, but if this flag is
* set then the path will not be calculaged even if the file
* wasn't unlinked. However the path can still be non-NULL if
* it needs to be calculated for some other reason.
*/
public final Padding flag_nopath = new Padding(NativeType.UCHAR, 1);
/**
* Flag indicating that the filesystem accepts special
* UTIME_NOW and UTIME_OMIT values in its utimens operation.
*/
public final Padding flag_utime_omit_ok = new Padding(NativeType.UCHAR, 1);
/**
* Reserved flags, don't set
*/
public final Padding flag_reserved = new Padding(NativeType.UCHAR, 1);
public final Func<IoctlCallback> ioctl = func(IoctlCallback.class);
public final Func<PollCallback> poll = func(PollCallback.class);
public final Func<WritebufCallback> write_buf = func(WritebufCallback.class);
public final Func<ReadbufCallback> read_buf = func(ReadbufCallback.class);
public final Func<FlockCallback> flock = func(FlockCallback.class);
public final Func<FallocateCallback> fallocate = func(FallocateCallback.class);
{
if(Platform.IS_MAC) {
// TODO implement MAC-OS specific functions
for (int i = 0; i < 13; i++) {
func(FallocateCallback.class);
}
}
}
}