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

org.snmp4j.transport.TransportStateEvent Maven / Gradle / Ivy

There is a newer version: 3.8.2
Show newest version
/*_############################################################################
  _## 
  _##  SNMP4J 2 - TransportStateEvent.java  
  _## 
  _##  Copyright (C) 2003-2016  Frank Fock and Jochen Katz (SNMP4J.org)
  _##  
  _##  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 org.snmp4j.transport;

import java.io.*;
import java.util.*;

import org.snmp4j.smi.*;

/**
 * The TransportStateEvent describes a state change for
 * a transport connection. Optionally, connection establishment can be
 * cancelled.
 *
 * @author Frank Fock
 * @version 2.4
 * @since 1.7
 */
public class TransportStateEvent extends EventObject {

  private static final long serialVersionUID = 6440139076579035559L;

  public static final int STATE_UNKNOWN = 0;
  public static final int STATE_CONNECTED = 1;
  public static final int STATE_DISCONNECTED_REMOTELY = 2;
  public static final int STATE_DISCONNECTED_TIMEOUT = 3;
  public static final int STATE_CLOSED = 4;

  private int newState;
  private Address peerAddress;
  private IOException causingException;
  private ArrayList discardedMessages;

  private boolean cancelled = false;

  public TransportStateEvent(TcpTransportMapping source,
                             Address peerAddress,
                             int newState,
                             IOException causingException) {
    super(source);
    this.newState = newState;
    this.peerAddress = peerAddress;
    this.causingException = causingException;
  }

  public TransportStateEvent(TcpTransportMapping source,
                             Address peerAddress,
                             int newState,
                             IOException causingException,
                             List discardedMessages) {
    this(source, peerAddress, newState, causingException);
    this.discardedMessages = new ArrayList(discardedMessages);
  }

  public IOException getCausingException() {
    return causingException;
  }

  public int getNewState() {
    return newState;
  }

  public Address getPeerAddress() {
    return peerAddress;
  }

  /**
   * Gets the messages that were discarded due to a state change of the transport connection.
   * @return
   *    a (possibly empty) list of messages that were discarded or null if the event has not terminated
   *    the transport connection.
   * @since 2.4.0
   */
  public List getDiscardedMessages() {
    return discardedMessages;
  }

  /**
   * Indicates whether this event has been canceled. Only
   * {@link #STATE_CONNECTED} events can be canceled.
   * @return
   *    true if the event has been canceled.
   * @since 1.8
   */
  public boolean isCancelled() {
    return cancelled;
  }

  public String toString() {
    return TransportStateEvent.class.getName()+"[source="+source+
        ",peerAddress="+peerAddress+
        ",newState="+newState+
        ",cancelled="+cancelled+
        ",causingException="+causingException+"]";
  }

  /**
   * Sets the canceled state of the transport event. Only
   * {@link #STATE_CONNECTED} events can be canceled.
   * @param cancelled
   *    true if the event should be canceled, i.e. a connection
   *    attempt should be rejected.
   * @since 1.8
   */
  public void setCancelled(boolean cancelled) {
    this.cancelled = cancelled;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy