/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.ignite.spi.checkpoint.sharedfs;
import java.io.Serializable;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
* Wrapper of all checkpoint that are saved to the file system. It
* extends every checkpoint with expiration time and host name
* which created this checkpoint.
* <p>
* Host name is used by {@link SharedFsCheckpointSpi} SPI to give node
* correct files if it is restarted.
*/
class SharedFsCheckpointData implements Serializable {
/** */
private static final long serialVersionUID = 0L;
/** Checkpoint data. */
private final byte[] state;
/** Checkpoint expiration time. */
private final long expTime;
/** Host name that created this checkpoint. */
private final String host;
/** Checkpoint key. */
private final String key;
/**
* Creates new instance of checkpoint data wrapper.
*
* @param state Checkpoint data.
* @param expTime Checkpoint expiration time in milliseconds.
* @param host Name of host that created this checkpoint.
* @param key Key of checkpoint.
*/
SharedFsCheckpointData(byte[] state, long expTime, String host, String key) {
assert expTime >= 0;
assert host != null;
this.state = state;
this.expTime = expTime;
this.host = host;
this.key = key;
}
/**
* Gets checkpoint data.
*
* @return Checkpoint data.
*/
byte[] getState() {
return state;
}
/**
* Gets checkpoint expiration time.
*
* @return Expire time in milliseconds.
*/
long getExpireTime() {
return expTime;
}
/**
* Gets checkpoint host name.
*
* @return Host name.
*/
String getHost() {
return host;
}
/**
* Gets key of checkpoint.
*
* @return Key of checkpoint.
*/
public String getKey() {
return key;
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(SharedFsCheckpointData.class, this);
}
}