/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.ignite.internal.visor.util; import java.util.UUID; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.events.DeploymentEvent; import org.apache.ignite.events.DiscoveryEvent; import org.apache.ignite.events.Event; import org.apache.ignite.events.JobEvent; import org.apache.ignite.events.TaskEvent; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.visor.event.VisorGridDeploymentEvent; import org.apache.ignite.internal.visor.event.VisorGridDiscoveryEvent; import org.apache.ignite.internal.visor.event.VisorGridEvent; import org.apache.ignite.internal.visor.event.VisorGridJobEvent; import org.apache.ignite.internal.visor.event.VisorGridTaskEvent; import org.apache.ignite.lang.IgniteClosure; import org.apache.ignite.lang.IgniteUuid; /** * Mapper from grid event to Visor data transfer object. */ public class VisorEventMapper implements IgniteClosure<Event, VisorGridEvent> { /** */ private static final long serialVersionUID = 0L; /** * Map grid event to Visor data transfer object. * * @param evt Grid event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent map(Event evt, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { if (evt instanceof TaskEvent) return taskEvent((TaskEvent)evt, type, id, name, nid, ts, msg, shortDisplay); if (evt instanceof JobEvent) return jobEvent((JobEvent)evt, type, id, name, nid, ts, msg, shortDisplay); if (evt instanceof DeploymentEvent) return deploymentEvent((DeploymentEvent)evt, type, id, name, nid, ts, msg, shortDisplay); if (evt instanceof DiscoveryEvent) return discoveryEvent((DiscoveryEvent)evt, type, id, name, nid, ts, msg, shortDisplay); return null; } /** * @param te Task event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent taskEvent(TaskEvent te, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { return new VisorGridTaskEvent(type, id, name, nid, ts, msg, shortDisplay, te.taskName(), te.taskClassName(), te.taskSessionId(), te.internal()); } /** * @param je Job event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent jobEvent(JobEvent je, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { return new VisorGridJobEvent(type, id, name, nid, ts, msg, shortDisplay, je.taskName(), je.taskClassName(), je.taskSessionId(), je.jobId()); } /** * @param de Deployment event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent deploymentEvent(DeploymentEvent de, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { return new VisorGridDeploymentEvent(type, id, name, nid, ts, msg, shortDisplay, de.alias()); } /** * @param de Discovery event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent discoveryEvent(DiscoveryEvent de, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { ClusterNode node = de.eventNode(); return new VisorGridDiscoveryEvent(type, id, name, nid, ts, msg, shortDisplay, node.id(), F.first(node.addresses()), node.isDaemon(), de.topologyVersion()); } /** {@inheritDoc} */ @Override public VisorGridEvent apply(Event evt) { return map(evt, evt.type(), evt.id(), evt.name(), evt.node().id(), evt.timestamp(), evt.message(), evt.shortDisplay()); } }