001: /**
002: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
004: *
005: * This program is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU General Public License version
007: * 2 only, as published by the Free Software Foundation.
008: *
009: * This program is distributed in the hope that it will be useful, but
010: * WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * General Public License version 2 for more details (a copy is
013: * included at /legal/license.txt).
014: *
015: * You should have received a copy of the GNU General Public License
016: * version 2 along with this work; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018: * 02110-1301 USA
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
021: * Clara, CA 95054 or visit www.sun.com if you need additional
022: * information or have any questions.
023: *
024: *
025: * Module Name : JAIN SIP Specification
026: * File Name : ResponseEvent.java
027: *
028: * HISTORY
029: *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
030: */package gov.nist.siplite;
031:
032: import gov.nist.siplite.message.Response;
033: import gov.nist.siplite.stack.*;
034:
035: /**
036: * This class represents a Response event that is passed from a SipProvider to
037: * its SipListener. This specification handles the passing of Response messages
038: * to the application with the event model. An application (SipListener)
039: * registers with the SIP protocol stack (SipProvider) and listens for Response
040: * events from the SipProvider.
041: * <p>
042: * This specification defines a single Response event object to handle all
043: * Response messages. The Response event encapsulates the Response message
044: * that can be retrieved from {@link ResponseEvent#getResponse()}.
045: * Therefore the event type of a Response event can be determined as follows:
046: * <p>
047: * <i>eventType == ResponseEvent.getResponse().getStatusCode();</i>
048: * <p>
049: * A Response event also encapsulates the client transaction upon which the
050: * Response is correlated, i.e. the client transaction of the Request
051: * message upon which this is a Response.
052: * <p>
053: * ResponseEvent contains the following elements:
054: * <ul>
055: * <li>source - the source of the event i.e. the SipProvider sending the
056: * ResponseEvent.
057: * <li>clientTransaction - the client transaction this ResponseEvent is
058: * associated with.
059: * <li>Response - the Response message received on the SipProvider
060: * that needs passed to the application encapsulated in a ResponseEvent.
061: * </ul>
062: *
063: * @since v1.1
064: */
065: public class ResponseEvent extends SipEvent {
066:
067: /**
068: * Constructs a ResponseEvent encapsulating the Response that has
069: * been received by the underlying SipProvider. This ResponseEvent
070: * once created is passed to
071: * {@link SipListener#processResponse(ResponseEvent)}
072: * method of the SipListener for application processing.
073: *
074: * @param source - the source of ResponseEvent i.e. the SipProvider
075: * @param clientTransaction - client transaction upon which
076: * this Response was sent
077: * @param response - the Response message received by the SipProvider
078: */
079: public ResponseEvent(Object source,
080: ClientTransaction clientTransaction, Response response) {
081: super (source);
082: m_response = response;
083: m_transaction = clientTransaction;
084: }
085:
086: /**
087: * Gets the client transaction associated with this ResponseEvent
088: *
089: * @return client transaction associated with this ResponseEvent
090: */
091: public ClientTransaction getClientTransaction() {
092: return m_transaction;
093: }
094:
095: /**
096: * Gets the Response message encapsulated in this ResponseEvent.
097: *
098: * @return the response associated with this ResponseEvent.
099: */
100: public Response getResponse() {
101: return m_response;
102: }
103:
104: /** Current response to process. */
105: private Response m_response;
106: /** Current transaction. */
107: private ClientTransaction m_transaction;
108: }
|