All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.openhft.chronicle.bytes.SyncMode Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2016-2022 chronicle.software
 *
 *     https://chronicle.software
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.openhft.chronicle.bytes;

import net.openhft.posix.MSyncFlag;

/**
 * An enumeration of sync modes for disk operations.
 * This enum controls whether the write operations are synchronized with the disk, and if so, whether
 * to wait for the synchronization to complete before continuing with the program execution.
 */
public enum SyncMode {
    /**
     * No synchronization is performed. The write operations are not explicitly synced with the disk.
     */
    NONE(null),
    /**
     * Synchronization is performed, and the program waits for the sync operation to complete before proceeding.
     * This mode guarantees that the write operation is completed before the next operation is carried out.
     * However, this mode may not be supported on all platforms.
     */
    SYNC(MSyncFlag.MS_SYNC),
    /**
     * Synchronization is scheduled but the program does not wait for it to complete before proceeding.
     * This mode allows the write operation to be carried out asynchronously. The actual write to the disk
     * happens later and does not block the program execution. However, this mode may not be supported on all platforms.
     */
    ASYNC(MSyncFlag.MS_ASYNC);

    private final MSyncFlag mSyncFlag;

    SyncMode(MSyncFlag mSyncFlag) {
        this.mSyncFlag = mSyncFlag;
    }

    /**
     * Returns the {@link MSyncFlag} associated with this sync mode.
     *
     * @return the MSyncFlag value, may be null for {@code NONE}
     */
    public MSyncFlag mSyncFlag() {
        return mSyncFlag;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy