/*
 * Copyright 2016 Hemika Yasinda Kodikara
 *
 * 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 org.apache.jmeter.protocol.mqtt.data.objects;

import org.eclipse.paho.client.mqttv3.MqttMessage;

/**
 * Message object to hold MQTT message content.
 */
public class Message {
    private byte[] payload;
    private int qos = 0;
    private boolean retained = false;
    private boolean dup = false;
    private long currentTimestamp;

    public Message(byte[] payload, int qos, boolean retained, boolean dup, long currentTimestamp) {
        this.payload = payload;
        this.qos = qos;
        this.retained = retained;
        this.dup = dup;
        this.currentTimestamp = currentTimestamp;
    }

    public Message(MqttMessage mqttMessage) {
        this.payload = mqttMessage.getPayload();
        this.qos = mqttMessage.getQos();
        this.retained = mqttMessage.isRetained();
        this.dup = mqttMessage.isDuplicate();
        this.currentTimestamp = System.currentTimeMillis();
    }

    public byte[] getPayload() {
        return payload;
    }

    public int getQos() {
        return qos;
    }

    public boolean isRetained() {
        return retained;
    }

    public boolean isDup() {
        return dup;
    }

    public long getCurrentTimestamp() {
        return currentTimestamp;
    }
}