//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SIG
//
//File: sigstate.cpp
//
//Version: $Revision: 1.7 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/12/13 13:06:05 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      See corresponding header file (sigstate.h).
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#include "sigstate.h"
#include "sigstrings.h"
#include "sigtimeouts.h"

#include "pf/error.h"

sigState :: sigState(void)
    : sigDownInputs(),
      sigUpInputs(),
      sigTimeoutInputs(),
      pfState()
{
    return;
}

sigState :: ~sigState(void)
{
    return;
}

sigProtocol *sigState :: protocolCast(pfProtocol *protocol_) const
{
    sigProtocol *protocol = dynamic_cast<sigProtocol*>(protocol_);
    THROW_IF_DYNAMIC_CAST_FAILED(protocol);
    return protocol;
}


//
// Method: sig*Act
//
// Description:
//      Inputs inherited from sigDownInputs
//

void sigState :: sigSETUPreqAct(sigSETUPreq *,
                                pfProtocol *)
{
    return;
}

void sigState :: sigPROCEEDINGreqAct(sigPROCEEDINGreq *,
                                     pfProtocol *)
{
    return;
}

void sigState :: sigALERTINGreqAct(sigALERTINGreq *,
                                   pfProtocol *)
{
    return;
}

void sigState :: sigSETUPrespAct(sigSETUPresp *,
                                 pfProtocol *)
{
    return;
}

void sigState :: sigSETUP_COMPLETEreqAct(sigSETUP_COMPLETEreq *,
                                         pfProtocol *)
{
    return;
}

void sigState :: sigRELEASEreqAct(sigRELEASEreq *,
                                  pfProtocol *)
{
    return;
}

void sigState :: sigRELEASErespAct(sigRELEASEresp *,
                                   pfProtocol *)
{
    return;
}

void sigState :: sigRESETreqAct(sigRESETreq *primitive_,
                                pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->sendRESETreqToDown(primitive_);
    return;
}

void sigState :: sigRESETrespAct(sigRESETresp *primitive_,
                                 pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->sendRESETrespToDown(primitive_);
    return;
}

void sigState :: sigRESET_ERRORrespAct(sigRESET_ERRORresp *primitive_,
                                       pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->sendRESET_ERRORrespToDown(primitive_);
    return;
}


//
// Methods: sig*Act
//
// Description:
//      Inputs inherited from sigUpInputs
//

void sigState :: sigSETUPindAct(sigSETUPind *,
                                pfProtocol *)
{
    return;
}

void sigState :: sigPROCEEDINGindAct(sigPROCEEDINGind *primitive_,
                                     pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->reportIncompatibleMessage(primitive_);
    return;
}

void sigState :: sigALERTINGindAct(sigALERTINGind *primitive_,
                                   pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->reportIncompatibleMessage(primitive_);
    return;
}

void sigState :: sigSETUPconfAct(sigSETUPconf *primitive_,
                                 pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->reportIncompatibleMessage(primitive_);
    return;
}

void sigState :: sigSETUP_COMPLETEindAct(sigSETUP_COMPLETEind *primitive_,
                                         pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->reportIncompatibleMessage(primitive_);
    return;
}

void sigState :: sigRELEASEindAct(sigRELEASEind *,
                                  pfProtocol *)
{
    return;
}

void sigState :: sigRELEASEconfAct(sigRELEASEconf *primitive_,
                                   pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->releaseCompleteAct(primitive_);
    protocol->stopAllTimers();
    protocol->sendRELEASEconfToCC(primitive_);
    protocol->changeToNullState();
    return;
}

void sigState :: sigRESETindAct(sigRESETind *, pfProtocol *)
{
    return;
}

void sigState :: sigRESETconfAct(sigRESETconf *, pfProtocol *)
{
    return;
}

void sigState :: sigRESET_ERRORindAct(sigRESET_ERRORind *, pfProtocol *)
{
    return;
}

//
// Methods: sig*timeoutAct
//
// Description:
//      Inputs inherited from sigTimeoutInputs
//

void sigState :: sigAwaitPROCEEDINGtimeoutAct(pfProtocol *)
{
    return;
}

void sigState :: sigAwaitALERTINGtimeoutAct(pfProtocol *protocol_)
{
    return;
}

void sigState :: sigAwaitCONNECTtimeoutAct(pfProtocol *)
{
    return;
}

void sigState :: sigAwaitCONNECT_ACKtimeoutAct(pfProtocol *)
{
    return;
}

void sigState :: sigAwaitRELEASE_COMPLETEtimeoutAct(pfProtocol *)
{
    return;
}
