/*
* Copyright (c) 2013 Robert Varga. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.tcpmd5.netty;
import com.google.common.base.Preconditions;
import io.netty.channel.ChannelException;
import java.io.IOException;
import java.nio.channels.NetworkChannel;
import org.opendaylight.tcpmd5.api.KeyAccess;
import org.opendaylight.tcpmd5.api.KeyAccessFactory;
import org.opendaylight.tcpmd5.api.KeyMapping;
/**
* Utility class for handling MD5 option.
*/
final class NettyKeyAccess implements KeyAccess {
private final KeyAccess delegate;
private NettyKeyAccess(final KeyAccess delegate) {
this.delegate = Preconditions.checkNotNull(delegate);
}
public static NettyKeyAccess create(final KeyAccessFactory factory, final NetworkChannel channel) {
final KeyAccess access = factory.getKeyAccess(channel);
return new NettyKeyAccess(access);
}
@Override
public KeyMapping getKeys() {
try {
return delegate.getKeys();
} catch (IOException e) {
throw new ChannelException("Failed to set channel MD5 signature keys", e);
}
}
@Override
public void setKeys(final KeyMapping keys) {
try {
delegate.setKeys(keys);
} catch (IOException e) {
throw new ChannelException("Failed to set channel MD5 signature key", e);
}
}
}