//Editor-Info: -*- C++ -*-
//
//Subject: TOVE-project / UNI-SSCF
//
//File: usscfstate2_2.cpp
//
//Version: $Revision: 1.18 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/11 18:54:56 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications and Multimedia
//
//Author:
//      Vesa-Matti Puro 
//
//Description:
//	See corresponding header file.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 
//


#include "usscfstate2_2.h"
#include "usscfprotocol.h"
#include "iface/aaif/aaupprimitives.h"
#include "iface/uaalif/uaaldownprimitives.h"
#include "pf/error.h"

// ----------------------------------------------------------------------

usscfAwaitingEstablish_OutgoingConnectionPending *
    usscfAwaitingEstablish_OutgoingConnectionPending :: _only = 0;

usscfAwaitingEstablish_OutgoingConnectionPending *
    usscfAwaitingEstablish_OutgoingConnectionPending
        :: instance(void)
{
    if (_only == 0)
    {
        _only = new usscfAwaitingEstablish_OutgoingConnectionPending;
    }
    return _only;
}

usscfAwaitingEstablish_OutgoingConnectionPending
    :: usscfAwaitingEstablish_OutgoingConnectionPending(void)
{
    return;
}

usscfAwaitingEstablish_OutgoingConnectionPending
    :: ~usscfAwaitingEstablish_OutgoingConnectionPending(void)
{
    _only = 0;
    return;
}


// ----------------------------------------------------------------------

void usscfAwaitingEstablish_OutgoingConnectionPending
    :: aaESTABLISHconfAct(aaESTABLISHconf *, pfProtocol *protocol_)
{
    usscfProtocol *protocol = dynamic_cast<usscfProtocol *>(protocol_);
    THROW_IF_DYNAMIC_CAST_FAILED(protocol); 
    protocol->sendUaalESTABLISHconf();
    protocol->toUsscfConnectionEstablished_DataTransferReady();
    return;
}

void usscfAwaitingEstablish_OutgoingConnectionPending
    :: aaRELEASEindAct(aaRELEASEind *, pfProtocol *protocol_)
{
    usscfProtocol *protocol = dynamic_cast<usscfProtocol *>(protocol_);
    THROW_IF_DYNAMIC_CAST_FAILED(protocol); 
    protocol->sendUaalRELEASEind();
    protocol->toUsscfConnectionReleased_Idle();
    return;
}


// ----------------------------------------------------------------------

void usscfAwaitingEstablish_OutgoingConnectionPending :: uaalRELEASEreqAct(
    uaalRELEASEreq *,
    pfProtocol *protocol_)
{
    usscfProtocol *protocol = dynamic_cast<usscfProtocol *>(protocol_);
    THROW_IF_DYNAMIC_CAST_FAILED(protocol); 
    protocol->sendAaRELEASEreq();
    protocol->toUsscfAwaitingRelease_OutgoingDisconnectionPending();
    return;
}
