13742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
23742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
33742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
43742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpackage javax.jmdns.impl;
53742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
63742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport java.net.InetAddress;
73742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
83742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.JmDNS;
93742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.NetworkTopologyEvent;
103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.NetworkTopologyListener;
113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @author Cédrik Lime, Pierre Frisch
143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpublic class NetworkTopologyEventImpl extends NetworkTopologyEvent implements Cloneable {
163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private static final long serialVersionUID = 1445606146153550463L;
213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final InetAddress _inetAddress;
233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Constructs a Network Topology Event.
263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param jmDNS
283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param inetAddress
293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @exception IllegalArgumentException
303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *                if source is null.
313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public NetworkTopologyEventImpl(JmDNS jmDNS, InetAddress inetAddress) {
333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        super(jmDNS);
343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        this._inetAddress = inetAddress;
353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    NetworkTopologyEventImpl(NetworkTopologyListener jmmDNS, InetAddress inetAddress) {
383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        super(jmmDNS);
393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        this._inetAddress = inetAddress;
403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.NetworkTopologyEvent#getDNS()
453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public JmDNS getDNS() {
483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return (this.getSource() instanceof JmDNS ? (JmDNS) getSource() : null);
493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.NetworkTopologyEvent#getInetAddress()
543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public InetAddress getInetAddress() {
573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _inetAddress;
583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String toString() {
623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        StringBuilder buf = new StringBuilder();
633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("[" + this.getClass().getSimpleName() + "@" + System.identityHashCode(this) + " ");
643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("\n\tinetAddress: '");
653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append(this.getInetAddress());
663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("']");
673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("' source: ");
683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("\n\t" + source + "");
693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("\n]");
703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return buf.toString();
713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see java.lang.Object#clone()
763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public NetworkTopologyEventImpl clone() throws CloneNotSupportedException {
793742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return new NetworkTopologyEventImpl(getDNS(), getInetAddress());
803742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
813742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
823742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman}
83