/* * 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.jmeter.samplers; import java.rmi.RemoteException; import java.util.List; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.util.JMeterUtils; /** * Implementation of remote sampler listener, also supports TestStateListener */ public class RemoteSampleListenerImpl extends java.rmi.server.UnicastRemoteObject implements RemoteSampleListener, SampleListener, TestStateListener { private static final long serialVersionUID = 240L; private final TestStateListener testListener; private final SampleListener sampleListener; private static final int DEFAULT_LOCAL_PORT = JMeterUtils.getPropDefault("client.rmi.localport", 0); // $NON-NLS-1$ public RemoteSampleListenerImpl(Object listener) throws RemoteException { super(DEFAULT_LOCAL_PORT); if (listener instanceof TestStateListener) { testListener = (TestStateListener) listener; } else { testListener = null; } if (listener instanceof SampleListener) { sampleListener = (SampleListener) listener; } else { sampleListener = null; } } @Override public void testStarted() { if (testListener != null) { testListener.testStarted(); } } @Override public void testStarted(String host) { if (testListener != null) { testListener.testStarted(host); } } @Override public void testEnded() { if (testListener != null) { testListener.testEnded(); } } @Override public void testEnded(String host) { if (testListener != null) { testListener.testEnded(host); } } /** * This method is called remotely and fires a list of samples events * received locally. The function is to reduce network load when using * remote testing. * * @param samples * the list of sample events to be fired locally */ @Override public void processBatch(List<SampleEvent> samples) { if (samples != null && sampleListener != null) { for (SampleEvent e : samples) { sampleListener.sampleOccurred(e); } } } @Override public void sampleOccurred(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleOccurred(e); } } /** * A sample has started. */ @Override public void sampleStarted(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleStarted(e); } } /** * A sample has stopped. */ @Override public void sampleStopped(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleStopped(e); } } }