All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opendaylight.openflowjava.protocol.impl.clients.SendEvent Maven / Gradle / Ivy

There is a newer version: 0.19.1
Show newest version
/*
 * 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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy