org.opendaylight.openflowjava.protocol.impl.clients.SendEvent Maven / Gradle / Ivy
/*
* Copyright (c) 2013 Pantheon Technologies s.r.o. and others. 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.openflowjava.protocol.impl.clients;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import org.opendaylight.openflowjava.util.ByteBufUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Class representing sending message event.
*
* @author michal.polkorab
*/
public class SendEvent implements ClientEvent {
private static final Logger LOG = LoggerFactory.getLogger(SendEvent.class);
protected byte[] msgToSend;
protected ChannelHandlerContext ctx = null;
/**
* Constructor.
*
* @param msgToSend message to be sent
*/
public SendEvent(final byte[] msgToSend) {
this.msgToSend = new byte[msgToSend.length];
System.arraycopy(msgToSend, 0, this.msgToSend, 0, msgToSend.length);
}
@Override
public boolean eventExecuted() {
LOG.debug("sending message");
LOG.debug("start of run");
ByteBuf buffer = ctx.alloc().buffer();
buffer.writeBytes(msgToSend);
ctx.writeAndFlush(buffer);
if (LOG.isDebugEnabled()) {
LOG.debug("Message to send {}", ByteBufUtils.bytesToHexString(msgToSend));
LOG.debug("message sent");
}
return true;
}
/**
* Sets the ChannelHandlerContext.
*
* @param ctx context which will be used for sending messages (SendEvents)
*/
public void setCtx(final ChannelHandlerContext ctx) {
this.ctx = ctx;
}
}