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

com.flash3388.flashlib.communication.runner.MessageWriteTask Maven / Gradle / Ivy

There is a newer version: 2.0.0-beta.1
Show newest version
package com.flash3388.flashlib.communication.runner;

import com.flash3388.flashlib.communication.message.Message;
import com.flash3388.flashlib.communication.message.Messenger;
import com.flash3388.flashlib.communication.message.WriteException;
import org.slf4j.Logger;

import java.util.Optional;
import java.util.function.Supplier;

public class MessageWriteTask implements Runnable {

    private final Messenger mMessenger;
    private final Supplier> mMessagesSupplier;
    private final Logger mLogger;

    public MessageWriteTask(Messenger messenger, Supplier> messagesSupplier, Logger logger) {
        mMessenger = messenger;
        mMessagesSupplier = messagesSupplier;
        mLogger = logger;
    }

    @Override
    public void run() {
        while (!Thread.interrupted()) {
            try {
                Optional optionalMessage = mMessagesSupplier.get();
                if (!optionalMessage.isPresent()) {
                    continue;
                }

                Message message = optionalMessage.get();
                mMessenger.writeMessage(message);
            } catch (WriteException e) {
                mLogger.warn("error while writing message", e);
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy