/*
* Copyright 2016 higherfrequencytrading.com
*
* 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.network.cluster;
import net.openhft.chronicle.core.io.Closeable;
import net.openhft.chronicle.network.NetworkContext;
import net.openhft.chronicle.network.api.session.SubHandler;
import net.openhft.chronicle.wire.WireIn;
import net.openhft.chronicle.wire.WireOut;
import net.openhft.chronicle.wire.WriteMarshallable;
import org.jetbrains.annotations.NotNull;
/**
* @author Rob Austin.
*/
public abstract class AbstractSubHandler<T extends NetworkContext> implements SubHandler<T> {
private Closeable closeable;
private T nc;
private long cid;
private String csp;
private int remoteIdentifier;
private int localIdentifier;
private boolean isClosed;
@Override
public void cid(long cid) {
this.cid = cid;
}
@Override
public long cid() {
return cid;
}
@Override
public void csp(@NotNull String csp) {
this.csp = csp;
}
@Override
public String csp() {
return this.csp;
}
@Override
public abstract void onRead(@NotNull WireIn inWire, @NotNull WireOut outWire);
@Override
public T nc() {
return nc;
}
@Override
public void closeable(Closeable closeable) {
this.closeable = closeable;
}
@Override
public Closeable closable() {
return closeable;
}
@Override
public void nc(T nc) {
this.nc = nc;
}
public int remoteIdentifier() {
return remoteIdentifier;
}
@Override
public void remoteIdentifier(int remoteIdentifier) {
this.remoteIdentifier = remoteIdentifier;
}
public void publish(WriteMarshallable event) {
nc().wireOutPublisher().publish(event);
}
@Override
public void localIdentifier(int localIdentifier) {
this.localIdentifier = localIdentifier;
}
public int localIdentifier() {
return localIdentifier;
}
@Override
public void close() {
isClosed = true;
}
public boolean isClosed() {
return isClosed;
}
}