コード例 #1
0
ファイル: readDTMF.cpp プロジェクト: mss/capisuite-legacy
ReadDTMF::ReadDTMF(Connection *conn, int timeout, int min_digits, int max_digits)
	:CallModule(conn, timeout, false),min_digits(min_digits),max_digits(max_digits)
{
	if (conn->getState()!=Connection::UP)
		throw CapiWrongState("Disconnection occured.","ReadDTMF::ReadDTMF()");
	digit_count=conn->getDTMF().size();
}
コード例 #2
0
ConnectModule::ConnectModule(Connection *conn_in, Connection::service_t service, string faxStationID, string faxHeadline) throw (CapiWrongState,CapiExternalError)
:CallModule(conn_in,-1,false,false),service(service),faxStationID(faxStationID),faxHeadline(faxHeadline)
{
	if (conn->getState()==Connection::UP)
		throw CapiExternalError("Call is already connected","ConnectModule::ConnectModule()");
	if (conn->getState()!=Connection::WAITING)
		throw CapiWrongState("Can't connect because call not waiting","ConnectModule::ConnectModule()");
}
コード例 #3
0
ファイル: callmodule.cpp プロジェクト: mss/capisuite-legacy
void
CallModule::mainLoop() throw (CapiWrongState,CapiMsgError,CapiExternalError,CapiError)
{
	if (! (DTMF_exit && (conn->getDTMF()!="") ) ) {
		exit_time=getTime()+timeout;
		timespec delay_time;
		delay_time.tv_sec=0; delay_time.tv_nsec=100000000;  // 100 msec
		while(!finish && !abort && ( (timeout==-1) || (getTime() <= exit_time) ) )
			nanosleep(&delay_time,NULL);
	}
	if (abort)
		throw CapiWrongState("call abort detected","CallModule::mainLoop()");
}