sofaswitch-svn
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
January 2007
- 1 participants
- 21 discussions
31 Jan '07
Author: derek
Date: Wed Jan 31 18:21:02 2007
New Revision: 239
Added:
sofaswitch/trunk/callflow/src/sendmessage.cpp
sofaswitch/trunk/callflow/src/sendmessage.h
Log:
Add these files to the callflow source.
Added: sofaswitch/trunk/callflow/src/sendmessage.cpp
==============================================================================
--- (empty file)
+++ sofaswitch/trunk/callflow/src/sendmessage.cpp Wed Jan 31 18:21:02 2007
@@ -0,0 +1,93 @@
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+#include <wx/textfile.h>
+#include <wx/tokenzr.h>
+#include "shapelist.h"
+
+
+#include "sendmessage.h"
+#include "bitmaps/sendmessage.xpm"
+
+/////////////////////////////////////////////////////////////////////////////
+DndShapeSendMessage::DndShapeSendMessage()
+ : DndShape(SendMessage)
+{
+ wxSize newSize(30, 40);
+ SetSize(newSize);
+
+ relInputPoints.Add(16, 0);
+ relOutputPoints.Add(16, 40);
+
+ displayData[displayData.size()] =
+ InformationSection(wxT("Message to send (Python code)"), wxT("\"voip:reporttome\""));
+
+ AdjustIoPoints();
+}
+
+void DndShapeSendMessage::Draw(wxDC& dc)
+{
+ DrawCompileError(dc);
+ dc.SetBrush(wxBrush(*wxBLACK, wxSOLID));
+ dc.SetPen(*wxBLACK_PEN);
+
+ wxPoint p1(m_rect.GetPosition());
+ wxPoint pA(p1.x + 16, p1.y + 12);
+ wxPoint pB(p1.x + 16, p1.y + 0);
+ wxPoint pC(p1.x + 16, p1.y + 50);
+ wxPoint pD(p1.x + 16, p1.y + 36);
+
+ DrawArrow(dc, pA, ArrowDown, InputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pC, ArrowDown, OutputPointConnected(0) ? Connected : Loose);
+ dc.DrawLine(pA, pB);
+ dc.DrawLine(pD, pC);
+
+ dc.DrawBitmap(sendmessage_xpm, p1.x + 8, p1.y + 18, true);
+
+ DndShape::Draw(dc);
+}
+
+bool DndShapeSendMessage::WriteSystemCode(wxTextFile & file)
+{
+ file.AddLine(" def Send_Message(self, sTuple): ");
+ file.AddLine(" a,b,c = sTuple ");
+ file.AddLine(" try: ");
+ file.AddLine(" mesg = eval(self.data[a][\"Send Message Code\"]) + \"\\0\" ");
+ file.AddLine(" self.transport.write(mesg) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"Send Message command \", self.data[a][\"Send Message Code\"], \" could not be parsed\" ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine("");
+
+ return true;
+}
+
+bool DndShapeSendMessage::WriteThisShapeInfo(wxTextFile & file)
+{
+ file.AddLine(wxString::Format(" \"%s\" : { ", GetKey().c_str()));
+
+ wxNode *inputNode = (wxNode *)GetInputPoints().GetFirst();
+ const wxString & inputLabel = ((LabelledPoint *)inputNode->GetData())->GetFullLabel();
+ file.AddLine(wxString::Format(" \"Input\" : "));
+ file.AddLine(wxString::Format(" %s, ", inputLabel.c_str()));
+
+ wxNode *outputNode = (wxNode *)GetOutputPoints().GetFirst();
+ const wxString & outputLabel = ((LabelledPoint *)outputNode->GetData())->GetFullLabel();
+ file.AddLine(wxString::Format(" \"Output\" : "));
+ file.AddLine(wxString::Format(" %s, ", outputLabel.c_str()));
+
+ file.AddLine(wxString::Format(" \"Send Message Code\" : "));
+ wxString dest = ProtectString(displayData[1].data);
+ file.AddLine(wxString::Format(" \"%s\", ", dest.c_str()));
+
+ file.AddLine(wxString::Format(" },"));
+
+ return true;
+}
Added: sofaswitch/trunk/callflow/src/sendmessage.h
==============================================================================
--- (empty file)
+++ sofaswitch/trunk/callflow/src/sendmessage.h Wed Jan 31 18:21:02 2007
@@ -0,0 +1,36 @@
+#ifndef SHAPE_SEND_MESSAGE_H
+
+#define SHAPE_SEND_MESSAGE_H
+
+#include "dnd.h"
+
+//////////////////////////////////////////////////////////////////////////
+/**Define a shape to indicate the sending of a message.
+ */
+class DndShapeSendMessage : public DndShape
+{
+public:
+ /**Construtor, Define this shape in terms of size and points etc */
+ DndShapeSendMessage();
+
+ /**Destroy this shape, and log it */
+ virtual ~DndShapeSendMessage()
+ {
+ }
+
+ /**Draw this particular shape to the screen..*/
+ virtual void Draw(wxDC& dc);
+
+ /** Used to report the name of this particular class. */
+ static wxString GetKindName() { return wxString("Send Message"); }
+
+ /**Write the code generic to this SendMessage code shape */
+ virtual bool WriteSystemCode(wxTextFile & file);
+
+ /**Write the dictionary containing relevant points for this shape */
+ virtual bool WriteThisShapeInfo(wxTextFile & file);
+};
+
+
+#endif // SHAPE_SEND_MESSAGE_H
+
1
0
Author: derek
Date: Wed Jan 31 17:50:16 2007
New Revision: 238
Modified:
sofaswitch/trunk/sound/main.cxx
Log:
Remove test on the sound device being opened or not.
This test does not appear to give a valid result.
Modified: sofaswitch/trunk/sound/main.cxx
==============================================================================
--- sofaswitch/trunk/sound/main.cxx (original)
+++ sofaswitch/trunk/sound/main.cxx Wed Jan 31 17:50:16 2007
@@ -330,16 +330,17 @@
return FALSE;
}
+#if 0
if (!sound.IsOpen()) {
PTRACE(3, "just opened the device, but it is not open ");
return FALSE;
}
-
+#endif
PINDEX currentVolume = 90;
sound.SetVolume(currentVolume);
sound.SetBuffers(480, 2);
-
+#if 0
if (sound.IsOpen()) {
PTRACE(3, "End of OpenAudio, sound device is opened just fine");
return TRUE;
@@ -347,6 +348,8 @@
PTRACE(3, "End of OpenAudio, but the sound device is closed");
return FALSE;
}
+#endif
+ return TRUE;
}
////////////////////////////////////////////////////////////////////////////////
1
0
Author: derek
Date: Wed Jan 31 03:57:39 2007
New Revision: 237
Modified:
sofaswitch/trunk/voip/udpconnection.cxx
sofaswitch/trunk/voip/udpconnection.h
sofaswitch/trunk/voip/udpep.cxx
sofaswitch/trunk/voip/udpep.h
Log:
Add in fixes to get it to compile with the current cvs.
Modified: sofaswitch/trunk/voip/udpconnection.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpconnection.cxx (original)
+++ sofaswitch/trunk/voip/udpconnection.cxx Wed Jan 31 03:57:39 2007
@@ -83,6 +83,13 @@
DecOpalUdpSsConnection();
}
+BOOL OpalUdpSsConnection::OnIncomingConnection(unsigned int options,
+ OpalConnection::StringOptions *stringOptions)
+{
+ PTRACE(3, "UdpSsConnection\t " << *this << " onIncoming connection");
+ return endpoint.OnIncomingConnection(*this, options, stringOptions);
+}
+
BOOL OpalUdpSsConnection::SetUpConnection()
{
@@ -235,7 +242,8 @@
{
PTRACE(3, "Initiate call ");
phase = SetUpPhase;
- if (!OnIncomingConnection())
+ OpalConnection::StringOptions stringOptions;
+ if (!OnIncomingConnection(0, &stringOptions))
Release(EndedByCallerAbort);
else {
PTRACE(2, "UdpSs\tOutgoing call routed to " << ownerCall.GetPartyB() << " for " << *this);
Modified: sofaswitch/trunk/voip/udpconnection.h
==============================================================================
--- sofaswitch/trunk/voip/udpconnection.h (original)
+++ sofaswitch/trunk/voip/udpconnection.h Wed Jan 31 03:57:39 2007
@@ -68,6 +68,12 @@
/**@name Overrides from OpalConnection */
//@{
+
+ /**Indicates this connection instance is about to join another connection
+ instance */
+ virtual BOOL OnIncomingConnection(unsigned int,
+ OpalConnection::StringOptions*);
+
/**Start an outgoing connection.
This function will initiate the connection to the remote entity, for
example in H.323 it sends a SETUP, in SIP it sends an INVITE etc.
Modified: sofaswitch/trunk/voip/udpep.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpep.cxx (original)
+++ sofaswitch/trunk/voip/udpep.cxx Wed Jan 31 03:57:39 2007
@@ -187,6 +187,17 @@
}
+
+BOOL OpalUdpSsEndPoint::OnIncomingConnection(OpalConnection& conn,
+ unsigned int options,
+ OpalConnection::StringOptions *stringOptions)
+{
+ return manager.OnIncomingConnection(conn, options, stringOptions);
+}
+
+
+
+
BOOL OpalUdpSsEndPoint::OnShowOutgoing(const OpalUdpSsConnection & connection)
{
//PTime now;
Modified: sofaswitch/trunk/voip/udpep.h
==============================================================================
--- sofaswitch/trunk/voip/udpep.h (original)
+++ sofaswitch/trunk/voip/udpep.h Wed Jan 31 03:57:39 2007
@@ -177,6 +177,10 @@
const PString & connectionToken /// Token of connection to accept call
);
+ /**A connection is coming in - or being added to this endpoint */
+ virtual BOOL OnIncomingConnection(OpalConnection&, unsigned int,
+ OpalConnection::StringOptions*);
+
/**Call back to indicate that remote is ringing.
If FALSE is returned the call is aborted.
1
0
Author: derek
Date: Wed Jan 17 17:29:41 2007
New Revision: 236
Modified:
sofaswitch/trunk/voip/jocall.cxx
Log:
Send DTMF text via the "SendUserInputTone" method, rather than
the SendUserInputString method. Critical for IAX2 handling.
Modified: sofaswitch/trunk/voip/jocall.cxx
==============================================================================
--- sofaswitch/trunk/voip/jocall.cxx (original)
+++ sofaswitch/trunk/voip/jocall.cxx Wed Jan 17 17:29:41 2007
@@ -173,7 +173,8 @@
void MyOpalCall::SendThisDtmf(const PString & value)
{
for (PSafePtr<OpalConnection> conn(connectionsActive, PSafeReadOnly); conn != NULL; ++conn) {
- conn->SendUserInputString(value);
+ for (PINDEX i = 0; i < value.GetLength(); i++)
+ conn->SendUserInputTone(value[i]);
}
}
1
0
17 Jan '07
Author: derek
Date: Tue Jan 16 22:41:35 2007
New Revision: 235
Modified:
sofaswitch/trunk/server/main.cxx
sofaswitch/trunk/voip/comms.cxx
sofaswitch/trunk/voip/udpconnection.cxx
sofaswitch/trunk/voip/udpconnection.h
Log:
Tidy up the formatting of messages, add new callback to the voip module.
Add more options, so handle more possibilities for the voipNode:Answer xxxx cmd.
Modified: sofaswitch/trunk/server/main.cxx
==============================================================================
--- sofaswitch/trunk/server/main.cxx (original)
+++ sofaswitch/trunk/server/main.cxx Tue Jan 16 22:41:35 2007
@@ -122,9 +122,6 @@
localManager.WaitForEmpty();
PTRACE(3, "delete the manager, as it is now the end of this program ");
- PTRACE(3, "delete the manager, as it is now the end of this program ");
- PTRACE(3, "delete the manager, as it is now the end of this program ");
- PTRACE(3, "delete the manager, as it is now the end of this program ");
}
////////////////////////////////////////////////////////////////////////////////
@@ -696,7 +693,7 @@
PStringStream msg;
msg << GetNow()
- << ::setw(30) << sourceId << " : "
+ << " " <<sourceId << ::setw(25) << " "
<< ::setw(0) << txt << endl;
PWaitAndSignal m(outputMutex);
cerr << msg;
@@ -827,15 +824,16 @@
void TcpConnection::SendThisMessage(PBYTEArray & message)
{
- PTRACE(1, "SEND " << PString((const char *)message.GetPointer(), message.GetSize()));
+ PTRACE(1, "SEND "
+ << PString((const char *)message.GetPointer(), message.GetSize()));
writeMessageLock.Wait();
messagesSocket.Write(message.GetPointer(), message.GetSize());
writeMessageLock.Signal();
IncCountSent();
if (reportSentMessages) {
PStringStream msg;
- msg << GetNow() << ::setw(30)
- << " " << ::setw(0) << "-->"
+ msg << GetNow() << ::setw(18)
+ << " " << sourceId << ::setw(0) << " --> "
<< PString((const char *)message.GetPointer(), message.GetSize() - 1)
<< endl;
PWaitAndSignal m(outputMutex);
@@ -843,7 +841,7 @@
}
}
-////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
void TcpConnectionList::Initialise()
{
Modified: sofaswitch/trunk/voip/comms.cxx
==============================================================================
--- sofaswitch/trunk/voip/comms.cxx (original)
+++ sofaswitch/trunk/voip/comms.cxx Tue Jan 16 22:41:35 2007
@@ -184,11 +184,12 @@
BOOL doAnswer = FALSE;
BOOL doAnswerDefined= FALSE;
if (cmds.GetSize() > 1) {
- if (cmds[1] *= "true") {
+ if ((cmds[1] *= "true") || (cmds[1] *= "yes") || (cmds[1] *= "accept")) {
doAnswer = TRUE;
doAnswerDefined = TRUE;
}
- if (cmds[1] *= "false") {
+
+ if ((cmds[1] *= "false") || (cmds[1] *= "no") || (cmds[1] *= "reject")) {
doAnswer = FALSE;
doAnswerDefined = TRUE;
}
@@ -200,7 +201,8 @@
if (!doAnswerDefined) {
PTRACE(0, "Answer command did not correctly specify what to do ");
- return;
+ PTRACE(0, "The command \"" << cmds[1] << "\" was not understood -- sorry");
+ doAnswer = FALSE;
}
if(!doAnswer) {
PTRACE(3, "Reject this call");
Modified: sofaswitch/trunk/voip/udpconnection.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpconnection.cxx (original)
+++ sofaswitch/trunk/voip/udpconnection.cxx Tue Jan 16 22:41:35 2007
@@ -168,6 +168,11 @@
return new OpalAudioMediaStream(mediaFormat, sessionID, isSource, 2, soundChannel);
}
+void OpalUdpSsConnection::CloseMediaStreams()
+{
+ PTRACE(5, "OpalUdpSsConnection::CloseMediaStreams");
+ OpalConnection::CloseMediaStreams();
+}
BOOL OpalUdpSsConnection::OnOpenMediaStream(OpalMediaStream & mediaStream)
{
@@ -187,6 +192,12 @@
return TRUE;
}
+void OpalUdpSsConnection::Release(CallEndReason reason)
+{
+ ((MyOpalCall &)(GetCall())).CloseThisId();
+ OpalConnection::Release(reason);
+}
+
PSoundChannel * OpalUdpSsConnection::CreateSoundChannel(BOOL isSource)
{
Modified: sofaswitch/trunk/voip/udpconnection.h
==============================================================================
--- sofaswitch/trunk/voip/udpconnection.h (original)
+++ sofaswitch/trunk/voip/udpconnection.h Tue Jan 16 22:41:35 2007
@@ -161,6 +161,10 @@
virtual BOOL SendUserInputString(
const PString & value /// String value of indication
);
+
+ /**Close media streams for session.
+ */
+ virtual void CloseMediaStreams();
//@}
/**@name New operations */
@@ -178,6 +182,20 @@
virtual PSoundChannel * CreateSoundChannel(
BOOL isSource // Direction for channel
);
+
+ /**Release the current connection.
+ This removes the connection from the current call. The call may
+ continue if there are other connections still active on it. If this was
+ the last connection for the call then the call is disposed of as well.
+
+ Note that this function will return quickly as the release and
+ disposal of the connections is done by another thread.
+ */
+ virtual void Release(
+ CallEndReason reason = EndedByLocalUser ///< Reason for call release
+ );
+
+
//@}
1
0
[Sofaswitch-svn] [commit] r234 - in sofaswitch/trunk/callflow: src tests
by SofaSWITCH SVN 15 Jan '07
by SofaSWITCH SVN 15 Jan '07
15 Jan '07
Author: derek
Date: Sun Jan 14 23:10:32 2007
New Revision: 234
Modified:
sofaswitch/trunk/callflow/src/eventer.cpp
sofaswitch/trunk/callflow/src/information.h
sofaswitch/trunk/callflow/src/shapelist.cpp
sofaswitch/trunk/callflow/src/timer.cpp
sofaswitch/trunk/callflow/tests/amplaywavfile.src
sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
sofaswitch/trunk/callflow/tests/forloop.src
sofaswitch/trunk/callflow/tests/helloworld.src
sofaswitch/trunk/callflow/tests/loadgraph.src
sofaswitch/trunk/callflow/tests/makevoipcall.src
sofaswitch/trunk/callflow/tests/parent.src
sofaswitch/trunk/callflow/tests/recordmessage.src
sofaswitch/trunk/callflow/tests/requestnode.src
sofaswitch/trunk/callflow/tests/timetest.src
Log:
Update graphics to cope with chnages in the eventer & timer structures.
Set maximum number of entries in an information box to be 8.
Event information is now a python tuple of (sourceNode, eventName, eventData)
Modified: sofaswitch/trunk/callflow/src/eventer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/eventer.cpp (original)
+++ sofaswitch/trunk/callflow/src/eventer.cpp Sun Jan 14 23:10:32 2007
@@ -35,7 +35,13 @@
InformationSection(wxT("Event sought (Regular Exp)"), wxT("*DTMF"));
displayData[displayData.size()] =
- InformationSection(wxT("Python variable to hold event data"), wxT("self.eventData"));
+ InformationSection(wxT("Python variable: source of the event"), wxT("self.eventSource"));
+
+ displayData[displayData.size()] =
+ InformationSection(wxT("Python variable: name of the event"), wxT("self.eventName"));
+
+ displayData[displayData.size()] =
+ InformationSection(wxT("Python variable: generated data"), wxT("self.eventData"));
}
bool DndShapeEventer::TestInternalVariables()
@@ -122,13 +128,27 @@
file.AddLine(" link not be connected, a None value will be returned. ");
file.AddLine(" \"\"\" ");
file.AddLine(" a,b,c = sTuple ");
- file.AddLine(" pVbl = self.data[a][\"Event Variable\"] ");
- file.AddLine(" pVbl += \" = None\" ");
+ file.AddLine(" pVbl = self.data[a][\"Event Source\"] + \" = None\" ");
+ file.AddLine(" try: ");
+ file.AddLine(" exec(pVbl) ");
+ file.AddLine(" except: ");
+ file.AddLine(" pVbl = self.data[a][\"Event Source\"] ");
+ file.AddLine(" print \"The Python variable \", pVbl, \" to hold event source output could not be initialisd\" ");
+
+ file.AddLine(" pVbl = self.data[a][\"Event Name\"] + \" = None\" ");
file.AddLine(" try: ");
file.AddLine(" exec(pVbl) ");
file.AddLine(" except: ");
- file.AddLine(" pVbl = self.data[a][\"Event Variable\"] ");
- file.AddLine(" print \"The Python variable \", pVbl, \" to hold event output could not be initialisd\" ");
+ file.AddLine(" pVbl = self.data[a][\"Event Name\"] ");
+ file.AddLine(" print \"The Python variable \", pVbl, \" to hold event name output could not be initialisd\" ");
+
+ file.AddLine(" pVbl = self.data[a][\"Event Data\"] + \" = None\" ");
+ file.AddLine(" try: ");
+ file.AddLine(" exec(pVbl) ");
+ file.AddLine(" except: ");
+ file.AddLine(" pVbl = self.data[a][\"Event Data\"] ");
+ file.AddLine(" print \"The Python variable \", pVbl, \" to hold event data output could not be initialisd\" ");
+
file.AddLine(" ePyn = self.data[a][\"Event Python\"] ");
file.AddLine(" eReg = self.data[a][\"Event RegExp\"] ");
file.AddLine(" if len(ePyn) > 0: ");
@@ -169,9 +189,15 @@
file.AddLine(wxString::Format(" \"Event RegExp\" : "));
file.AddLine(wxString::Format(" \"%s\", ", displayData[2].data.c_str()));
- file.AddLine(wxString::Format(" \"Event Variable\" : "));
+ file.AddLine(wxString::Format(" \"Event Source\" : "));
file.AddLine(wxString::Format(" \"%s\", ", displayData[3].data.c_str()));
+ file.AddLine(wxString::Format(" \"Event Name\" : "));
+ file.AddLine(wxString::Format(" \"%s\", ", displayData[4].data.c_str()));
+
+ file.AddLine(wxString::Format(" \"Event Data\" : "));
+ file.AddLine(wxString::Format(" \"%s\", ", displayData[5].data.c_str()));
+
file.AddLine(wxString::Format(" },"));
return true;
Modified: sofaswitch/trunk/callflow/src/information.h
==============================================================================
--- sofaswitch/trunk/callflow/src/information.h (original)
+++ sofaswitch/trunk/callflow/src/information.h Sun Jan 14 23:10:32 2007
@@ -56,7 +56,7 @@
protected:
/**An integer to specify howmany possible controls this dialog can handle */
enum MemberCount {
- MaxMembers = 5 /**This dialog can only handle 5 controls, indexed as 0..4 */
+ MaxMembers = 8 /**This dialog can only handle 5 controls, indexed as 0..7 */
};
Modified: sofaswitch/trunk/callflow/src/shapelist.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/shapelist.cpp (original)
+++ sofaswitch/trunk/callflow/src/shapelist.cpp Sun Jan 14 23:10:32 2007
@@ -320,12 +320,12 @@
file.AddLine(" self.generatedEvents = {} ");
file.AddLine(" self.pendingEvents = {} ");
file.AddLine(" self.currentHandlers= {} ");
- file.AddLine(" self.knownNetworkMessages= [] ");
- file.AddLine(" self.knownNetworkMessages.append(\"REQUESTNEWID\") ");
- file.AddLine(" self.knownNetworkMessages.append(\"RECEIVEDDTMF\") ");
- file.AddLine(" self.knownNetworkMessages.append(\"Terminating\") ");
+ file.AddLine(" self.knownNetworkMessages= [] ");
+ file.AddLine(" self.knownNetworkMessages.append(\"REQUESTNEWID\") ");
+ file.AddLine(" self.knownNetworkMessages.append(\"RECEIVEDDTMF\") ");
+ file.AddLine(" self.knownNetworkMessages.append(\"Terminating\") ");
file.AddLine(" self.knownNetworkMessages.append(\"QueryAcceptIncoming\") ");
-// file.AddLine(" self.knownNetworkMessages.append(\"\") ");
+ file.AddLine(" self.knownNetworkMessages.append(\"FinishedFile\") ");
char c= 34;
wxString tString = wxString::Format(" self.quote = \"\\%c\"", c);
file.AddLine(tString.c_str());
@@ -413,21 +413,39 @@
file.AddLine(" if len(hre.split(event)) > 1: ");
file.AddLine(" #found a match ");
file.AddLine(" eventNode = self.currentHandlers[handler] ");
- file.AddLine(" eventData = self.generatedEvents.pop(event) ");
file.AddLine(" eHandler = self.data[eventNode][\"Event Handler\"] ");
- file.AddLine(" pVbl = self.data[eventNode][\"Event Variable\"] ");
- file.AddLine(" pVbl += \" = \" + self.quote + eventData + self.quote ");
+ file.AddLine(" eSource,eName,eData = self.generatedEvents.pop(event) ");
+
+ file.AddLine(" pVbl = self.data[eventNode][\"Event Source\"] ");
+ file.AddLine(" pVbl += \" = \" + self.quote + eSource + self.quote ");
file.AddLine(" try: ");
file.AddLine(" exec(pVbl) ");
file.AddLine(" except: ");
file.AddLine(" print \"An internal error processing \", pVbl ");
+
+ file.AddLine(" pVbl = self.data[eventNode][\"Event Name\"] ");
+ file.AddLine(" pVbl += \" = \" + self.quote + eName + self.quote ");
+ file.AddLine(" try: ");
+ file.AddLine(" exec(pVbl) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"An internal error processing \", pVbl ");
+
+ file.AddLine(" pVbl = self.data[eventNode][\"Event Data\"] ");
+ file.AddLine(" pVbl += \" = \" + self.quote + eData + self.quote ");
+ file.AddLine(" try: ");
+ file.AddLine(" exec(pVbl) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"An internal error processing \", pVbl ");
+
+
file.AddLine(" self.DoWork(eHandler) ");
file.AddLine(" self.generatedEvents.clear() ");
file.AddLine(" ");
file.AddLine(" def networkEventData(self, eName, data): ");
file.AddLine(" \"\"\"This node has received a message from some remote node. The ");
file.AddLine(" eventName is a concatanation of the sender name and the event. ");
- file.AddLine(" Thus, an example eventName would be voipREQUESTNEWID. ");
+ file.AddLine(" Thus, an example eventName would be voip34REQUESTNEWID. ");
+ file.AddLine(" This example eventName indicates voip34 wants a new id from us ");
file.AddLine(" The data is additional information on this event. In this case, ");
file.AddLine(" the date field could be voip34 (the ID of the node node on voip)");
file.AddLine(" A second possible set of parameters would be voip23DTMF and 9 ");
@@ -545,16 +563,18 @@
file.AddLine(" thisMessage = thisMessage.strip() ");
file.AddLine(" for msg in self.knownNetworkMessages: ");
file.AddLine(" if thisMessage.find(msg) >= 0: ");
- file.AddLine(" idx = thisMessage.find(\":\") ");
- file.AddLine(" msga = thisMessage[0:idx] + thisMessage[(idx+1):] ");
- file.AddLine(" idx = thisMessage.find(\" \") ");
- file.AddLine(" if idx < 0: ");
- file.AddLine(" eName= msga ");
- file.AddLine(" body=\"\" ");
+ file.AddLine(" idxc = thisMessage.find(\":\") ");
+ file.AddLine(" eventSource = thisMessage[0:idxc] ");
+ file.AddLine(" idxs = thisMessage.find(\" \") ");
+ file.AddLine(" if idxs < 0: ");
+ file.AddLine(" eventName = thisMessage[(idxc+1):] ");
+ file.AddLine(" eventData = \"\" ");
file.AddLine(" else: ");
- file.AddLine(" eName = msga[0:idx] ");
- file.AddLine(" body = thisMessage[(idx+1):] ");
- file.AddLine(" self.networkEventData(eName, body) ");
+ file.AddLine(" eventName = thisMessage[(idxc+1):] ");
+ file.AddLine(" eventData = thisMessage[(idxs+1):] ");
+ file.AddLine(" eventString = eventSource + eventName ");
+ file.AddLine(" eTuple = (eventSource, eventName, eventData) ");
+ file.AddLine(" self.networkEventData(eventString, eTuple) ");
file.AddLine(" ");
file.AddLine(" ");
for (int i = 0; i < DndShape::KnownShapes; i++) {
Modified: sofaswitch/trunk/callflow/src/timer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/timer.cpp (original)
+++ sofaswitch/trunk/callflow/src/timer.cpp Sun Jan 14 23:10:32 2007
@@ -96,7 +96,7 @@
file.AddLine(" except: ");
file.AddLine(" print \"The timer label of \", self.data[a][\"Timer label\"], \" was unintelligible Python\" ");
file.AddLine(" return self.data[a][\"Output\"] ");
- file.AddLine(" self.pendingEvents[eName] = a ");
+ file.AddLine(" self.pendingEvents[eName] = (\"internaltimer\", \"timerexpired\", a) ");
file.AddLine(" try: ");
file.AddLine(" self.period = eval (self.data[a][\"Timer period\"]) ");
file.AddLine(" except: ");
Modified: sofaswitch/trunk/callflow/tests/amplaywavfile.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/amplaywavfile.src (original)
+++ sofaswitch/trunk/callflow/tests/amplaywavfile.src Sun Jan 14 23:10:32 2007
@@ -1,3 +1,3 @@
-5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>659<B>427<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>10<B>990<B>405<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>10<B>282<B>279<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>14<B>251<B>461<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable to hold event data<ms>self.dtmfData<ms><special> <B><Shape>9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>202<B>162<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable to hold event data<ms>self.amNode<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>991<B>588<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>9<B>1039<B>386<B>1039,386,1082,387<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>712<B>318<B>712,358,755,361,750,320,793,318,798,333<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>559<B>339<B>559,339,604,342<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>302<B>485<B>302,485,544,492,542,506<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>334<B>209<B> extra <special>Tool Tip<ms>Catch the timer which, when fired,
-indicates the end of this call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable to hold event data<ms>self.hanguptime<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>2<B>769<B>426<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>1058<B>385<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>990<B>549<B> extra <special>Tool Tip<ms>Initiate a timer, which causes this to
-play wave file process to end.<ms><special>Timer period (seconds)<ms>0.1<ms><special>Timer label (string literal)<ms>hanguptime<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>10<B>190<B>254<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>14<B>295<B>185<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable to hold event data<ms>self.soundNode<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>10<B>507<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>20<B>335<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>632<B>318<B>632,366,638,319,685,318,685,330<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>517<B>600<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>
+20<B>362<B>256<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>712<B>318<B>712,358,755,361,750,320,793,318,798,333<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>298<B>185<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.soundNode<ms><special> <B><Shape>9<B>559<B>339<B>559,339,604,342<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>991<B>588<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>2<B>769<B>426<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>302<B>485<B>302,485,544,492,542,506<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>659<B>427<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>1039<B>386<B>1039,386,1082,387<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>10<B>998<B>400<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>9<B>632<B>318<B>632,366,638,319,685,318,685,330<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>362<B>214<B> extra <special>Tool Tip<ms>Catch the timer, which when fired,
+indicates the end of call<ms><special>Event sought (Python code)<ms>self.myId + "thistimer"<ms><special>Event sought (Regular Exp)<ms><ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.hanguptime<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>10<B>513<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>12<B>990<B>548<B> extra <special>Tool Tip<ms>timer which, when completed
+indicates the program should end<ms><special>Timer period (seconds, Python code)<ms>0.1<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>10<B>292<B>270<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>348<B>207<B>348,207,375,214<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>1058<B>385<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>517<B>600<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>2<B>385<B>239<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>14<B>252<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.dtmfData<ms><special> <B><Shape>14<B>201<B>161<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.amNode<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/dtmf_from_sound.src (original)
+++ sofaswitch/trunk/callflow/tests/dtmf_from_sound.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-9<B>335<B>274<B>338,274,335,398<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>221<B>12<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>11<B>222<B>64<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestnode<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>120<B>265<B>248,294,121,265,120,267<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>147<B>379<B>147,379,337,397<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>285<B>179<B>285,179,338,183<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>221<B>199<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>14<B>324<B>187<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestnode<ms><special>Python variable to hold event data<ms>self.timerData<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>14<B>236<B>155<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>REQ<ms><special>Python variable to hold event data<ms>self.newNode<ms><special> <B><Shape>10<B>313<B>226<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>10<B>222<B>108<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>10<B>98<B>311<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>14<B>110<B>269<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable to hold event data<ms>self.dtmfData<ms><special> <B><Shape>2<B>310<B>397<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>13<B>221<B>244<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>
+9<B>232<B>205<B>374,205,376,329,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>222<B>64<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestnode<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>310<B>397<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>13<B>221<B>244<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>9<B>335<B>294<B>336,294,335,397<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>147<B>379<B>147,379,337,397<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>233<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>10<B>320<B>234<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>9<B>285<B>179<B>285,179,338,183<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>207<B>323<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>236<B>159<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>REQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.newNode<ms><special> <B><Shape>10<B>230<B>98<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>14<B>324<B>183<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestnode<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.timerData<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>120<B>265<B>248,294,121,265,120,267<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>160<B>291<B>160,291,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>221<B>12<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/forloop.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/forloop.src (original)
+++ sofaswitch/trunk/callflow/tests/forloop.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-4<B>301<B>152<B> extra <special>Tool Tip<ms>End For Loop<ms><special> <B><Shape>1<B>306<B>11<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>3<B>299<B>62<B> extra <special>Tool Tip<ms>Start For<ms><special>Initialise (Python code)<ms>self.i = 0<ms><special>Test for Termination (Python code)<ms>self.i < 10<ms><special>Increment (Python code)<ms>self.i+=1<ms><special> <B><Shape>20<B>322<B>199<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>307<B>108<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "loop index is ", self.i<ms><special> <B><Shape>9<B>258<B>84<B>296,87,258,84,259,174,299,178<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+3<B>299<B>62<B> extra <special>Tool Tip<ms>Start For<ms><special>Initialise (Python code)<ms>self.i = 0<ms><special>Test for Termination (Python code)<ms>self.i < 10<ms><special>Increment (Python code)<ms>self.i+=1<ms><special> <B><Shape>1<B>306<B>11<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>4<B>301<B>152<B> extra <special>Tool Tip<ms>End For Loop<ms><special> <B><Shape>10<B>316<B>98<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "loop index is ", self.i<ms><special> <B><Shape>20<B>322<B>199<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>258<B>84<B>296,87,258,84,259,174,299,178<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/helloworld.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/helloworld.src (original)
+++ sofaswitch/trunk/callflow/tests/helloworld.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-1<B>374<B>36<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>389<B>126<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>376<B>79<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hello world!"<ms><special> <B><Shape>
+10<B>382<B>79<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hello world!"<ms><special> <B><Shape>1<B>374<B>36<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>387<B>135<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/loadgraph.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/loadgraph.src (original)
+++ sofaswitch/trunk/callflow/tests/loadgraph.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-10<B>378<B>126<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have generated the new graph"<ms><special> <B><Shape>20<B>391<B>305<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>1<B>379<B>35<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>18<B>378<B>79<B> extra <special>Tool Tip<ms>Load New Graph<ms><special>new graph file (Python code)<ms>"am_test.graph"<ms><special> <B><Shape>14<B>389<B>221<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endloadgraph<ms><special>Python variable to hold event data<ms>self.eventData<ms><special> <B><Shape>12<B>378<B>172<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds)<ms>20<ms><special>Timer label (string literal)<ms>endloadgraph<ms><special> <B><Shape>10<B>377<B>262<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "end the master now"<ms><special> <B><Shape>
+10<B>387<B>114<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have generated the new graph"<ms><special> <B><Shape>9<B>442<B>241<B>442,241,499,241,537,241<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>378<B>172<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds)<ms>20<ms><special>Timer label (string literal)<ms>endloadgraph<ms><special> <B><Shape>14<B>392<B>219<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endloadgraph<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>1<B>379<B>35<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>388<B>258<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "end the master now"<ms><special> <B><Shape>20<B>391<B>305<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>18<B>378<B>79<B> extra <special>Tool Tip<ms>Load New Graph<ms><special>new graph file (Python code)<ms>"am_test.graph"<ms><special> <B><Shape>2<B>509<B>241<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/makevoipcall.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/makevoipcall.src (original)
+++ sofaswitch/trunk/callflow/tests/makevoipcall.src Sun Jan 14 23:10:32 2007
@@ -1,4 +1 @@
-10<B>448<B>518<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>12<B>439<B>683<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>2<B>438<B>731<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>215<B>653<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>425<B>333<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>386<B>284<B>386,284,386,313,424,314<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>403<B>444<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "End this as the voip or sound did not respond in time"<ms><special> <B><Shape>10<B>481<B>418<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip node has died ", self.eventData<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>14<B>204<B>496<B> extra <special>Tool Tip<ms>Catch DTMF events<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable to hold event data<ms>self.dtmfData<ms><special> <B><Shape>11<B>191<B>71<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestvoip<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>10<B>200<B>531<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>2<B>227<B>517<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>409<B>257<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable to hold event data<ms>self.requestSound<ms><special> <B><Shape>6<B>189<B>402<B> extra <special>Tool Tip<ms>Make Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>"h323:h323.voxgratia.org"<ms><special> <B><Shape>9<B>214<B>308<B>309,335,214,308<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>214<B>353<B>214,353,216,402<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>523<B>304<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>418<B>359<B>421,359,418,448<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestsound<ms><special> <B><Shape>2<B>218<B>330<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>19<B>216<B>606<B> extra <special>Tool Tip<ms>Send Dtmf<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>9<B>218<B>518<B>218,628,463,518<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>198<B>252<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new voip node on ", self.voipNode<ms><special> <B><Shape>14<B>373<B>236<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable to hold event data<ms>self.requestVoip<ms><special> <B><Shape>9<B>216<B>573<B>216,573<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>295<B>185<B> extra <special>Tool Tip<ms>Catch the creation
-of the sound node<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable to hold event data<ms>self.soundNode<ms><special> <B><Shape>14<B>202<B>162<B> extra <special>Tool Tip<ms>Catch the creation of
-the voip node<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>voipREQ<ms><special>Python variable to hold event data<ms>self.voipNode<ms><special> <B><Shape>13<B>189<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestvoip<ms><special> <B><Shape>14<B>333<B>211<B> extra <special>Tool Tip<ms>Catch the timer which, when fired,
-indicates the end of this call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable to hold event data<ms>self.hanguptime<ms><special> <B><Shape>15<B>190<B>450<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>7<B>440<B>632<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>5<B>193<B>579<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>5<B>189<B>304<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>9<B>506<B>388<B>506,388<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>293<B>279<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>15<B>439<B>579<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>20<B>336<B>255<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>458<B>279<B>458,279,511,279<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>497<B>330<B>511,330,497,418<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>498<B>280<B> extra <special>Tool Tip<ms>The voip node has died.<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>voip[0-9]*Terminating<ms><special>Python variable to hold event data<ms>self.eventData<ms><special> <B><Shape>9<B>464<B>478<B>497,478,495,572,464,578<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>419<B>504<B>419,504,420,570,464,578<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>397<B>310<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.requestVoip==None) or(self.requestSound==None)<ms><special> <B><Shape>
+10<B>448<B>518<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>10<B>293<B>279<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>14<B>297<B>184<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>12<B>439<B>683<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>14<B>375<B>236<B> extra <special>Tool Tip<ms>A timer - did we receive a voip node before this timer fires<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.requestVoip<ms><special> <B><Shape>9<B>214<B>353<B>214,353,216,402<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>412<B>261<B> extra <special>Tool Tip<ms>Did we rceive a sound node in time<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.requestSound<ms><special> <B><Shape>9<B>214<B>308<B>309,335,214,308<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>6<B>189<B>402<B> extra <special>Tool Tip<ms>Make Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>"h323:h323.voxgratia.org"<ms><special> <B><Shape>19<B>216<B>606<B> extra <special>Tool Tip<ms>Send Dtmf<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>15<B>439<B>579<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>15<B>190<B>450<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>9<B>497<B>330<B>511,330,497,418<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>338<B>210<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>2<B>523<B>304<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>403<B>444<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "End this as the voip or sound did not respond in time"<ms><special> <B><Shape>13<B>189<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestvoip<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>458<B>279<B>458,279,511,279<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>71<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestvoip<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>218<B>518<B>218,628,463,518<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>189<B>304<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>2<B>438<B>731<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>202<B>158<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>voipREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>5<B>193<B>579<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>14<B>204<B>491<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>5<B>397<B>310<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.requestVoip==None) or(self.requestSound==None)<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>198<B>252<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new voip node on ", self.voipNode<ms><special> <B><Shape>9<B>418<B>359<B>421,359,418,448<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>227<B>517<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>419<B>504<B>419,504,420,570,464,578<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>218<B>330<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>386<B>284<B>386,284,386,313,424,314<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>200<B>531<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>14<B>501<B>279<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>voip[0-9]*Terminat<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>464<B>478<B>497,478,495,572,464,578<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>216<B>573<B>216,573<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>506<B>388<B>506,388<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>481<B>418<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip node has died ", self.eventData<ms><special> <B><Shape>20<B>336<B>255<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestsound<ms><special> <B><Shape>2<B>425<B>333<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>215<B>653<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>7<B>440<B>632<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/parent.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/parent.src (original)
+++ sofaswitch/trunk/callflow/tests/parent.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-9<B>187<B>42<B>187,236,283,240,285,42,334,44<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>307<B>42<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>10<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>20<B>322<B>143<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>18<B>160<B>141<B> extra <special>Tool Tip<ms>Load New Graph<ms><special>new graph file (Python code)<ms>"child.graph"<ms><special>Python variable to pass to child<ms>self.data[a]<ms><special> <B><Shape>4<B>154<B>189<B> extra <special>Tool Tip<ms>End For Loop<ms><special> <B><Shape>2<B>352<B>210<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>152<B>120<B>152,120,153,214<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>3<B>153<B>93<B> extra <special>Tool Tip<ms>Start For<ms><special>Initialise (Python code)<ms>self.i = 0<ms><special>Test for Termination (Python code)<ms>self.i < 20<ms><special>Increment (Python code)<ms>self.i++<ms><special> <B><Shape>1<B>160<B>46<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>14<B>362<B>122<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable to hold event data<ms>self.termTime<ms><special> <B><Shape>10<B>360<B>161<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "child has terminated", self.termTime<ms><special> <B><Shape>2<B>387<B>145<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>321<B>96<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer<ms><special>Python variable to hold event data<ms>self.eventData<ms><special> <B><Shape>
+2<B>374<B>218<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>307<B>42<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>10<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>3<B>153<B>93<B> extra <special>Tool Tip<ms>Start For<ms><special>Initialise (Python code)<ms>self.i = 0<ms><special>Test for Termination (Python code)<ms>self.i < 20<ms><special>Increment (Python code)<ms>self.i++<ms><special> <B><Shape>14<B>318<B>95<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>20<B>319<B>143<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>4<B>154<B>189<B> extra <special>Tool Tip<ms>End For Loop<ms><special> <B><Shape>1<B>160<B>46<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>438<B>144<B>438,146,477,144<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>383<B>169<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "child has terminated", self.termTime<ms><special> <B><Shape>2<B>452<B>144<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>18<B>160<B>141<B> extra <special>Tool Tip<ms>Load New Graph<ms><special>new graph file (Python code)<ms>"child.graph"<ms><special>Python variable to pass to child<ms>self.data[a]<ms><special> <B><Shape>14<B>388<B>124<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.termTime<ms><special> <B><Shape>9<B>368<B>117<B>368,117,401,124<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>152<B>120<B>152,120,153,214<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>187<B>42<B>187,236,283,240,285,42,334,44<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/recordmessage.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/recordmessage.src (original)
+++ sofaswitch/trunk/callflow/tests/recordmessage.src Sun Jan 14 23:10:32 2007
@@ -1,4 +1,2 @@
-14<B>291<B>535<B> extra <special>Tool Tip<ms>Catch the timer which, when fired,
-indicates the end of this call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable to hold event data<ms>self.hanguptime<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>295<B>185<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable to hold event data<ms>self.soundNode<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>14<B>202<B>162<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable to hold event data<ms>self.amNode<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
-while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>20<B>296<B>625<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>280<B>579<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>10<B>282<B>279<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>605<B>571<B> extra <special>Tool Tip<ms>Initiate a timer, which causes this to
-end.<ms><special>Timer period (seconds)<ms>0.1<ms><special>Timer label (string literal)<ms>hanguptime<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>808<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>190<B>254<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>14<B>251<B>461<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable to hold event data<ms>self.dtmfData<ms><special> <B><Shape>9<B>676<B>363<B>676,371,834,363<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>350<B>557<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>216<B>307<B>216,307,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>296<B>182<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>14<B>203<B>158<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>254<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>343<B>207<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>690<B>373<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>678<B>372<B>678,372,715,373<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
+while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>605<B>575<B> extra <special>Tool Tip<ms>timer, which on firing ends this flow<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>290<B>536<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>20<B>294<B>621<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>289<B>569<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>341<B>557<B>341,557,375,557<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>345<B>207<B>368,207,345,207<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>200<B>247<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>9<B>253<B>180<B>253,180,309,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>294<B>267<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/requestnode.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/requestnode.src (original)
+++ sofaswitch/trunk/callflow/tests/requestnode.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-14<B>244<B>255<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>NEWID<ms><special>Python variable to hold event data<ms>self.eventData<ms><special> <B><Shape>13<B>231<B>340<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>2<B>323<B>370<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>245<B>386<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>323<B>322<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " from ", self.timerData<ms><special> <B><Shape>10<B>231<B>295<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>9<B>290<B>279<B>290,280,350,279<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>231<B>157<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>11<B>232<B>206<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>request node<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>14<B>336<B>282<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>request node<ms><special>Python variable to hold event data<ms>self.timerData<ms><special> <B><Shape>
+2<B>326<B>370<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>340<B>269<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestnode<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.timerData<ms><special> <B><Shape>10<B>336<B>311<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " from ", self.timerData<ms><special> <B><Shape>9<B>390<B>291<B>390,291,445,291<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>13<B>231<B>340<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>2<B>418<B>291<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>240<B>288<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>14<B>246<B>251<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>NEWID<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>11<B>232<B>206<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>request node<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>1<B>231<B>157<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>245<B>386<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>292<B>273<B>292,274,352,273<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/timetest.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/timetest.src (original)
+++ sofaswitch/trunk/callflow/tests/timetest.src Sun Jan 14 23:10:32 2007
@@ -1 +1 @@
-10<B>36<B>110<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Start ", time.asctime()<ms><special> <B><Shape>9<B>150<B>271<B>150,271,152,406,223,407,229,423<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>188<B>201<B>188,201,231,202<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>394<B>380<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>333<B>273<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>self.gap<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>10<B>214<B>303<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t2 ", time.asctime(), " data is ", self.timer2<ms><special> <B><Shape>14<B>139<B>179<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer1<ms><special>Python variable to hold event data<ms>self.timer1Data<ms><special> <B><Shape>14<B>347<B>327<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms>self.myId + "thistimer"<ms><special>Event sought (Regular Exp)<ms><ms><special>Python variable to hold event data<ms>self.timer3<ms><special> <B><Shape>20<B>346<B>417<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>36<B>158<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>self.gap=10<ms><special> <B><Shape>10<B>133<B>218<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t1 ", time.asctime(), " data is ", self.timer1Data<ms><special> <B><Shape>14<B>220<B>256<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer2<ms><special>Python variable to hold event data<ms>self.timer2<ms><special> <B><Shape>9<B>231<B>351<B>232,351,231,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>271<B>275<B>271,277,360,275<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>342<B>368<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t10 ", time.asctime(), " data is ", self.timer3<ms><special> <B><Shape>2<B>204<B>419<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>29<B>207<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1.95<ms><special>Timer label (Python code)<ms>"timer1"<ms><special> <B><Shape>9<B>399<B>349<B>399,349,420,352,418,379<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>54<B>157<B>153,177,156,157,105,167,73,282,57,279,54,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>28<B>63<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>12<B>209<B>203<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>2<ms><special>Timer label (Python code)<ms>"timer2"<ms><special> <B><Shape>
+9<B>153<B>292<B>229,419,153,420,153,292<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>219<B>302<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t2 ", time.asctime(), " data is ", self.timer2<ms><special> <B><Shape>14<B>347<B>326<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms>self.myId + "thistimer"<ms><special>Event sought (Regular Exp)<ms><ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.timer3<ms><special> <B><Shape>9<B>271<B>275<B>271,277,360,275<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>28<B>63<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>12<B>333<B>273<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>self.gap<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>9<B>54<B>157<B>153,177,156,157,105,167,73,282,57,279,54,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>342<B>368<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t10 ", time.asctime(), " data is ", self.timer3<ms><special> <B><Shape>14<B>222<B>256<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer2<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.timer2<ms><special> <B><Shape>12<B>29<B>207<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1.95<ms><special>Timer label (Python code)<ms>"timer1"<ms><special> <B><Shape>10<B>36<B>158<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>self.gap=10<ms><special> <B><Shape>2<B>394<B>380<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>188<B>201<B>188,201,231,202<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>209<B>203<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>2<ms><special>Timer label (Python code)<ms>"timer2"<ms><special> <B><Shape>10<B>137<B>232<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "t1 ", time.asctime(), " data is ", self.timer1Data<ms><special> <B><Shape>10<B>36<B>110<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Start ", time.asctime()<ms><special> <B><Shape>20<B>346<B>417<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>204<B>419<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>396<B>347<B>419,380,418,348,396,347<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>229<B>362<B>235,362,229,419<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>140<B>181<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>timer1<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.timer1Data<ms><special> <B><Shape>
1
0
Author: derek
Date: Thu Jan 11 22:24:12 2007
New Revision: 233
Modified:
sofaswitch/trunk/voip/comms.cxx
Log:
ensure we do not attempt to simultaneously accept and reject this call.
Modified: sofaswitch/trunk/voip/comms.cxx
==============================================================================
--- sofaswitch/trunk/voip/comms.cxx (original)
+++ sofaswitch/trunk/voip/comms.cxx Thu Jan 11 22:24:12 2007
@@ -206,6 +206,7 @@
PTRACE(3, "Reject this call");
PWaitAndSignal m(opalCallLock);
myOpalCall->Clear();
+ return;
}
PString thisToken;
1
0
Author: derek
Date: Thu Jan 11 21:53:57 2007
New Revision: 232
Modified:
sofaswitch/trunk/message.cxx
Log:
Add documentation on the "reporttome" command.
Modified: sofaswitch/trunk/message.cxx
==============================================================================
--- sofaswitch/trunk/message.cxx (original)
+++ sofaswitch/trunk/message.cxx Thu Jan 11 21:53:57 2007
@@ -219,6 +219,9 @@
detect DTMF, and is passing this on to the controller. The sound node, and
telephone line handlers can also detect DTMF events (which are alternatively
key pad presses) </td> </tr>
+<tr><td> reporttome </td><td> A supervisor (or worker) this message. A controller will send this message. The
+ recipient of this message will then send all queries (e.g. answer call) to the source
+ of this mesasge </td></tr>
<tr><td> requestnewid </td><td> A Supervisor will receive this message, create a new Worker, and reply with the
id of the created Worker.
An argument can be supplied. Currently, the only entity which uses this is the
1
0
Author: derek
Date: Thu Jan 11 21:53:19 2007
New Revision: 231
Modified:
sofaswitch/trunk/sofa/src/messages.cxx
Log:
Add handling of the message, "reporttome", so any controller can ask
any sofa node to send all messages to a new controlling entity.
Modified: sofaswitch/trunk/sofa/src/messages.cxx
==============================================================================
--- sofaswitch/trunk/sofa/src/messages.cxx (original)
+++ sofaswitch/trunk/sofa/src/messages.cxx Thu Jan 11 21:53:19 2007
@@ -106,10 +106,12 @@
availableCommands += PString(/* 14 */ "REQUESTNEWID");
availableCommands += PString(/* 15 */ "SETRECEIVEDMSGFILE");
availableCommands += PString(/* 16 */ "SETANNOUNCEMENTFILE");
+ availableCommands += PString(/* 17 */ "REPORTTOME");
#ifdef PMEMORY_CHECK
- availableCommands += PString(/* 17 */ "DUMPMEM");
+ availableCommands += PString(/* 18 */ "DUMPMEM");
#endif
+
WORD localPort = preferredPort;
for (; preferredPort != 0;) {
if (audioSocket.Listen(INADDR_ANY, 0, localPort)) {
@@ -577,8 +579,14 @@
return;
}
-#ifdef PMEMORY_CHECK
if (cmds[0] *= availableCommands[17]) {
+ PTRACE(2, "ReportToMe " << cmds[0]);
+ SetRemoteController(sender);
+ return;
+ }
+
+#ifdef PMEMORY_CHECK
+ if (cmds[0] *= availableCommands[18]) {
PTRACE(2, "ProcessMemoryDump " << cmds[0]);
ProcessMemoryDump(cmds, sender);
return;
1
0
Author: derek
Date: Thu Jan 11 21:52:03 2007
New Revision: 230
Modified:
sofaswitch/trunk/voip/comms.cxx
sofaswitch/trunk/voip/counts.cxx
sofaswitch/trunk/voip/jocall.h
sofaswitch/trunk/voip/main.cxx
sofaswitch/trunk/voip/mymanager.cxx
sofaswitch/trunk/voip/mymanager.h
sofaswitch/trunk/voip/udpconnection.cxx
sofaswitch/trunk/voip/udpep.cxx
sofaswitch/trunk/voip/udpep.h
sofaswitch/trunk/voip/udpsound.cxx
Log:
Tidy tidy tidy. Alter log levels to be less verbose.
Modified: sofaswitch/trunk/voip/comms.cxx
==============================================================================
--- sofaswitch/trunk/voip/comms.cxx (original)
+++ sofaswitch/trunk/voip/comms.cxx Thu Jan 11 21:52:03 2007
@@ -241,7 +241,7 @@
PUDPSocket & Comms::GetAudioSocket()
{
- PTRACE(3, "Return reference to audio socket");
+ PTRACE(6, "Return reference to audio socket");
return audioSocket;
}
////////////////////////////////////////////////////////////////////////////////
Modified: sofaswitch/trunk/voip/counts.cxx
==============================================================================
--- sofaswitch/trunk/voip/counts.cxx (original)
+++ sofaswitch/trunk/voip/counts.cxx Thu Jan 11 21:52:03 2007
@@ -113,29 +113,24 @@
<< ::setw(6) << PString(countDelUdpSoundChannel)
<< ::setw(6) << PString(countUdpSoundChannel - countDelUdpSoundChannel)
<< ::setw(0);
- PTRACE(1, "Get count udp sound channel " << msg);
return msg;
}
-void DecComms() { ++countDelComms; }
-void DecMyManager() { ++countDelMyManager; }
-void DecMyOpalCall() { ++countDelMyOpalCall; }
+void DecComms() { ++countDelComms; }
+void DecMyManager() { ++countDelMyManager; }
+void DecMyOpalCall() { ++countDelMyOpalCall; }
void DecOpalUdpSsConnection() { ++countDelOpalUdpSsConnection; }
-void DecOpalUdpSsEndPoint() { ++countDelOpalUdpSsEndPoint; }
-void DecSupervisor() { ++countDelSupervisor; }
-void DecUdpSoundChannel() { ++countDelUdpSoundChannel; }
-
-void IncComms() { ++countComms; }
-void IncMyManager() { ++countMyManager; }
-void IncMyOpalCall() { ++countMyOpalCall; }
+void DecOpalUdpSsEndPoint() { ++countDelOpalUdpSsEndPoint; }
+void DecSupervisor() { ++countDelSupervisor; }
+void DecUdpSoundChannel() { ++countDelUdpSoundChannel; }
+
+void IncComms() { ++countComms; }
+void IncMyManager() { ++countMyManager; }
+void IncMyOpalCall() { ++countMyOpalCall; }
void IncOpalUdpSsConnection() { ++countOpalUdpSsConnection; }
-void IncOpalUdpSsEndPoint() { ++countOpalUdpSsEndPoint; }
-void IncSupervisor() { ++countSupervisor; }
-void IncUdpSoundChannel()
-{
- PTRACE(1, "Inc count udp sound channel");
- ++countUdpSoundChannel;
-}
+void IncOpalUdpSsEndPoint() { ++countOpalUdpSsEndPoint; }
+void IncSupervisor() { ++countSupervisor; }
+void IncUdpSoundChannel() { ++countUdpSoundChannel; }
Modified: sofaswitch/trunk/voip/jocall.h
==============================================================================
--- sofaswitch/trunk/voip/jocall.h (original)
+++ sofaswitch/trunk/voip/jocall.h Thu Jan 11 21:52:03 2007
@@ -37,8 +37,8 @@
#endif
#include <opal/call.h>
+#include "comms.h"
-class Comms;
class MyManager;
/**
A class the combines the OpalCall structure from OPAL with our protocol
Modified: sofaswitch/trunk/voip/main.cxx
==============================================================================
--- sofaswitch/trunk/voip/main.cxx (original)
+++ sofaswitch/trunk/voip/main.cxx Thu Jan 11 21:52:03 2007
@@ -107,7 +107,6 @@
"s-server:"
"i-id:"
"-password:"
- "-controller:"
#if PTRACING
"o-output:"
#endif
@@ -234,7 +233,6 @@
" -h --help : This help message.\n"
" --server srv/id : server to connect to, which labels us as ID \n"
" --password pwd : password to use\n"
- " --controller cntrl : remote entity which controls us\n"
"\n"
<< endl;
return;
@@ -277,17 +275,8 @@
PTRACE(3, "Select a default password of " << ourPassword);
}
- PString ourController;
- if (args.HasOption("controller")) {
- ourController = args.GetOptionString("controller");
- PTRACE(3, "remote controller is " << ourController);
- } else {
- ourController = "controller";
- PTRACE(3, "remote controller is set to " << ourController << " which is the default");
- }
-
LaunchNewId lid(ourId, ourPassword);
- opal = new MyManager(lid, ourController, ourId, ourPassword);
+ opal = new MyManager(lid, ourId, ourPassword);
if (opal->Initialise(args)) {
opal->Main(args);
Modified: sofaswitch/trunk/voip/mymanager.cxx
==============================================================================
--- sofaswitch/trunk/voip/mymanager.cxx (original)
+++ sofaswitch/trunk/voip/mymanager.cxx Thu Jan 11 21:52:03 2007
@@ -80,7 +80,6 @@
///////////////////////////////////////////////////////////////
MyManager::MyManager(LaunchNewId & _lid,
- PString & _controllerId,
PString & _ourId, PString & _ourPassword)
: lid(_lid),
supervisor(*(new Supervisor(lid)))
@@ -89,8 +88,6 @@
allocationNumber = 0;
IncMyManager();
-
- controllerId = _controllerId;
ourId = _ourId;
ourPassword = _ourPassword;
@@ -702,7 +699,7 @@
}
PTRACE(3, "Now, we have to leave a wait period");
- cerr << "Allow all the current comms instances to end " << endl;
+
PThread::Sleep(2000);
PTRACE(3, "Finished the 2 second wait for comms to die");
@@ -920,6 +917,12 @@
OpalManager::OnAlerting(connection);
}
+PString MyManager::GetControllerId()
+{
+ return supervisor.GetRemoteController();
+}
+
+
/* The comment below is magic for those who use emacs to edit this file. */
/* With the comment below, the tab key does auto indent to 2 spaces. */
Modified: sofaswitch/trunk/voip/mymanager.h
==============================================================================
--- sofaswitch/trunk/voip/mymanager.h (original)
+++ sofaswitch/trunk/voip/mymanager.h Thu Jan 11 21:52:03 2007
@@ -61,7 +61,7 @@
public:
/**Constructor */
- MyManager(LaunchNewId & lid, PString & controllerId, PString & ourId, PString & ourPassword);
+ MyManager(LaunchNewId & lid, PString & ourId, PString & ourPassword);
/**destructor */
~MyManager();
@@ -136,7 +136,7 @@
PString GetOurId() { return ourId; }
/**Return the id of the remote controller */
- PString GetControllerId() { return controllerId; }
+ PString GetControllerId();
/**Set up a call between two parties.
This is used to initiate a call. Incoming calls are "answered" using a
@@ -249,11 +249,6 @@
/**The IAX2 endpoint that is used for controlling h323 calls */
IAX2EndPoint * iax2EP;
#endif
-
- /**The unique ID that identifies the remote controller who is
- responsible for the overview of this sofaswitch */
- PString controllerId;
-
/**An enity which could be used when logging in to the server */
PString ourPassword;
Modified: sofaswitch/trunk/voip/udpconnection.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpconnection.cxx (original)
+++ sofaswitch/trunk/voip/udpconnection.cxx Thu Jan 11 21:52:03 2007
@@ -117,7 +117,7 @@
if (mediaStreams.IsEmpty())
phase = ConnectedPhase;
else {
- PTRACE(3, "ZZZ\t there are " << mediaStreams.GetSize() << " current media stream ");
+ PTRACE(5, "UdpSs\t there are " << mediaStreams.GetSize() << " current media stream ");
phase = EstablishedPhase;
OnEstablished();
}
Modified: sofaswitch/trunk/voip/udpep.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpep.cxx (original)
+++ sofaswitch/trunk/voip/udpep.cxx Thu Jan 11 21:52:03 2007
@@ -74,7 +74,13 @@
DecOpalUdpSsEndPoint();
}
-
+BOOL OpalUdpSsEndPoint::MakeConnection(OpalCall & call,
+ const PString & remoteParty,
+ void * userData)
+{
+ return MakeConnection(call, remoteParty, userData, 0);
+}
+
BOOL OpalUdpSsEndPoint::MakeConnection(OpalCall & call,
Modified: sofaswitch/trunk/voip/udpep.h
==============================================================================
--- sofaswitch/trunk/voip/udpep.h (original)
+++ sofaswitch/trunk/voip/udpep.h Thu Jan 11 21:52:03 2007
@@ -107,6 +107,16 @@
unsigned int options = 0 ///< options to pass to conneciton
);
+ /**This filler method is identical to that above, and is provided as a
+ convenience, when working against different library versions.*/
+ virtual BOOL MakeConnection(
+ OpalCall & call, ///< Owner of connection
+ const PString & party, ///< Remote party to call
+ void * userData = NULL ///< Arbitrary data to pass to connection
+ );
+
+
+
/**Get the data formats this endpoint is capable of operating.
This provides a list of media data format names that may be used by an
OpalMediaStream may be created by a connection from this endpoint.
Modified: sofaswitch/trunk/voip/udpsound.cxx
==============================================================================
--- sofaswitch/trunk/voip/udpsound.cxx (original)
+++ sofaswitch/trunk/voip/udpsound.cxx Thu Jan 11 21:52:03 2007
@@ -59,7 +59,7 @@
audioSocket(_myOpalCall.GetAudioSocket()), isSource(_isSource)
{
IncUdpSoundChannel();
- PTRACE(3, "ZZZ\tCreate UdpSoundSocket for " << GetSSLabel(isSource));
+ PTRACE(6, "ZZZ\tCreate UdpSoundSocket for " << GetSSLabel(isSource));
os_handle = -2;
}
@@ -68,7 +68,7 @@
os_handle = -1;
readQueue.Close();
- PTRACE(3, "UdpSoundChannel " << *this << " destroyed.");
+ PTRACE(6, "UdpSoundChannel " << *this << " destroyed.");
DecUdpSoundChannel();
}
@@ -103,7 +103,7 @@
{
PTRACE(6, "Write " << amount << " bytes to the socket");
if (!IsOpen()) {
- PTRACE(1, "Write failed as this sound channel is closed");
+ PTRACE(3, "Write failed as this sound channel is closed");
return FALSE;
}
@@ -130,7 +130,7 @@
BOOL UdpSoundChannel::Read(void * buffer, PINDEX amount)
{
if (!IsOpen()) {
- PTRACE(1, "Read failed as this sound channel is closed");
+ PTRACE(3, "Read failed as this sound channel is closed");
return FALSE;
}
@@ -147,7 +147,7 @@
PTRACE(1, "The read of a packet from a socket failed for " << GetSSLabel(isSource));
return FALSE;
}
- PTRACE(4, "The socket provided us with " << audioSocket.GetLastReadCount() << " bytes");
+ PTRACE(5, "The socket provided us with " << audioSocket.GetLastReadCount() << " bytes");
readOk = readQueue.Write(readBuffer.GetPointer(), audioSocket.GetLastReadCount());
PTRACE(5, "The readqueue now has a size of " << readQueue.GetLength() << " bytes");
@@ -167,7 +167,7 @@
BOOL UdpSoundChannel::Close()
{
PTRACE(3, "Close audio channel now for " << GetSSLabel(isSource));
- PTRACE(5, "os_handle or fd = " << os_handle);
+ PTRACE(6, "os_handle or fd = " << os_handle);
audioSocket.Close();
os_handle = -1;
1
0