/*
* Copyright 2014-2017 Real Logic Ltd.
*
* 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 io.aeron.agent;
import net.bytebuddy.asm.Advice;
import org.agrona.DirectBuffer;
import static io.aeron.agent.EventCode.*;
import static io.aeron.agent.EventLogger.LOGGER;
import static io.aeron.command.ControlProtocolEvents.*;
public class CmdInterceptor
{
@Advice.OnMethodEnter
public static void logCmd(final int msgTypeId, final DirectBuffer buffer, final int index, final int length)
{
switch (msgTypeId)
{
case ADD_PUBLICATION:
LOGGER.log(CMD_IN_ADD_PUBLICATION, buffer, index, length);
break;
case REMOVE_PUBLICATION:
LOGGER.log(CMD_IN_REMOVE_PUBLICATION, buffer, index, length);
break;
case ADD_EXCLUSIVE_PUBLICATION:
LOGGER.log(CMD_IN_ADD_EXCLUSIVE_PUBLICATION, buffer, index, length);
break;
case ADD_SUBSCRIPTION:
LOGGER.log(CMD_IN_ADD_SUBSCRIPTION, buffer, index, length);
break;
case REMOVE_SUBSCRIPTION:
LOGGER.log(CMD_IN_REMOVE_SUBSCRIPTION, buffer, index, length);
break;
case CLIENT_KEEPALIVE:
LOGGER.log(CMD_IN_KEEPALIVE_CLIENT, buffer, index, length);
break;
case ADD_DESTINATION:
LOGGER.log(CMD_IN_ADD_DESTINATION, buffer, index, length);
break;
case REMOVE_DESTINATION:
LOGGER.log(CMD_IN_REMOVE_DESTINATION, buffer, index, length);
break;
case ON_AVAILABLE_IMAGE:
LOGGER.log(CMD_OUT_AVAILABLE_IMAGE, buffer, index, length);
break;
case ON_ERROR:
// TODO: add event code and dissector
break;
case ON_OPERATION_SUCCESS:
LOGGER.log(CMD_OUT_ON_OPERATION_SUCCESS, buffer, index, length);
break;
case ON_PUBLICATION_READY:
LOGGER.log(CMD_OUT_PUBLICATION_READY, buffer, index, length);
break;
case ON_UNAVAILABLE_IMAGE:
LOGGER.log(CMD_OUT_ON_UNAVAILABLE_IMAGE, buffer, index, length);
break;
case ON_EXCLUSIVE_PUBLICATION_READY:
LOGGER.log(CMD_OUT_EXCLUSIVE_PUBLICATION_READY, buffer, index, length);
break;
}
}
}