//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SIG
//
//File: sigstate.cpp
//
//Version: $Revision: 1.2 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/11 13:28:47 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      See corresponding header file (sigstate.h).
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#include "sigstate.h"

#include "sigstrings.h"
#include "sigtimeouts.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 :: 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 = dynamic_cast<sigProtocol*>(protocol_);
    protocol->sendRESETreqToDown(primitive_);
    return;
}

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

void sigState :: sigRESET_ERRORrespAct(sigRESET_ERRORresp *primitive_,
                                       pfProtocol *protocol_)
{
    sigProtocol *protocol = dynamic_cast<sigProtocol*>(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 = dynamic_cast<sigProtocol*>(protocol_);
    protocol->reportIncompatibleMessage(primitive_);
    return;
}

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

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

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

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

void sigState :: sigRELEASEconfAct(sigRELEASEconf *primitive_,
                                   pfProtocol *protocol_)
{
    sigProtocol *protocol = dynamic_cast<sigProtocol*>(protocol_);
    protocol->stopAllTimers();
    protocol->sendRELEASEconfToCC(primitive_);
    protocol->clearCall();
    return;
}

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

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

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