//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SIG
//
//File: sigstate_null.cpp
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/12/09 15:18:21 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      See corresponding header file.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#include "sigstate_null.h"

sigNull *sigNull :: _only = 0;

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

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

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

void sigNull :: sigSETUPreqAct(sigSETUPreq *primitive_,
                               pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    
    // ++TODO++ may this come to network from user, or does it matter?
    if (protocol->isNetworkMode() == false &&
        primitive_->isVariableDefined(sigEndpointReferenceStr) == true)
    {
        // Multipoint Setup
        protocol->setMultipointConnection();
    }
    
    protocol->changeToCallInitiatedState();
    protocol->startPROCEEDINGtimer();
    protocol->sendSETUPreqToDown(primitive_);
    return;
}

void sigNull :: sigSETUPindAct(sigSETUPind *primitive_,
                               pfProtocol *protocol_)
{
    sigProtocol *protocol = protocolCast(protocol_);
    protocol->createConduitsConnection(primitive_);
    protocol->changeToCallPresentState();
    protocol->sendSETUPindToCC(primitive_);
    return;
}
