Remove sofia-sip project.

This commit is contained in:
bossiel 2009-12-05 05:42:27 +00:00
parent 6ec47a3d5d
commit a7dcec3d1f
896 changed files with 0 additions and 423325 deletions

View File

@ -1,453 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="doubango"
ProjectGUID="{F31BBB1C-A0EB-46DE-B920-B843918E9090}"
RootNamespace="doubango"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;$(DOUBANGO_HOME)\thirdparties\include\win32&quot;;./src;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\win32&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\su&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\ipt&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\sresolv&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\bnf&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\url&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\msg&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\sip&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\nta&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\nua&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\iptsec&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\http&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\nth&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\nea&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\sdp&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\soa&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\stun&quot;;&quot;$(DOUBANGO_HOME)\sofia-sip-1.12.10\libsofia-sip-ua\tport&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DOUBANGO_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(OutDir)\libsofia_sip_ua.lib"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DOUBANGO_EXPORTS"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="source"
>
<Filter
Name="sip_dialogs"
>
<File
RelativePath=".\src\sip_dialog.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_info.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_invite.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_message.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_options.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_publish.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_register.cxx"
>
</File>
<File
RelativePath=".\src\sip_dialog_subscribe.cxx"
>
</File>
<Filter
Name="sm"
>
<File
RelativePath=".\src\sm_dialog_info_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_invite_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_message_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_options_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_publish_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_register_sm.cxx"
>
</File>
<File
RelativePath=".\src\sm_dialog_subscribe_sm.cxx"
>
</File>
</Filter>
</Filter>
<Filter
Name="api"
>
<File
RelativePath=".\src\api_engine.cxx"
>
</File>
<Filter
Name="sip"
>
<File
RelativePath=".\src\api_sip.cxx"
>
</File>
</Filter>
<Filter
Name="stack"
>
<File
RelativePath=".\src\api_stack.cxx"
>
</File>
<File
RelativePath=".\src\api_stack_sip.cxx"
>
</File>
</Filter>
</Filter>
<Filter
Name="FastDelegate"
>
<File
RelativePath=".\src\fastdelegate.h"
>
</File>
<File
RelativePath=".\src\fastdelegate2.h"
>
</File>
</Filter>
<Filter
Name="utils"
>
<File
RelativePath=".\src\strutils.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="include"
>
<File
RelativePath=".\src\config.h"
>
</File>
<File
RelativePath=".\src\doubango.h"
>
</File>
<File
RelativePath=".\src\pref.h"
>
</File>
<Filter
Name="sip_dialogs"
>
<File
RelativePath=".\src\sip_dialog.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_info.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_invite.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_message.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_options.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_publish.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_register.h"
>
</File>
<File
RelativePath=".\src\sip_dialog_subscribe.h"
>
</File>
<Filter
Name="sm"
>
<File
RelativePath=".\src\sm_dialog_info_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_invite_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_message_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_options_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_publish_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_register_sm.h"
>
</File>
<File
RelativePath=".\src\sm_dialog_subscribe_sm.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="api"
>
<File
RelativePath=".\src\api_engine.h"
>
</File>
<File
RelativePath=".\src\api_errors.h"
>
</File>
<Filter
Name="sip"
>
<File
RelativePath=".\src\api_sip.h"
>
</File>
<File
RelativePath=".\src\api_sip_states.h"
>
</File>
</Filter>
<Filter
Name="stack"
>
<File
RelativePath=".\src\api_stack.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="utils"
>
<File
RelativePath=".\src\strutils.cxx"
>
</File>
</Filter>
</Filter>
<Filter
Name="sm"
>
<File
RelativePath=".\sm\sm_dialog_info.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_invite.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_message.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_options.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_publish.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_register.sm"
>
</File>
<File
RelativePath=".\sm\sm_dialog_subscribe.sm"
>
</File>
<File
RelativePath=".\src\statemap.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,53 +0,0 @@
%{
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
%}
%class sip_dialog_info
%header sip_dialog_info.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_info::Initialized
%map map_dialog_info
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized
Entry
{
}
Exit
{
}
//
{
}
%%

View File

@ -1,53 +0,0 @@
%{
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
%}
%class sip_dialog_invite
%header sip_dialog_invite.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_invite::Initialized
%map map_dialog_invite
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized
Entry
{
}
Exit
{
}
//
{
}
%%

View File

@ -1,75 +0,0 @@
%{
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
%}
%class sip_dialog_message
%header sip_dialog_message.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_message::Initialized
%map map_dialog_message
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized Entry { OnStateChanged(SS_MESSAGE_INITIALIZED); }
{
sm_messageSent() Trying { }
}
Trying Entry { OnStateChanged(SS_MESSAGE_TRYING); }
{
sm_1xx_response() nil {}
sm_2xx_response() Terminated {}
sm_401_407_421_494_response() Authentifying {}
sm_xxx_response Terminated { }
}
Authentifying Entry { OnStateChanged(SS_MESSAGE_AUTHENTIFYING); }
{
sm_1xx_response() nil {}
sm_2xx_response() Terminated {}
sm_xxx_response Terminated { }
sm_authentificationSent() Trying {}
Default nil {}
}
Terminated Entry { OnStateChanged(SS_MESSAGE_TERMINATED); }
{
Default nil {}
}
Default Entry { OnStateChanged(SS_MESSAGE_UNKNOWN); }
{
sm_401_407_421_494_response() Authentifying {}
Default nil {}
}
%%

View File

@ -1,52 +0,0 @@
%{
///****************************************************************************
// _ _
// | | | |
// _ | | ___ _ _| | _ ____ ____ ____ ___
// / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
// ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
// \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
// (_____|
//
// Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
//
// This file is part of Open Source Doubango IMS Client Framework project.
//
// DOUBANGO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOUBANGO is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with DOUBANGO.
//****************************************************************************/
%}
%class sip_dialog_options
%header sip_dialog_options.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_options::Initialized
%map map_dialog_options
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized
Entry
{
}
Exit
{
}
//
{
}
%%

View File

@ -1,100 +0,0 @@
%{
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
%}
%class sip_dialog_publish
%header sip_dialog_publish.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_publish::Initialized
%map map_dialog_publish
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized Entry { OnStateChanged(SS_PUBLISH_INITIALIZED); }
{
sm_publishSent() Trying { }
}
Trying Entry { OnStateChanged(SS_PUBLISH_TRYING); }
{
sm_1xx_response() nil {}
sm_2xx_response(unpub: bool) [unpub == true] Terminated {}
sm_2xx_response(unpub: bool) [unpub == false] Established {}
sm_3xx_response() Terminated {}
sm_401_407_421_494_response() Authentifying {}
sm_4xx_response() Terminated {}
sm_5xx_response() Terminated {}
sm_6xx_response() Terminated {}
sm_xxx_response() Terminated {}
sm_cancelSent() Terminated {}
Default nil {}
}
Established Entry { OnStateChanged(SS_PUBLISH_ESTABLISHED); }
{
sm_1xx_response() nil {}
sm_2xx_response(unpub: bool) [unpub == true] Terminated {}
sm_2xx_response(unpub: bool) [unpub == false] nil {}
sm_401_407_421_494_response() Authentifying {}
sm_unpublishSent() Trying { }
sm_publishSent() Trying {}
sm_xxx_response() Terminated {}
Default nil {}
}
Authentifying Entry { OnStateChanged(SS_PUBLISH_AUTHENTIFYING); }
{
sm_1xx_response() nil {}
sm_2xx_response(unpub: bool) [unpub == true] Terminated {}
sm_2xx_response(unpub: bool) [unpub == false] Established {}
sm_xxx_response() Terminated {}
sm_authentificationSent() Trying {}
Default nil {}
}
Terminated Entry { OnStateChanged(SS_PUBLISH_TERMINATED); }
{
Default nil {}
}
Default Entry { OnStateChanged(SS_PUBLISH_UNKNOWN); }
{
sm_401_407_421_494_response() Authentifying {}
sm_3xx_response() nil {}
sm_4xx_response() nil {}
sm_5xx_response() nil {}
sm_6xx_response() nil {}
sm_xxx_response() nil {}
Default nil {}
}
%%

View File

@ -1,98 +0,0 @@
%{
///****************************************************************************
// _ _
// | | | |
// _ | | ___ _ _| | _ ____ ____ ____ ___
// / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
// ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
// \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
// (_____|
//
// Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
//
// This file is part of Open Source Doubango IMS Client Framework project.
//
// DOUBANGO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOUBANGO is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with DOUBANGO.
//****************************************************************************/
%}
%class sip_dialog_register
%header sip_dialog_register.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_register::Initialized
%map map_dialog_register
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized Entry { OnStateChanged(srs_none); }
{
sm_registerSent() Trying { }
}
Trying Entry { OnStateChanged(srs_trying); }
{
sm_1xx_response() nil {}
sm_2xx_response(unreg: bool) [unreg == true] Terminated {}
sm_2xx_response(unreg: bool) [unreg == false] Established {}
sm_3xx_response() Terminated {}
sm_401_407_421_494_response() Authentifying {}
sm_4xx_response() Terminated {}
sm_5xx_response() Terminated {}
sm_6xx_response() Terminated {}
sm_xxx_response() Terminated {}
sm_cancelSent() Terminated {}
Default nil {}
}
Established Entry { OnStateChanged(srs_registered); }
{
sm_1xx_response() nil {}
sm_2xx_response(unreg: bool) [unreg == true] Terminated {}
sm_2xx_response(unreg: bool) [unreg == false] nil {}
sm_401_407_421_494_response() Authentifying {}
sm_unregisterSent() Trying { }
sm_xxx_response() Terminated {}
Default nil {}
}
Authentifying Entry { OnStateChanged(srs_authentifying); }
{
sm_1xx_response() nil {}
sm_2xx_response(unreg: bool) [unreg == true] Terminated {}
sm_2xx_response(unreg: bool) [unreg == false] Established {}
sm_xxx_response() Terminated {}
sm_authentificationSent() Trying {}
Default nil {}
}
Terminated Entry { OnStateChanged(srs_unregistered); }
{
Default nil {}
}
Default Entry { OnStateChanged(srs_none); }
{
sm_401_407_421_494_response() Authentifying {}
sm_3xx_response() nil {}
sm_4xx_response() nil {}
sm_5xx_response() nil {}
sm_6xx_response() nil {}
sm_xxx_response() nil {}
Default nil {}
}
%%

View File

@ -1,103 +0,0 @@
%{
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
%}
%class sip_dialog_subscribe
%header sip_dialog_subscribe.h
%package dgo // PREF_NAMESPACE_VALUE ==> see 'pref.h' for more information
%start map_dialog_subscribe::Initialized
%map map_dialog_subscribe
%%
//-------------------------------------------------------------------------------------
// Initialized
//-------------------------------------------------------------------------------------
Initialized Entry { OnStateChanged(SS_SUBSCRIBE_INITIALIZED); }
{
sm_subscribeSent() Trying { }
}
Trying Entry { OnStateChanged(SS_SUBSCRIBE_TRYING); }
{
sm_1xx_response() nil {}
sm_2xx_response(unsub: bool) [unsub == true] Terminated {}
sm_2xx_response(unsub: bool) [unsub == false] Established {}
sm_3xx_response() Terminated {}
sm_401_407_421_494_response() Authentifying {}
sm_4xx_response() Terminated {}
sm_5xx_response() Terminated {}
sm_6xx_response() Terminated {}
sm_xxx_response() Terminated {}
sm_notify_response(term: bool) [term == true] Terminated { OnStateChanged(SS_SUBSCRIBE_NOTIFIED); }
sm_notify_response(term: bool) [term == false] nil { OnStateChanged(SS_SUBSCRIBE_NOTIFIED); }
sm_cancelSent() Terminated {}
Default nil {}
}
Established Entry { OnStateChanged(SS_SUBSCRIBE_ESTABLISHED); }
{
sm_1xx_response() nil {}
sm_2xx_response(unsub: bool) [unsub == true] Terminated {}
sm_2xx_response(unsub: bool) [unsub == false] nil {}
sm_401_407_421_494_response() Authentifying {}
sm_unsubscribeSent() Trying { }
sm_xxx_response() Terminated {}
sm_notify_response(term: bool) [term == true] Terminated { OnStateChanged(SS_SUBSCRIBE_NOTIFIED);}
sm_notify_response(term: bool) [term == false] nil { OnStateChanged(SS_SUBSCRIBE_NOTIFIED); }
Default nil {}
}
Authentifying Entry { OnStateChanged(SS_SUBSCRIBE_AUTHENTIFYING); }
{
sm_1xx_response() nil {}
sm_2xx_response(unsub: bool) [unsub == true] Terminated {}
sm_2xx_response(unsub: bool) [unsub == false] Established {}
sm_xxx_response() Terminated {}
sm_authentificationSent() Trying {}
Default nil {}
}
Terminated Entry { OnStateChanged(SS_SUBSCRIBE_TERMINATED); }
{
Default nil {}
}
Default Entry { OnStateChanged(SS_SUBSCRIBE_UNKNOWN); }
{
sm_401_407_421_494_response() Authentifying {}
sm_3xx_response() nil {}
sm_4xx_response() nil {}
sm_5xx_response() nil {}
sm_6xx_response() nil {}
sm_xxx_response() nil {}
Default nil {}
}
%%

View File

@ -1,190 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "api_engine.h"
#include "api_stack.h"
/* TODO: add mutex */
#include <algorithm>
#include <functional>
#include <list>
#include <assert.h>
#define PSTACK stack*
PREF_NAMESPACE_START
/**
global variable holding engine initialization state
*/
static bool __initialized = false;
/**
global variable holding all stacks
*/
static std::list<PSTACK> __stacks;
/**
STL predicate to find stack by id
*/
struct pred_stack_find_by_id: public std::binary_function< PSTACK, int, bool > {
bool operator () ( const PSTACK s, const int &id ) const {
return s->get_id() == id;
}
};
/* initialize engine (system utilities) */
ERR engine_initialize()
{
if(__initialized) return ERR_ENGINE_ALREADY_INITIALIZED;
if( !su_init() )
{
__initialized = true;
return ERR_SUCCESS;
}
return ERR_GLOBAL_FAILURE;
}
/* deinitialize engine (system utilities) */
ERR engine_deinitialize()
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
std::list<PSTACK>::iterator iter = __stacks.begin();
for ( ; iter!=__stacks.end(); iter++ )
{
(*iter)->shutdown();
//delete(*iter);
}
__stacks.clear();
su_deinit();
__initialized = false;
return ERR_SUCCESS;
}
/* creates a stack with the specified id */
ERR engine_stack_create(int stack_id)
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
if(engine_stack_find(stack_id))
{
return ERR_STACK_ALREADY_EXIST;
}
stack* stk = new stack(stack_id);
if(stk->get_initialized())
{
__stacks.push_back(stk);
}
else
{
delete stk;
return ERR_STACK_NOT_INITIALIZED;
}
return ERR_SUCCESS;
}
/* runs the stack with the specified id */
ERR engine_stack_run(int stack_id)
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
stack* stk = (stack*)engine_stack_find(stack_id);
if(stk)
{
return stk->run();
}
else
{
return ERR_STACK_NOT_FOUND;
}
}
/* shutdown downs the stack with the specified id */
ERR engine_stack_shutdown(int stack_id)
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
stack* stk = (stack*)engine_stack_find(stack_id);
if(stk)
{
return stk->shutdown();
}
else
{
return ERR_STACK_NOT_FOUND;
}
}
/* shutdown downs all stacks */
ERR engine_stack_shutdown_all(void)
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
return ERR_NOT_IMPLEMENTED;
}
/* find stack by id*/
void* engine_stack_find(int stack_id)
{
if(!__initialized) return NULL;
std::list<PSTACK>::iterator iter = __stacks.begin();
iter = std::find_if( iter, __stacks.end(), std::bind2nd( pred_stack_find_by_id(), stack_id ) );
if(iter != __stacks.end())
{
return *iter;
}
return NULL;
}
/* put a stck */
ERR engine_push_stack(void* stack_ptr)
{
if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED;
if(!stack_ptr) return ERR_STACK_IS_INVALID;
stack* stk = (stack*)stack_ptr; // FIXME
if(!stk) return ERR_STACK_IS_INVALID;
if(engine_stack_find(stk->get_id())){
return ERR_STACK_ALREADY_EXIST;
}else{
__stacks.push_back(stk);
return ERR_SUCCESS;
}
}
#undef PSTACK
PREF_NAMESPACE_END

View File

@ -1,49 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef _DOUBANGO_API_ENGINE_H_
#define _DOUBANGO_API_ENGINE_H_
#include "pref.h"
#include "api_errors.h"
PREF_NAMESPACE_START
DOUBANGO_API_C ERR engine_initialize(void);
DOUBANGO_API_C ERR engine_deinitialize(void);
DOUBANGO_API_C ERR engine_stack_create(int stack_id);
DOUBANGO_API_C ERR engine_stack_run(int stack_id);
DOUBANGO_API_C ERR engine_stack_shutdown(int stack_id);
DOUBANGO_API_C ERR engine_stack_shutdown_all(void);
void* engine_stack_find(int stack_id);
ERR engine_push_stack(void* stack_ptr);
PREF_NAMESPACE_END
#endif /* _DOUBANGO_API_ENGINE_H_ */

View File

@ -1,71 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef _DOUBANGO_ERRORS_H_
#define _DOUBANGO_ERRORS_H_
#include "pref.h"
PREF_NAMESPACE_START
#define ERR_SUCCEED(code) (code == PREF_NAMESPACE_VALUE::ERR_SUCCESS)
#define ERR_FAILED(code) !ERR_SUCCEED(code)
typedef enum tag_ERR
{
ERR_SUCCESS = 0x0000,
ERR_GLOBAL_FAILURE = -0xFFFF,
ERR_NOT_IMPLEMENTED,
ERR_FUNC_OBSOLETE,
/* PARAMS */
ERR_PARAMS_INVALID_PCSCF,
ERR_PARAMS_INVALID_REALM,
ERR_PARAMS_INVALID_PUBLIC_ID,
ERR_PARAMS_INVALID_PRIVATE_ID,
/* ENGINE errors */
ERR_ENGINE_NOT_INITIALIZED, /* engine not initialized or initialization failed*/
ERR_ENGINE_ALREADY_INITIALIZED, /* engine have been already initialized */
/* SIP DIALOG */
ERR_SIP_DIALOG_UNKNOWN,
ERR_SIP_DIALOG_NOT_FOUND, /* dialog not found */
/* STACK errors */
ERR_STACK_NOT_FOUND, /* stack not found*/
ERR_STACK_ALREADY_EXIST, /* state already exist */
ERR_STACK_NOT_INITIALIZED, /* stack not initialized or initialization failed*/
ERR_STACK_IS_INVALID, /* stack is in an invalide state (NULL, destroyed, locked, ...) */
ERR_STACK_NOT_RUNNING, /* operation failed because the stack is not running */
}
ERR;
PREF_NAMESPACE_END
#endif /* _DOUBANGO_ERRORS_H_ */

View File

@ -1,352 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "api_sip.h"
#include "api_engine.h"
#include "api_stack.h"
//#include <sofia-sip/auth_module.h>
//#include <sofia-sip/su_tag.h> // FIXME: remove
//#include <sofia-sip/sip_tag.h> // FIXME: remove
PREF_NAMESPACE_START
#define GET_STACK(stack_id, stk) \
stack* stk = (stack*)engine_stack_find(stack_id); \
if(!stk) return ERR_STACK_NOT_FOUND; \
if(!stk->get_initialized()) return ERR_STACK_NOT_INITIALIZED; \
if(!stk->get_running()) return ERR_STACK_NOT_RUNNING;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip REGISTER
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* send sip register message */
ERR sip_register(int stack_id)
{
GET_STACK(stack_id, stk);
return stk->sip_register();
}
/* send sip unregister (register with expires=0) message*/
ERR sip_unregister(int stack_id)
{
GET_STACK(stack_id, stk);
return stk->sip_unregister();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip MESSAGE
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* send sip MESSAGE request */
ERR sip_message(int stack_id, const char* dest_address, const char* content_type, const char* content)
{
GET_STACK(stack_id, stk);
return stk->sip_message(dest_address, content_type, content);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip PUBLISH
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* send sip PUBLISH request */
ERR sip_publish(int stack_id)
{
GET_STACK(stack_id, stk);
return stk->sip_publish();
}
/* send sip UNPUBLISH request*/
ERR sip_unpublish(int stack_id)
{
GET_STACK(stack_id, stk);
return stk->sip_unpublish();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip SUBSCRIBE
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* send sip SUBSCRIBE */
DOUBANGO_API_C ERR sip_subscribe(int stack_id, const char* dest_address, const char* eventpackg, const char* allow, int eventlist, unsigned int* dialog_id)
{
GET_STACK(stack_id, stk);
return stk->sip_subscribe(dest_address, eventpackg, allow, eventlist, dialog_id);
}
/* send sip UNSUBSCRIBE */
DOUBANGO_API_C ERR sip_unsubscribe(int stack_id, unsigned int dialog_id)
{
GET_STACK(stack_id, stk);
return stk->sip_unsubscribe(dialog_id);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// authentication
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR auth_set(int stack_id, const char* public_id, const char* private_id, const char* password, const char* realm)
{
ERR error = ERR_SUCCESS;
if( !ERR_SUCCEED( (error = auth_set_public_id(stack_id, public_id)) ) ) return error;
if( !ERR_SUCCEED( (error = auth_set_private_id(stack_id, private_id)) ) ) return error;
if( !ERR_SUCCEED( (error = auth_set_password(stack_id, password)) ) ) return error;
if( !ERR_SUCCEED( (error = auth_set_realm(stack_id, realm)) ) ) return error;
return error;
}
ERR auth_set_displayname(int stack_id, const char* displayname)
{
GET_STACK(stack_id, stk);
stk->set_displayname( displayname );
/*nua_set_params(stk->get_nua(),
NUTAG_M_DISPLAY(displayname),
TAG_NULL());*/
return ERR_SUCCESS;
}
ERR auth_set_public_id(int stack_id, const char* public_id)
{
GET_STACK(stack_id, stk);
stk->set_public_id( public_id );
return ERR_SUCCESS;
}
ERR auth_set_private_id(int stack_id, const char* private_id)
{
GET_STACK(stack_id, stk);
stk->set_private_id( private_id );
return ERR_SUCCESS;
}
ERR auth_set_preferred_id(int stack_id, const char* preferred_id)
{
return ERR_NOT_IMPLEMENTED;
}
ERR auth_set_password(int stack_id, const char* password)
{
GET_STACK(stack_id, stk);
stk->set_password( password );
return ERR_SUCCESS;
}
ERR auth_set_realm(int stack_id, const char* realm)
{
GET_STACK(stack_id, stk);
stk->set_realm( realm );
/*nua_set_params(stk->get_nua(),
AUTHTAG_REALM(realm),
TAG_NULL());*/
return ERR_SUCCESS;
}
ERR auth_set_operator_id(int stack_id, const char* operator_id)
{
return ERR_NOT_IMPLEMENTED;
}
ERR auth_set_amf(int stack_id, const char* amf)
{
return ERR_NOT_IMPLEMENTED;
}
ERR auth_set_privacy(int stack_id, const char* privacy)
{
GET_STACK(stack_id, stk);
stk->set_privacy( privacy );
return ERR_SUCCESS;
}
ERR auth_set_security_mechanism(int stack_id, const char* security_mechanism)
{
return ERR_NOT_IMPLEMENTED;
}
ERR auth_set_early_ims(int stack_id, bool early_ims)
{
GET_STACK(stack_id, stk);
stk->set_early_ims( early_ims );
return ERR_SUCCESS;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// network
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR network_set(int stack_id, const char* pcscf, int pcscf_port, const char* transport)
{
return ERR_NOT_IMPLEMENTED;
}
ERR network_set_pcscf(int stack_id, const char* pcscf, int pcscf_port)
{
GET_STACK(stack_id, stk);
stk->set_pcscf(pcscf);
stk->set_pcscf_port(pcscf_port);
/*char* pcscf_ip_port = su_sprintf(NULL, "sip:%s:%d", pcscf, pcscf_port);
nua_set_params(stk->get_nua(),
NUTAG_PROXY(pcscf_ip_port),
NUTAG_OUTBOUND("no-validate"),
TAG_NULL());
su_free(NULL, pcscf_ip_port);*/
return ERR_SUCCESS;
}
ERR network_set_transport(int stack_id, const char* transport)
{
return ERR_NOT_IMPLEMENTED;
}
/* SIP Header: P-Access-Network-Info
RFC 3455
*/
ERR network_set_net_info(int stack_id, const char* net_info)
{
return ERR_NOT_IMPLEMENTED;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// qos
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR qos_set_audio_bandwith(int stack_id, int audio_bandwith)
{
return ERR_NOT_IMPLEMENTED;
}
ERR qos_set_audio_dscp(int stack_id, int audio_dscp)
{
return ERR_NOT_IMPLEMENTED;
}
ERR qos_set_video_bandwith(int stack_id, int video_bandwith)
{
return ERR_NOT_IMPLEMENTED;
}
ERR qos_set_video_dscp(int stack_id, int video_dscp)
{
return ERR_NOT_IMPLEMENTED;
}
ERR qos_set_msrp_bandwith(int stack_id, int msrp_bandwith)
{
return ERR_NOT_IMPLEMENTED;
}
ERR qos_set_msrp_dscp(int stack_id, int msrp_dscp)
{
return ERR_NOT_IMPLEMENTED;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ipsec
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR ipsec_set(int stack_id, const char* mode, const char* protocol, const char* auth_algo, const char* enc_algo)
{
return ERR_NOT_IMPLEMENTED;
}
ERR ipsec_set_mode(int stack_id, const char* mode)
{
return ERR_NOT_IMPLEMENTED;
}
ERR ipsec_set_protocol(int stack_id, const char* protocol)
{
return ERR_NOT_IMPLEMENTED;
}
ERR ipsec_set_auth_algo(int stack_id, const char* auth_algo)
{
return ERR_NOT_IMPLEMENTED;
}
ERR ipsec_set_enc_algo(int stack_id, const char* enc_algo)
{
return ERR_NOT_IMPLEMENTED;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// tls
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR tls_set_priv_key_path(int stack_id, const char* priv_key_path)
{
return ERR_NOT_IMPLEMENTED;
}
ERR tls_set_pub_key_path(int stack_id, const char* pub_key_path)
{
return ERR_NOT_IMPLEMENTED;
}
ERR tls_set_cert_path(int stack_id, const char* cert_path)
{
return ERR_NOT_IMPLEMENTED;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sigcomp
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ERR sigcomp_set_comp_id(int stack_id, const char* comp_id)
{
return ERR_NOT_IMPLEMENTED;
}
ERR sigcomp_enable_sipdict(int stack_id, bool enable)
{
return ERR_NOT_IMPLEMENTED;
}
ERR sigcomp_enable_presdict(int stack_id, bool enable)
{
return ERR_NOT_IMPLEMENTED;
}
ERR sigcomp_set_dms(int stack_id, int dms)
{
return ERR_NOT_IMPLEMENTED;
}
ERR sigcomp_set_sms(int stack_id, int sms)
{
return ERR_NOT_IMPLEMENTED;
}
ERR sigcomp_set_cpb(int stack_id, int cpb)
{
return ERR_NOT_IMPLEMENTED;
}
PREF_NAMESPACE_END

View File

@ -1,122 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef _DOUBANGO_API_SIP_REGISTRATION_H_
#define _DOUBANGO_API_SIP_REGISTRATION_H_
#include "pref.h"
#include "api_errors.h"
PREF_NAMESPACE_START
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip REGISTER
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR sip_register(int stack_id);
DOUBANGO_API_C ERR sip_unregister(int stack_id);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip MESSAGE
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR sip_message(int stack_id, const char* dest_address, const char* content_type, const char* content);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip PUBLISH
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR sip_publish(int stack_id);
DOUBANGO_API_C ERR sip_unpublish(int stack_id);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sip SUBSCRIBE
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR sip_subscribe(int stack_id, const char* dest_address, const char* eventpackg, const char* allow, int eventlist, unsigned int* dialog_id);
DOUBANGO_API_C ERR sip_unsubscribe(int stack_id, unsigned int dialog_id);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// authentication
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR auth_set(int stack_id, const char* public_id, const char* private_id, const char* password, const char* realm);
DOUBANGO_API_C ERR auth_set_displayname(int stack_id, const char* displayname);
DOUBANGO_API_C ERR auth_set_public_id(int stack_id, const char* public_id);
DOUBANGO_API_C ERR auth_set_private_id(int stack_id, const char* private_id);
DOUBANGO_API_C ERR auth_set_preferred_id(int stack_id, const char* preferred_id);
DOUBANGO_API_C ERR auth_set_password(int stack_id, const char* password);
DOUBANGO_API_C ERR auth_set_realm(int stack_id, const char* realm);
DOUBANGO_API_C ERR auth_set_operator_id(int stack_id, const char* operator_id);
DOUBANGO_API_C ERR auth_set_amf(int stack_id, const char* amf);
DOUBANGO_API_C ERR auth_set_privacy(int stack_id, const char* privacy);
DOUBANGO_API_C ERR auth_set_security_mechanism(int stack_id, const char* security_mechanism);
DOUBANGO_API_C ERR auth_set_early_ims(int stack_id, bool early_ims);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// network
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR network_set(int stack_id, const char* pcscf, int pcscf_port, const char* transport);
DOUBANGO_API_C ERR network_set_pcscf(int stack_id, const char* pcscf, int pcscf_port);
DOUBANGO_API_C ERR network_set_transport(int stack_id, const char* transport);
DOUBANGO_API_C ERR network_set_net_info(int stack_id, const char* net_info);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// qos
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR qos_set_audio_bandwith(int stack_id, int audio_bandwith);
DOUBANGO_API_C ERR qos_set_audio_dscp(int stack_id, int audio_dscp);
DOUBANGO_API_C ERR qos_set_video_bandwith(int stack_id, int video_bandwith);
DOUBANGO_API_C ERR qos_set_video_dscp(int stack_id, int video_dscp);
DOUBANGO_API_C ERR qos_set_msrp_bandwith(int stack_id, int msrp_bandwith);
DOUBANGO_API_C ERR qos_set_msrp_dscp(int stack_id, int msrp_dscp);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ipsec
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR ipsec_set(int stack_id, const char* mode, const char* protocol, const char* auth_algo, const char* enc_algo);
DOUBANGO_API_C ERR ipsec_set_mode(int stack_id, const char* mode);
DOUBANGO_API_C ERR ipsec_set_protocol(int stack_id, const char* protocol);
DOUBANGO_API_C ERR ipsec_set_auth_algo(int stack_id, const char* auth_algo);
DOUBANGO_API_C ERR ipsec_set_enc_algo(int stack_id, const char* enc_algo);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// tls
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR tls_set_priv_key_path(int stack_id, const char* priv_key_path);
DOUBANGO_API_C ERR tls_set_pub_key_path(int stack_id, const char* pub_key_path);
DOUBANGO_API_C ERR tls_set_cert_path(int stack_id, const char* cert_path);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sigcomp
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DOUBANGO_API_C ERR sigcomp_set_comp_id(int stack_id, const char* comp_id);
DOUBANGO_API_C ERR sigcomp_enable_sipdict(int stack_id, bool enable);
DOUBANGO_API_C ERR sigcomp_enable_presdict(int stack_id, bool enable);
DOUBANGO_API_C ERR sigcomp_set_dms(int stack_id, int dms);
DOUBANGO_API_C ERR sigcomp_set_sms(int stack_id, int sms);
DOUBANGO_API_C ERR sigcomp_set_cpb(int stack_id, int cpb);
PREF_NAMESPACE_END
#endif /* _DOUBANGO_API_SIP_REGISTRATION_H_ */

View File

@ -1,88 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef _DOUBANGO_SIP_STATES_H_
#define _DOUBANGO_SIP_STATES_H_
#include "pref.h"
PREF_NAMESPACE_START
/**
SIP registration states
*/
typedef enum sip_state_registration_e
{
srs_none,
srs_trying,
srs_authentifying,
srs_unregistered,
srs_registered
}
sip_state_registration_t;
typedef enum tag_SIP_STATE
{
SS_UNKNOWN_UNKNOWN,
/* REGISTER */
SS_REGISTER_UNKNOWN,
SS_REGISTER_INITIALIZED,
SS_REGISTER_TRYING,
SS_REGISTER_AUTHENTIFYING,
SS_REGISTER_ESTABLISHED,
SS_REGISTER_TERMINATED,
/* PUBLISH */
SS_PUBLISH_UNKNOWN,
SS_PUBLISH_INITIALIZED,
SS_PUBLISH_TRYING,
SS_PUBLISH_AUTHENTIFYING,
SS_PUBLISH_ESTABLISHED,
SS_PUBLISH_TERMINATED,
/* SUBSCRIBE */
SS_SUBSCRIBE_UNKNOWN,
SS_SUBSCRIBE_INITIALIZED,
SS_SUBSCRIBE_TRYING,
SS_SUBSCRIBE_AUTHENTIFYING,
SS_SUBSCRIBE_ESTABLISHED,
SS_SUBSCRIBE_NOTIFIED,
SS_SUBSCRIBE_TERMINATED,
/* MESSAGE */
SS_MESSAGE_UNKNOWN,
SS_MESSAGE_INITIALIZED,
SS_MESSAGE_TRYING,
SS_MESSAGE_AUTHENTIFYING,
SS_MESSAGE_TERMINATED,
}
SIP_STATE;
PREF_NAMESPACE_END
#endif /* _DOUBANGO_SIP_STATES_H_ */

View File

@ -1,256 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include <assert.h>
#include "api_stack.h"
#include "api_engine.h"
#include <sofia-sip/auth_module.h>
#include <sofia-sip/su.h>
#define DEFAULT_USER_AGENT "IM-client/OMA1.0"
PREF_NAMESPACE_START
/* global callback shared between all stacks*/
static void shared_callback(nua_event_t $event, int status, char const *phrase,
nua_t *nua, nua_magic_t *magic, nua_handle_t *nh,
nua_hmagic_t *hmagic, sip_t const *sip, tagi_t tags[])
{
GET_DIALOG_BY_HANDLE(((stack*)magic), dlg, nh);
if(dlg)
{
dlg->dialog_callback($event, status, phrase, nua, magic,
nh, hmagic, sip, tags);
}
else
{
}
//((stack*)magic)->callback_handle(event, status, phrase, nua, magic,
// nh, hmagic, sip, tags);
}
/**
Stack constructor
@param stack_id stack identifier
@param stack_callback stack callback function
*/
stack::stack(int stack_id)
{
/* check that no stack has the same id */
assert(!engine_stack_find(stack_id));
// initialize
this->id = stack_id;
this->initialized = false;
this->thread = NULL;
this->nua = NULL;
this->root = NULL;
this->running = false;
/* authentication */
displayname = NULL, public_id = NULL, private_id = NULL, realm = NULL,
password = NULL, privacy = NULL, early_ims = false;
/* Network */
pcscf = NULL, pcscf_port = 5060;
/* Features */
smsip = true, sigcomp = false, oma_large_msg = true, oma_sip_im = true, gsma_is = true, gsma_vs = true;
/* Params */
expires = IMS_DEFAULT_EXIPRES;
// initialize memory handling
if( su_home_init(this->home) ) return;
/* add stack to the engine list */
if(!ERR_SUCCEED(engine_push_stack(this))) return;
this->initialized = true;
}
/**
stack destructor
*/
stack::~stack()
{
if(this->thread) CloseHandle(this->thread);
}
/**
Runs main loop for processing of messages
@return returns ERR_SUCCESS if succeed and stack error code otherwise
*/
inline ERR stack::run()
{
ERR error = ERR_SUCCESS;
if(this->initialized && !this->running && !this->thread)
{
#ifdef WIN32 // FIXME: use pthread_cond + pthread_create
DWORD threadId;
this->thread = CreateThread(NULL, 0, ThreadRunner, this, 0, &threadId);
for(int i=0; i<5; i++)
{
if(this->running) break;
Sleep(1000);
}
#else
# error "must be implemented"
#endif
}
if(this->initialized && this->running)
{
/*
According to 3GPP TS 24.229 subcluse 5.1.1.1B when using an UE without ISIM or USIM we shall
assume that public identity, private identity and realm are provisioned.
I added the P-CSCF because without this information it's impossible to register
*/
error =
!this->public_id ? ERR_PARAMS_INVALID_PUBLIC_ID :
(!this->private_id ? ERR_PARAMS_INVALID_PRIVATE_ID :
((!this->pcscf || !this->pcscf_port) ? ERR_PARAMS_INVALID_PCSCF:
(!this->realm ? ERR_PARAMS_INVALID_REALM : error)));
if(!ERR_SUCCEED(error)) goto bail;
/* Proxy-CSCF */
char* pcscf_ip_port = su_sprintf(NULL, "sip:%s:%d", this->pcscf, this->pcscf_port);
nua_set_params(nua, NUTAG_PROXY(pcscf_ip_port), NUTAG_OUTBOUND("no-validate"), TAG_NULL());
su_free(NULL, pcscf_ip_port);
/* Public id */
nua_set_params(nua, NUTAG_IMPU(this->public_id), TAG_NULL());
/* Private id */
nua_set_params(nua, NUTAG_IMPI(this->private_id), TAG_NULL());
/* Realm: a home network domain name to address the SIP REGISTER request to */
nua_set_params(nua, NUTAG_REALM(this->realm), TAG_NULL());
}
bail:
if(!ERR_SUCCEED(error) && this->running)
{
this->shutdown();
}
return error;
}
/**
shutdown the stack
@return
*/
inline ERR stack::shutdown()
{
if(this->running)
{
if(this->root)
{
su_root_break(this->root);
return ERR_SUCCESS;
}
else
{
return ERR_GLOBAL_FAILURE;
}
}
else
{
return ERR_STACK_NOT_RUNNING;
}
}
/**
event loop processing
*/
void stack::loop()
{
// initialize root object
this->root = su_root_create(this);
if(!this->root)
{
su_home_deinit(this->home);
return;
}
// create NUA stack
this->nua = nua_create(this->root, shared_callback, this,
NUTAG_USER_AGENT(DEFAULT_USER_AGENT),
NUTAG_PROXY("sip:127.0.0.1:5060"),
NUTAG_SIGCOMP_ENABLED(this->sigcomp),
TAG_NULL());
if (!this->nua)
{
su_root_destroy(this->root);
su_home_deinit(this->home);
return;
}
// FIXME
this->running = true;
// enter main loop for processing of messages
su_root_run(this->root);
// Release resources
if(this->nua) {
nua_shutdown(this->nua);
//nua_destroy(this->nua);
this->nua = NULL;
}
if(this->root) {
su_root_destroy(this->root);
this->root = NULL;
}
if(this->home) {
su_home_deinit(this->home);
}
this->running = false;
}
#ifdef WIN32
/**
static threads runner
*/
DWORD WINAPI stack::ThreadRunner( void* magic ) {
((stack*)magic)->loop();
return 0;
}
#endif
PREF_NAMESPACE_END

View File

@ -1,218 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_STACK_H__
#define __DOUBANGO_STACK_H__
#include "pref.h"
#include "api_errors.h"
#include "sip_dialog.h"
#include "fastdelegate2.h"
#include <sofia-sip/nua.h>
#include <list>
#include <algorithm>
PREF_NAMESPACE_START
/* generate setter and getter methods*/
#define DEFINE_GET_SET_STR(member)\
inline char* &get_##member(){ return this->##member; } \
inline void set_##member(const char* val){ \
if(this->##member) su_free(this->home, this->##member); \
this->##member = su_strdup(this->home, val); \
}
#define DEFINE_GET_SET_VAL(type, member)\
inline type &get_##member(){ return this->##member; } \
inline void set_##member(type val){ this->##member = val; }
/* predicate: find dialog by id */
struct pred_dialog_find_by_id: public std::binary_function< sip_dialog*, unsigned int, bool > {
bool operator () ( const sip_dialog* dlg, unsigned int dialog_id ) const {
return dlg->get_dialog_id() == dialog_id;
}
};
/* predicate: find dialog by handle */
struct pred_dialog_find_by_handle: public std::binary_function< sip_dialog*, nua_handle_t*, bool > {
bool operator () ( const sip_dialog* dlg, const nua_handle_t* handle ) const {
return dlg->get_handle() == handle;
}
};
/* predicate: find dialog by sipmethod */
struct pred_dialog_find_by_sipmethod: public std::binary_function< const sip_dialog*, const char*, bool > {
bool operator () ( const sip_dialog* dlg, const char* sipmethod ) const {
return !stricmp(dlg->get_sipmethod(), sipmethod);
}
};
/* predicate: find all dialogs in terminated state */
//==> IN C++ bool isDlgTerminated(const sip_dialog* dlg){ return dlg->get_terminated(); }
#define GET_DIALOG_TERMINATED(dlg)\
sip_dialog* dlg = NULL; \
std::list<sip_dialog*>::iterator iter = std::find_if( this->dialogs.begin(), this->dialogs.end(), isDlgTerminated ); \
if(iter != this->dialogs.end()) dlg = *iter;
/* get dialog by xxx */
#define GET_DIALOG_BY_XXX(stk, dlg, predicate, xxx) \
sip_dialog* dlg = NULL; \
std::list<sip_dialog*>::iterator iter = std::find_if( stk->get_dialogs().begin(), stk->get_dialogs().end(), std::bind2nd( predicate(), xxx ) ); \
if(iter != stk->get_dialogs().end()) dlg = *iter;
/* get dialog by sipmethod*/
#define GET_DIALOG_BY_SIPMETHOD(stk, dlg, sipmethod) GET_DIALOG_BY_XXX(stk, dlg, pred_dialog_find_by_sipmethod, sipmethod)
/* get dialog by handle */
#define GET_DIALOG_BY_HANDLE(stk, dlg, handle) GET_DIALOG_BY_XXX(stk, dlg, pred_dialog_find_by_handle, handle)
/* get dialog by id */
#define GET_DIALOG_BY_ID(stk, dlg, dialog_id) GET_DIALOG_BY_XXX(stk, dlg, pred_dialog_find_by_id, dialog_id)
class DOUBANGO_API stack
{
public:
stack(int id);
~stack();
static ERR initialize();
static ERR deinitialize();
inline ERR run();
inline ERR shutdown();
inline int get_id() const { return this->id; }
inline bool get_running() const { return this->running; }
inline bool get_initialized() const { return this->initialized; }
inline su_home_t* get_home() { return this->home; }
inline nua_t* get_nua() { return this->nua; }
inline std::list<sip_dialog*>& get_dialogs() { return this->dialogs; }
//
// SIP
//
ERR sip_register();
ERR sip_unregister();
ERR sip_message(const char* dest_address, const char* content_type, const char* content);
ERR sip_publish();
ERR sip_unpublish();
ERR sip_subscribe(const char* dest_address, const char* eventpackg, const char* allow, int eventlist, unsigned int* dialog_id);
ERR sip_unsubscribe(unsigned int dialog_id);
//
// Authentication
//
DEFINE_GET_SET_STR(displayname);
DEFINE_GET_SET_STR(public_id);
DEFINE_GET_SET_STR(private_id);
DEFINE_GET_SET_STR(realm);
DEFINE_GET_SET_STR(password);
DEFINE_GET_SET_STR(privacy);
DEFINE_GET_SET_VAL(bool, early_ims);
//
// Network
//
DEFINE_GET_SET_STR(pcscf);
DEFINE_GET_SET_VAL(int, pcscf_port);
//
// Features
//
DEFINE_GET_SET_VAL(bool, smsip);
DEFINE_GET_SET_VAL(bool, oma_large_msg);
DEFINE_GET_SET_VAL(bool, oma_sip_im);
DEFINE_GET_SET_VAL(bool, gsma_is);
DEFINE_GET_SET_VAL(bool, gsma_vs);
DEFINE_GET_SET_VAL(bool, sigcomp);
//
// Parameters
//
DEFINE_GET_SET_VAL(int, expires);
//
// Delegates
//
fastdelegate2::delegate<void (int stack_id, sip_state_registration_t state, int sipcode, const char* sipdesc)>registrationStateChanged;
private:
#ifdef WIN32
static DWORD WINAPI ThreadRunner( void* magic );
#endif
void loop();
private:
int id;
bool initialized;
bool running;
void* thread;
std::list<sip_dialog*>dialogs;
su_home_t home[1]; /* memory home */
su_root_t *root; /* root object */
nua_t *nua; /* NUA stack object */
//
// Authentication
//
char* displayname;
char* public_id;
char* private_id;
char* realm;
char* password;
char* privacy;
bool early_ims;
//
// Network
//
char* pcscf;
int pcscf_port;
//
// Features
//
bool smsip;
bool oma_large_msg;
bool oma_sip_im;
bool gsma_is;
bool gsma_vs;
bool sigcomp;
//
// Parameters
//
int expires;
};
#undef DEFINE_GET_SET_VAL
PREF_NAMESPACE_END
#endif /* __DOUBANGO_STACK_H__ */

View File

@ -1,112 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "api_stack.h"
#include "sip_dialog_register.h"
#include "sip_dialog_message.h"
#include "sip_dialog_publish.h"
#include "sip_dialog_subscribe.h"
PREF_NAMESPACE_START
/* SIP REGISTER*/
ERR stack::sip_register()
{
GET_DIALOG_BY_SIPMETHOD(this, dlg, "REGISTER");
if(dlg){
return dlg->Start();
}
else{
sip_dialog_register* dlg_register = new sip_dialog_register(this);
this->dialogs.push_back(dlg_register);
return dlg_register->Start();
}
}
/* SIP UNREGISTER */
ERR stack::sip_unregister()
{
GET_DIALOG_BY_SIPMETHOD(this, dlg, "REGISTER");
if(dlg){
return dlg->Stop();
}
else return ERR_SIP_DIALOG_NOT_FOUND;
}
/* SIP MESSAGE */
ERR stack::sip_message(const char* dest_address, const char* content_type, const char* content)
{
sip_dialog_message* dlg_message = new sip_dialog_message(this, dest_address, content_type, content);
this->dialogs.push_back(dlg_message);
return dlg_message->Start();
}
/* SIP PUBLISH */
ERR stack::sip_publish()
{
GET_DIALOG_BY_SIPMETHOD(this, dlg, "PUBLISH");
if(dlg){
return dlg->Start();
}
else{
sip_dialog_publish* dlg_publish = new sip_dialog_publish(this);
this->dialogs.push_back(dlg_publish);
return dlg_publish->Start();
}
}
/* SIP UNPUBLISH*/
ERR stack::sip_unpublish()
{
GET_DIALOG_BY_SIPMETHOD(this, dlg, "PUBLISH");
if(dlg){
return dlg->Stop();
}
else return ERR_SIP_DIALOG_NOT_FOUND;
}
/* SIP SUBSCRIBE */
ERR stack::sip_subscribe(const char* dest_address, const char* eventpackg, const char* allow, int eventlist, unsigned int* dialog_id)
{
sip_dialog_subscribe* dlg_subscribe = new sip_dialog_subscribe(this, dest_address, eventpackg, allow, eventlist?true:false);
*dialog_id = dlg_subscribe->get_dialog_id();
this->dialogs.push_back(dlg_subscribe);
return dlg_subscribe->Start();
}
/* SIP UNSUBSCRIBE*/
ERR stack::sip_unsubscribe(unsigned int dialog_id)
{
GET_DIALOG_BY_ID(this, dlg, dialog_id);
if(dlg){
return dlg->Stop();
}
else return ERR_SIP_DIALOG_NOT_FOUND;
}
PREF_NAMESPACE_END

View File

@ -1,27 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/

View File

@ -1,37 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DOUBANGO_H__
#define __DOUBANGO_DOUBANGO_H__
extern "C"
{
#include "api_engine.h"
#include "api_sip.h"
}
#endif /* __DOUBANGO_DOUBANGO_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -1,684 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
/*
This code comes from http://www.rsdn.ru/forum/src/1712949.1.aspx
* I have made some changes for MinGW (GCC 4.4.0)
*/
#ifndef MULTICATDELEGATE_H
#define MULTICATDELEGATE_H
#include "FastDelegate.h"
#include <vector>
#include <algorithm>
#define DEFAULT_CRITICAL_SECTION fastdelegate2::dummy_section
using namespace fastdelegate;
namespace fastdelegate2
{
namespace detail
{
typedef fastdelegate::detail::DefaultVoid DefaultVoid;
}
class dummy_section
{
public:
void lock() const {}
void unlock() const {}
};
template<typename T>
class auto_cs_t
{
public:
auto_cs_t(const T& refcs) : m_refcs(refcs) { m_refcs.lock(); }
~auto_cs_t() { m_refcs.unlock(); }
private:
const T& m_refcs;
};
template<class RetType>
class default_slot
{
public:
template <typename F>
void operator() (const F& func)
{
vec_results.push_back(func());
}
const std::vector<RetType>& get_results() const
{
return vec_results;
}
private:
std::vector<RetType> vec_results;
};
template <>
class default_slot<detail::DefaultVoid>
{
public:
template <typename F>
void operator() (const F& func)
{
func();
}
};
namespace detail
{
template<class CritSect, class DelegateT>
class delegate_base
{
public:
typedef DelegateT holder_type;
delegate_base() {}
protected:
void connect_delegate(const holder_type& dlghld)
{
auto_cs_t<CritSect> lock(cs);
if (std::find(vec_subscribers.begin(), vec_subscribers.end(), dlghld) == vec_subscribers.end())
vec_subscribers.push_back(dlghld);
}
bool disconnect_delegate(const holder_type& dlghld)
{
auto_cs_t<CritSect> lock(cs);
typename std::vector<holder_type>::iterator iter = std::find(vec_subscribers.begin(), vec_subscribers.end(), dlghld);
if (iter != vec_subscribers.end())
{
vec_subscribers.erase(iter);
return true;
}
return false;
}
CritSect cs;
std::vector<holder_type> vec_subscribers;
};
template<class Param1, class RetType, class DelegateT>
struct caller1
{
caller1(const DelegateT& holder, Param1 param1) : dlgh(holder), p1(param1) {}
RetType operator() () const { return dlgh(p1); }
Param1 p1;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class RetType, class DelegateT>
struct caller2
{
caller2(const DelegateT& holder, Param1 param1, Param2 param2) : dlgh(holder), p1(param1), p2(param2) {}
RetType operator() () const { return dlgh(p1, p2); }
Param1 p1; Param2 p2;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class Param3, class RetType, class DelegateT>
struct caller3
{
caller3(const DelegateT& holder, Param1 param1, Param2 param2, Param3 param3) : dlgh(holder), p1(param1), p2(param2), p3(param3) {}
RetType operator() () const { return dlgh(p1, p2, p3); }
Param1 p1; Param2 p2; Param3 p3;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class Param3, class Param4, class RetType, class DelegateT>
struct caller4
{
caller4(const DelegateT& holder, Param1 param1, Param2 param2, Param3 param3, Param4 param4) : dlgh(holder), p1(param1), p2(param2), p3(param3), p4(param4) {}
RetType operator() () const { return dlgh(p1, p2, p3, p4); }
Param1 p1; Param2 p2; Param3 p3; Param4 p4;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class Param3, class Param4, class Param5, class RetType, class DelegateT>
struct caller5
{
caller5(const DelegateT& holder, Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) : dlgh(holder), p1(param1), p2(param2), p3(param3), p4(param4), p5(param5) {}
RetType operator() () const { return dlgh(p1, p2, p3, p4, p5); }
Param1 p1; Param2 p2; Param3 p3; Param4 p4; Param5 p5;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class RetType, class DelegateT>
struct caller6
{
caller6(const DelegateT& holder, Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) : dlgh(holder), p1(param1), p2(param2), p3(param3), p4(param4), p5(param5), p6(param6) {}
RetType operator() () const { return dlgh(p1, p2, p3, p4, p5, p6); }
Param1 p1; Param2 p2; Param3 p3; Param4 p4; Param5 p5; Param6 p6;
const DelegateT& dlgh;
};
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class RetType, class DelegateT>
struct caller7
{
caller7(const DelegateT& holder, Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6, Param7 param7) : dlgh(holder), p1(param1), p2(param2), p3(param3), p4(param4), p5(param5), p6(param6), p7(param7) {}
RetType operator() () const { return dlgh(p1, p2, p3, p4, p5, p6, p7); }
Param1 p1; Param2 p2; Param3 p3; Param4 p4; Param5 p5; Param6 p6; Param7 p7;
const DelegateT& dlgh;
};
} //detail namespace
template< class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate0 :
detail::delegate_base< CritSect, FastDelegate0<RetType> >
{
public:
delegate0() {}
template < class X, class Y >
delegate0(const Y *pthis, RetType (X::* fn)() const)
{ connect_delegate(holder_type(pthis, fn)); }
template < class X, class Y >
delegate0(Y *pthis, RetType (X::* fn)())
{ connect_delegate(holder_type(pthis, fn)); }
delegate0(RetType (*fn)())
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)() const)
{ connect_delegate(holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)())
{ connect_delegate(holder_type(pthis, fn)); }
void connect(RetType (*fn)())
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)() const)
{ return disconnect_delegate(holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)())
{ return disconnect_delegate(holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)())
{ return disconnect_delegate(holder_type(fn)); }
void operator() () const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate0<RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)();
}
SlotT invoke() const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate0<RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(*iter);
return slot;
}
};
template< class Param1,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate1 :
detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >
{
public:
delegate1() {}
template < class X, class Y >
delegate1(const Y *pthis, RetType (X::* fn)(Param1 p1) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate1(Y *pthis, RetType (X::* fn)(Param1 p1))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
delegate1(RetType (*fn)(Param1 p1))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type(fn)); }
void operator() (Param1 p1) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1);
}
SlotT invoke(Param1 p1) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller1<Param1, RetType, typename detail::delegate_base< CritSect, FastDelegate1<Param1, RetType> >::holder_type>((*iter), p1));
return slot;
}
};
template< class Param1, class Param2,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate2 :
detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >
{
public:
delegate2() {}
template < class X, class Y >
delegate2(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate2(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
delegate2(RetType (*fn)(Param1 p1, Param2 p2))
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2);
}
SlotT invoke(Param1 p1, Param2 p2) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller2<Param1, Param2, RetType, typename detail::delegate_base< CritSect, FastDelegate2<Param1, Param2, RetType> >::holder_type>((*iter), p1, p2));
return slot;
}
};
template< class Param1, class Param2, class Param3,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate3 :
detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >
{
public:
delegate3() {}
template < class X, class Y >
delegate3(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate3(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
delegate3(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2, Param3 p3) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2, p3);
}
SlotT invoke(Param1 p1, Param2 p2, Param3 p3) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller3<Param1, Param2, Param3, RetType, typename detail::delegate_base< CritSect, FastDelegate3<Param1, Param2, Param3, RetType> >::holder_type>((*iter), p1, p2, p3));
return slot;
}
};
template< class Param1, class Param2, class Param3, class Param4,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate4 :
detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >
{
public:
delegate4() {}
template < class X, class Y >
delegate4(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate4(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
delegate4(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2, p3, p4);
}
SlotT invoke(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller4<Param1, Param2, Param3, Param4, RetType, typename detail::delegate_base< CritSect, FastDelegate4<Param1, Param2, Param3, Param4, RetType> >::holder_type>((*iter), p1, p2, p3, p4));
return slot;
}
};
template< class Param1, class Param2, class Param3, class Param4, class Param5,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate5 :
detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >
{
public:
delegate5() {}
template < class X, class Y >
delegate5(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate5(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
delegate5(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2, p3, p4, p5);
}
SlotT invoke(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller5<Param1, Param2, Param3, Param4, Param5, RetType, typename detail::delegate_base< CritSect, FastDelegate5<Param1, Param2, Param3, Param4, Param5, RetType> >::holder_type>((*iter), p1, p2, p3, p4, p5));
return slot;
}
};
template< class Param1, class Param2, class Param3, class Param4, class Param5, class Param6,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate6 :
detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >
{
public:
delegate6() {}
template < class X, class Y >
delegate6(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate6(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
delegate6(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2, p3, p4, p5, p6);
}
SlotT invoke(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller6<Param1, Param2, Param3, Param4, Param5, Param6, RetType, typename detail::delegate_base< CritSect, FastDelegate6<Param1, Param2, Param3, Param4, Param5, Param6, RetType> >::holder_type>((*iter), p1, p2, p3, p4, p5, p6));
return slot;
}
};
template< class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7,
class RetType=detail::DefaultVoid,
class CritSect = DEFAULT_CRITICAL_SECTION,
class SlotT=default_slot<RetType> >
class delegate7 :
detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >
{
public:
delegate7() {}
template < class X, class Y >
delegate7(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
delegate7(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
delegate7(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ connect_delegate(holder_type(fn)); }
template < class X, class Y >
void connect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const)
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
void connect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
void connect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ connect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(fn)); }
template < class X, class Y >
bool disconnect(const Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const)
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
template < class X, class Y >
bool disconnect(Y *pthis, RetType (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(pthis, fn)); }
bool disconnect(RetType (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7))
{ return disconnect_delegate(typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type(fn)); }
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const
{
auto_cs_t<CritSect> lock(this->cs);
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) (*iter)(p1, p2, p3, p4, p5, p6, p7);
}
SlotT invoke(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const
{
auto_cs_t<CritSect> lock(this->cs);
SlotT slot;
typename std::vector<typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type>::const_iterator iter = this->vec_subscribers.begin();
for (;iter != this->vec_subscribers.end();++iter) slot(detail::caller7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType, typename detail::delegate_base< CritSect, FastDelegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, RetType> >::holder_type>((*iter), p1, p2, p3, p4, p5, p6, p7));
return slot;
}
};
template <typename Function> class delegate;
template <typename R>
class delegate< R () >
: public delegate0<R>
{
public:
typedef delegate0<R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)() const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)()) : base_type(pthis, fn) {}
delegate(R (*fn)()) : base_type(fn) {}
};
template <typename R, class Param1>
class delegate< R (Param1) >
: public delegate1<Param1, R>
{
public:
typedef delegate1<Param1, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2>
class delegate< R (Param1, Param2) >
: public delegate2<Param1, Param2, R>
{
public:
typedef delegate2<Param1, Param2, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2, class Param3>
class delegate< R (Param1, Param2, Param3) >
: public delegate3<Param1, Param2, Param3, R>
{
public:
typedef delegate3<Param1, Param2, Param3, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2, Param3 p3)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2, class Param3, class Param4>
class delegate< R (Param1, Param2, Param3, Param4) >
: public delegate4<Param1, Param2, Param3, Param4, R>
{
public:
typedef delegate4<Param1, Param2, Param3, Param4, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2, class Param3, class Param4, class Param5>
class delegate< R (Param1, Param2, Param3, Param4, Param5) >
: public delegate5<Param1, Param2, Param3, Param4, Param5, R>
{
public:
typedef delegate5<Param1, Param2, Param3, Param4, Param5, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6>
class delegate< R (Param1, Param2, Param3, Param4, Param5, Param6) >
: public delegate6<Param1, Param2, Param3, Param4, Param5, Param6, R>
{
public:
typedef delegate6<Param1, Param2, Param3, Param4, Param5, Param6, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) : base_type(fn) {}
};
template <typename R, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7>
class delegate< R (Param1, Param2, Param3, Param4, Param5, Param6, Param7) >
: public delegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, R>
{
public:
typedef delegate7<Param1, Param2, Param3, Param4, Param5, Param6, Param7, R> base_type;
delegate() : base_type() {}
template < class X, class Y >
delegate(const Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) : base_type(pthis, fn) {}
template < class X, class Y >
delegate(Y *pthis, R (X::* fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) : base_type(pthis, fn) {}
delegate(R (*fn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) : base_type(fn) {}
};
}
#endif /* MULTICATDELEGATE_H */

View File

@ -1,71 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_PREF_H__
#define __DOUBANGO_PREF_H__
#define PREF_NAMESPACE_USE 1
#define PREF_NAMESPACE_VALUE dgo
/**
doubango api funtions export
*/
#if defined(WIN32) || defined(__SYMBIAN32__)
# ifdef DOUBANGO_EXPORTS
# define DOUBANGO_API __declspec(dllexport)
# else
# define DOUBANGO_API __declspec(dllimport)
# endif
#else
# define DOUBANGO_API
#endif
#ifdef __cplusplus
# define DOUBANGO_API_C extern "C" DOUBANGO_API
#else
# define DOUBANGO_API_C extern
#endif
/* disable warnings */
#ifdef WIN32
#pragma warning( disable : 4132 4100 4127 4152 4355 4996 4251)
#endif
/* namespace definition*/
#if PREF_NAMESPACE_USE && defined(__cplusplus)
# define PREF_NAMESPACE_START namespace PREF_NAMESPACE_VALUE {
# define PREF_NAMESPACE_END }
#else
# define PREF_NAMESPACE_START
# define PREF_NAMESPACE_END
#endif
/* 3GPP TS 24.229 subclause 5.1.1.2 e) */
#define IMS_DEFAULT_EXIPRES 600000
#endif /* __DOUBANGO_PREF_H__ */

View File

@ -1,75 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog.h"
#include "api_stack.h"
#include <nua_stack.h>
#include <sofia-sip/sip_hclasses.h>
#include <sofia-sip/msg_header.h>
PREF_NAMESPACE_START
unsigned int sip_dialog::dialog_counter = 0;
/* sip_dialog constructor */
sip_dialog::sip_dialog(stack* _stk)
{
this->handle = NULL;
this->stk = _stk;
this->dialog_id = (++sip_dialog::dialog_counter);
}
/* sip_dialog destructor*/
sip_dialog::~sip_dialog()
{
}
/* called when dialog state change*/
/*void sip_dialog::OnStateChanged(SIP_STATE state)
{
this->state_current = state;
SU_DEBUG_3(("%s::OnStateChanged ==> %d\n", this->get_sipmethod(), state));
}*/
/* authenticate the supplied request*/
void sip_dialog::authenticate(nua_handle_t *nh, sip_t const *sip)
{
const char* realm = sip->sip_www_authenticate?
msg_params_find(sip->sip_www_authenticate->au_params, "realm="): (sip->sip_proxy_authenticate ? msg_params_find(sip->sip_proxy_authenticate->au_params, "realm="): "UNKNOWN");
const char* scheme = sip->sip_www_authenticate?
sip->sip_www_authenticate->au_scheme: (sip->sip_proxy_authenticate ? sip->sip_proxy_authenticate->au_scheme: "UNKNOWN");
char* authstring = su_sprintf(NULL, "%s:%s:%s:%s",
scheme, realm, this->stk->get_private_id(), this->stk->get_password());
nua_authenticate(nh, NUTAG_AUTH(authstring), TAG_END());
su_free(NULL, authstring);
}
PREF_NAMESPACE_END

View File

@ -1,85 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_SM_H__
#define __DOUBANGO_DIALOG_SM_H__
#include "pref.h"
#include "api_sip_states.h"
#include "api_errors.h"
#include <sofia-sip/nua_tag.h>
#include <sofia-sip/nua.h>
PREF_NAMESPACE_START
class stack;
class DOUBANGO_API sip_dialog
{
public:
sip_dialog(stack* stk);
~sip_dialog();
inline nua_handle_t* get_handle() const{ return this->handle; }
inline void set_handle(nua_handle_t* h) { this->handle = h; }
//inline SIP_STATE get_state_current() const{ return this->state_current; }
//inline void set_state_current(SIP_STATE s) { this->state_current = s; }
inline unsigned int get_dialog_id() const{ return this->dialog_id; }
virtual ERR Start() = 0;
virtual ERR Stop() = 0;
//virtual void OnStateChanged(SIP_STATE state);
virtual inline const char* get_sipmethod()const = 0;
virtual inline bool get_terminated()const = 0;
virtual void dialog_callback(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]) = 0;
protected:
void authenticate(nua_handle_t *nh, sip_t const *sip);
protected:
nua_handle_t* handle;
stack* stk;
//SIP_STATE state_current;
unsigned int dialog_id;
private:
static unsigned int dialog_counter;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_SM_H__ */

View File

@ -1,43 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_info.h"
PREF_NAMESPACE_START
/* sip_dialog_info constructor*/
sip_dialog_info::sip_dialog_info(stack* stk)
:sip_dialog(stk), sm_ctx(*this)
{
}
/* sip_dialog_info destructor */
sip_dialog_info::~sip_dialog_info()
{
}
PREF_NAMESPACE_END

View File

@ -1,51 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_INFO_SM_H__
#define __DOUBANGO_DIALOG_INFO_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_info_sm.h"
PREF_NAMESPACE_START
/* INFO== RFC2976 - The SIP INFO Method */
class sip_dialog_info : public sip_dialog
{
public:
sip_dialog_info(stack* stk);
~sip_dialog_info();
private:
sip_dialog_infoContext sm_ctx;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_INFO_SM_H__ */

View File

@ -1,43 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_invite.h"
PREF_NAMESPACE_START
/* sip_dialog_invite constructor*/
sip_dialog_invite::sip_dialog_invite(stack* stk)
:sip_dialog(stk),sm_ctx(*this)
{
}
/* sip_dialog_invite destructor */
sip_dialog_invite::~sip_dialog_invite()
{
}
PREF_NAMESPACE_END

View File

@ -1,51 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_INVITE_SM_H__
#define __DOUBANGO_DIALOG_INVITE_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_invite_sm.h"
PREF_NAMESPACE_START
/* INVITE */
class sip_dialog_invite : public sip_dialog
{
public:
sip_dialog_invite(stack* stk);
~sip_dialog_invite();
private:
sip_dialog_inviteContext sm_ctx;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_INVITE_SM_H__ */

View File

@ -1,141 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_message.h"
#include "api_stack.h"
PREF_NAMESPACE_START
/* sip_dialog_message constructor*/
sip_dialog_message::sip_dialog_message(stack* stk, const char* _dest_address, const char* _content_type, const char* _content)
:sip_dialog(stk),sm_ctx(*this)
{
this->dest_address = su_strdup(this->stk->get_home(), _dest_address);
this->content_type = su_strdup(this->stk->get_home(), _content_type);
this->content = su_strdup(this->stk->get_home(), _content);
}
/* sip_dialog_message destructor */
sip_dialog_message::~sip_dialog_message()
{
// FIXME: destroy handle
su_free(this->stk->get_home(), this->dest_address);
su_free(this->stk->get_home(), this->content_type);
su_free(this->stk->get_home(), this->content);
}
/* start sending MESSAGE */
ERR sip_dialog_message::Start()
{
this->sm_ctx.enterStartState();
this->handle = nua_handle(this->stk->get_nua(), this->stk->get_home(), TAG_END());
if(!this->handle)
{
return ERR_GLOBAL_FAILURE;
}
return this->sendMessage();
}
/* terminate/stop dialog */
ERR sip_dialog_message::Stop()
{
return ERR_NOT_IMPLEMENTED;
}
/* dialog state changed */
void sip_dialog_message::OnStateChanged(SIP_STATE state)
{
//sip_dialog::OnStateChanged(state);
}
/* get sip method */
inline const char* sip_dialog_message::get_sipmethod()const
{
return "MESSAGE";
}
/* send sip MESSAGE request*/
ERR sip_dialog_message::sendMessage()
{
if(!this->handle) return ERR_SIP_DIALOG_UNKNOWN;
nua_message(this->handle,
SIPTAG_TO_STR(this->dest_address),
SIPTAG_FROM_STR(this->stk->get_public_id()),
SIPTAG_CONTENT_TYPE_STR(this->content_type),
SIPTAG_PAYLOAD_STR(this->content),
TAG_END());
this->sm_ctx.sm_messageSent();
return ERR_SUCCESS;
}
/* returns true if terminated and false otherwise*/
inline bool sip_dialog_message::get_terminated()const
{
return false;
//return (this->state_current == SS_MESSAGE_TERMINATED);
}
/* dialog callback */
void sip_dialog_message::dialog_callback(nua_event_t _event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[])
{
switch(_event)
{
case nua_r_message:
{
if(status <200) this->sm_ctx.sm_1xx_response();
else if(status <300) this->sm_ctx.sm_2xx_response();
else if(status == 401 || status == 407 || status == 421 || status == 494)
{
this->sm_ctx.sm_401_407_421_494_response();
this->authenticate(nh, sip);
this->sm_ctx.sm_authentificationSent();
}
else this->sm_ctx.sm_xxx_response();
break;
}
default:
{
break;
}
}
}
PREF_NAMESPACE_END

View File

@ -1,69 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_MESSAGE_SM_H__
#define __DOUBANGO_DIALOG_MESSAGE_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_message_sm.h"
PREF_NAMESPACE_START
/* MESSAGE */
class DOUBANGO_API sip_dialog_message : public sip_dialog
{
public:
sip_dialog_message(stack* stk, const char* dest_address, const char* content_type, const char* content);
~sip_dialog_message();
/* sip_dialog override*/
ERR Start();
ERR Stop();
void OnStateChanged(SIP_STATE state);
inline const char* get_sipmethod()const;
inline bool get_terminated()const;
void dialog_callback(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]);
private:
sip_dialog_messageContext sm_ctx;
ERR sendMessage();
char* dest_address;
char* content_type;
char* content;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_MESSAGE_SM_H__ */

View File

@ -1,43 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_options.h"
PREF_NAMESPACE_START
/* sip_dialog_message constructor*/
sip_dialog_options::sip_dialog_options(stack* stk)
:sip_dialog(stk),sm_ctx(*this)
{
}
/* sip_dialog_options destructor */
sip_dialog_options::~sip_dialog_options()
{
}
PREF_NAMESPACE_END

View File

@ -1,51 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_OPTIONS_SM_H__
#define __DOUBANGO_DIALOG_OPTIONS_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_options_sm.h"
PREF_NAMESPACE_START
/* OPTIONS */
class sip_dialog_options : public sip_dialog
{
public:
sip_dialog_options(stack* stk);
~sip_dialog_options();
private:
sip_dialog_optionsContext sm_ctx;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_OPTIONS_SM_H__ */

View File

@ -1,199 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_publish.h"
#include "api_stack.h"
#include <sofia-sip/sip_protos.h>
PREF_NAMESPACE_START
/* sip_dialog_publish constructor*/
sip_dialog_publish::sip_dialog_publish(stack* stk)
:sip_dialog(stk),sm_ctx(*this)
{
}
/* sip_dialog_options destructor */
sip_dialog_publish::~sip_dialog_publish()
{
}
/* start */
ERR sip_dialog_publish::Start()
{
this->sm_ctx.enterStartState();
this->handle = nua_handle(this->stk->get_nua(), this->stk->get_home(),
SIPTAG_TO_STR(this->stk->get_realm()), TAG_END());
if(!this->handle)
{
return ERR_GLOBAL_FAILURE;
}
return this->sendPublish();
}
/* stop */
ERR sip_dialog_publish::Stop()
{
//ERR err = (this->state_current == SS_PUBLISH_ESTABLISHED) ?
// this->sendUnpublish() : this->sendCancel();
//return err;
return ERR_NOT_IMPLEMENTED;
}
/* state changed */
void sip_dialog_publish::OnStateChanged(SIP_STATE state)
{
//sip_dialog::OnStateChanged(state);
#if 1
if(this->get_terminated())
{
printf("PUBLISH terminated\n");
}
#endif
}
/* sip method name */
inline const char* sip_dialog_publish::get_sipmethod()const
{
return "PUBLISH";
}
/* returns true if terminated and false otherwise*/
inline bool sip_dialog_publish::get_terminated()const
{
//return (this->state_current == SS_PUBLISH_TERMINATED);
return false;
}
/* send SIP PUBLISH request */
ERR sip_dialog_publish::sendPublish()
{
if(!this->handle) return ERR_SIP_DIALOG_UNKNOWN;
bool open = true;
const char* note = "my dummy note(FIXME)";
char* xmlnote = su_sprintf(NULL, "<note>%s</note>\n", note);
sip_payload_t *pl = sip_payload_format(NULL,
"<?xml version='1.0' encoding='UTF-8'?>\n"
"<presence xmlns='urn:ietf:params:xml:ns:cpim-pidf'\n"
" entity='%s'>\n"
" <tuple id='%s'>\n"
" <status><basic>%s</basic></status>\n"
"%s"
" </tuple>\n"
"</presence>\n",
this->stk->get_public_id(), "FIXME",
open ? "open" : "closed",
xmlnote ? xmlnote : "");
nua_publish(this->handle, SIPTAG_PAYLOAD(pl),
NUTAG_M_USERNAME("FIXME"),
SIPTAG_PRIVACY_STR(this->stk->get_privacy()),
SIPTAG_FROM_STR(this->stk->get_public_id()),
SIPTAG_TO_STR(this->stk->get_public_id()),
NUTAG_M_FEATURES("expires=200"),// FIXME
SIPTAG_EVENT_STR("presence"),
TAG_IF(pl, SIPTAG_CONTENT_TYPE_STR("application/cpim-pidf+xml")),
TAG_END());
this->sm_ctx.sm_publishSent();
su_free(NULL, pl);
return ERR_SUCCESS;
}
/* send SIP UNPUBLISH request*/
ERR sip_dialog_publish::sendUnpublish()
{
if(this->handle)
{
nua_publish(this->handle,
NUTAG_M_FEATURES("expires=0"),// FIXME
TAG_END());
this->sm_ctx.sm_unpublishSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* cancel request */
ERR sip_dialog_publish::sendCancel()
{
if(this->handle)
{
nua_cancel(this->handle, TAG_END());
this->sm_ctx.sm_cancelSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* dialog callback function*/
void sip_dialog_publish::dialog_callback(nua_event_t _event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[])
{
switch(_event)
{
case nua_r_publish:
case nua_r_unpublish:
{
if(status <200) this->sm_ctx.sm_1xx_response();
else if(status <300) this->sm_ctx.sm_2xx_response( (_event==nua_r_unpublish) );
else if(status <400) this->sm_ctx.sm_3xx_response();
else if(status == 401 || status == 407 || status == 421 || status == 494)
{
this->sm_ctx.sm_401_407_421_494_response();
this->authenticate(nh, sip);
this->sm_ctx.sm_authentificationSent();
}
else if(status<500) this->sm_ctx.sm_4xx_response();
else if(status<600) this->sm_ctx.sm_5xx_response();
else if(status<700) this->sm_ctx.sm_6xx_response();
else this->sm_ctx.sm_xxx_response();
break;
}
default:
{
break;
}
}
}
PREF_NAMESPACE_END

View File

@ -1,68 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_PUBLISH_SM_H__
#define __DOUBANGO_DIALOG_PUBLISH_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_publish_sm.h"
PREF_NAMESPACE_START
/* PUBLISH== RFC 3903: Session Initiation Protocol (SIP) Extension for Event State Publication */
class sip_dialog_publish : public sip_dialog
{
public:
sip_dialog_publish(stack* stk);
~sip_dialog_publish();
/* sip_dialog override*/
ERR Start();
ERR Stop();
void OnStateChanged(SIP_STATE state);
inline const char* get_sipmethod()const;
inline bool get_terminated()const;
void dialog_callback(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]);
private:
ERR sendPublish();
ERR sendUnpublish();
ERR sendCancel();
private:
sip_dialog_publishContext sm_ctx;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_PUBLISH_SM_H__ */

View File

@ -1,210 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_register.h"
#include "api_stack.h"
#include "strutils.h"
PREF_NAMESPACE_START
/* sip_dialog_register constructor*/
sip_dialog_register::sip_dialog_register(stack* stk)
:sip_dialog(stk),sm_ctx(*this), state_current(srs_none)
{
}
/* sip_dialog_register destructor */
sip_dialog_register::~sip_dialog_register()
{
// FIXME: destroy handle
}
/**
Initialize default parameters for initial REGISTER request according to
3GPP TS 24.229 subclause 5.1.1.2.
*/
ERR sip_dialog_register::Start()
{
this->sm_ctx.enterStartState();
this->handle = nua_handle(this->stk->get_nua(), this->stk->get_home(),
SIPTAG_FROM_STR(this->stk->get_public_id()),
SIPTAG_TO_STR(this->stk->get_public_id()),
//SIPTAG_TO_STR(this->stk->get_realm()),
NUTAG_M_DISPLAY(this->stk->get_displayname()),
SIPTAG_PRIVACY_STR(this->stk->get_privacy()),
SIPTAG_EXPIRES_STR(itoa(this->stk->get_expires()).c_str()),
NUTAG_OUTBOUND("no-options-keepalive"),
NUTAG_OUTBOUND("no-validate"),
NUTAG_EARLY_IMS(this->stk->get_early_ims()?1:0),
//NUTAG_KEEPALIVE(0),
//NUTAG_M_FEATURES("audio;expires=20;+g.3gpp.cs-voice"),
//NUTAG_M_USERNAME("FIXME"),
NUTAG_CALLEE_CAPS(0),
SIPTAG_SUPPORTED_STR("timer, precondition, path, replaces, 100rel, gruu, outbound"),
SIPTAG_EVENT_STR("registration"),
SIPTAG_ALLOW_EVENTS_STR("presence"),
//NUTAG_M_FEATURES("+g.3gpp.smsip;+g.3gpp.cs-voice"),
//TAG_IF(this->gsma_vs, NUTAG_M_FEATURES("+g.3gpp.cs-voice")),
TAG_END());
//su_free(NULL, features);
if(!this->handle)
{
return ERR_GLOBAL_FAILURE;
}
return this->sendRegister();
}
/* stop */
ERR sip_dialog_register::Stop()
{
ERR err = (this->state_current == srs_registered) ?
this->sendUnregister() : this->sendCancel();
return err;
}
/* state changed */
void sip_dialog_register::OnStateChanged(sip_state_registration_t state)
{
this->state_current = state;
#if 0
switch(state)
{
case srs_none: printf("sip_dialog_register: %s\n", "srs_none"); break;
case srs_trying: printf("sip_dialog_register: %s\n", "srs_trying"); break;
case srs_authentifying: printf("sip_dialog_register: %s\n", "srs_authentifying"); break;
case srs_unregistered: printf("sip_dialog_register: %s\n", "srs_unregistered"); break;
case srs_registered: printf("sip_dialog_register: %s\n", "srs_registered"); break;
}
#endif
}
/* sip method name */
inline const char* sip_dialog_register::get_sipmethod()const
{
return "REGISTER";
}
/* returns true if terminated and false otherwise*/
inline bool sip_dialog_register::get_terminated()const
{
return (this->state_current == srs_unregistered);
}
/* send SIP REGISTER request */
ERR sip_dialog_register::sendRegister()
{
if(!this->handle) return ERR_SIP_DIALOG_UNKNOWN;
/* register */
nua_register(this->handle, TAG_END());
/* alert state machine */
this->sm_ctx.sm_registerSent();
return ERR_SUCCESS;
}
/* send SIP UNREGISTER request*/
ERR sip_dialog_register::sendUnregister()
{
if(this->handle)
{
nua_unregister(this->handle, TAG_END());
this->sm_ctx.sm_unregisterSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* cancel request */
ERR sip_dialog_register::sendCancel()
{
if(this->handle)
{
nua_cancel(this->handle, TAG_END());
this->sm_ctx.sm_cancelSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* dialog callback function*/
void sip_dialog_register::dialog_callback(nua_event_t _event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[])
{
switch(_event)
{
case nua_r_register:
case nua_r_unregister:
{
if(status <200) this->sm_ctx.sm_1xx_response();
else if(status <300) this->sm_ctx.sm_2xx_response( (_event==nua_r_unregister) );
else if(status <400) this->sm_ctx.sm_3xx_response();
else if(status == 401 || status == 407 || status == 421 || status == 494)
{
this->sm_ctx.sm_401_407_421_494_response();
this->authenticate(nh, sip);
this->sm_ctx.sm_authentificationSent();
}
else if(status<500) this->sm_ctx.sm_4xx_response();
else if(status<600) this->sm_ctx.sm_5xx_response();
else if(status<700) this->sm_ctx.sm_6xx_response();
else this->sm_ctx.sm_xxx_response();
//
// Alert all subscriber that the registration state has changed
//
this->stk->registrationStateChanged(this->stk->get_id(), this->state_current, status, phrase);
break;
}
default:
{
this->sm_ctx.sm_xxx_response();
this->stk->registrationStateChanged(this->stk->get_id(), this->state_current, status, phrase);
break;
}
}
}
PREF_NAMESPACE_END

View File

@ -1,72 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_REGISTER_SM_H__
#define __DOUBANGO_DIALOG_REGISTER_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_register_sm.h"
PREF_NAMESPACE_START
/* REGISTER */
class DOUBANGO_API sip_dialog_register : public sip_dialog
{
public:
sip_dialog_register(stack* stk);
~sip_dialog_register();
/* sip_dialog override*/
ERR Start();
ERR Stop();
inline const char* get_sipmethod()const;
inline bool get_terminated()const;
void dialog_callback(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]);
/* public methods */
inline void OnStateChanged(sip_state_registration_t state);
private:
ERR sendRegister();
ERR sendUnregister();
ERR sendCancel();
private:
sip_state_registration_t state_current;
sip_dialog_registerContext sm_ctx;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_REGISTER_SM_H__ */

View File

@ -1,197 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "sip_dialog_subscribe.h"
#include "api_stack.h"
PREF_NAMESPACE_START
/* sip_dialog_subscribe constructor*/
sip_dialog_subscribe::sip_dialog_subscribe(stack* stk, const char* _dest_address, const char* _eventpackg, const char* _allow, bool _eventlist)
:sip_dialog(stk),sm_ctx(*this)
{
this->dest_address = su_strdup(this->stk->get_home(), _dest_address);
this->eventpackg = su_strdup(this->stk->get_home(), _eventpackg);
this->allow = su_strdup(this->stk->get_home(), _allow);
this->eventlist = _eventlist;
}
/* sip_dialog_subscribe destructor */
sip_dialog_subscribe::~sip_dialog_subscribe()
{
// FIXME: destroy handle
su_free(this->stk->get_home(), this->dest_address);
su_free(this->stk->get_home(), this->eventpackg);
su_free(this->stk->get_home(), this->allow);
}
/* start */
ERR sip_dialog_subscribe::Start()
{
this->sm_ctx.enterStartState();
this->handle = nua_handle(this->stk->get_nua(), this->stk->get_home(),
SIPTAG_TO_STR(this->stk->get_realm()), TAG_END());
if(!this->handle)
{
return ERR_GLOBAL_FAILURE;
}
return this->sendSubscribe();
}
/* stop */
ERR sip_dialog_subscribe::Stop()
{
//ERR err = (this->state_current == SS_SUBSCRIBE_ESTABLISHED) ?
// this->sendUnsubscribe() : this->sendCancel();
//return err;
return ERR_NOT_IMPLEMENTED;
}
/* state changed */
void sip_dialog_subscribe::OnStateChanged(SIP_STATE state)
{
//sip_dialog::OnStateChanged(state);
#if 1
if(this->get_terminated())
{
printf("SUBSCRIBE terminated\n");
}
#endif
}
/* sip method name */
inline const char* sip_dialog_subscribe::get_sipmethod()const
{
return "SUBSCRIBE";
}
/* returns true if terminated and false otherwise*/
inline bool sip_dialog_subscribe::get_terminated()const
{
return false;
//return (this->state_current == SS_SUBSCRIBE_TERMINATED);
}
/* send SIP SUBSCRIBE request */
ERR sip_dialog_subscribe::sendSubscribe()
{
if(!this->handle) return ERR_SIP_DIALOG_UNKNOWN;
nua_subscribe(this->handle,
SIPTAG_PRIVACY_STR(this->stk->get_privacy()),
SIPTAG_FROM_STR(this->stk->get_public_id()),
SIPTAG_TO_STR(this->dest_address),
NUTAG_M_FEATURES("expires=200"),// FIXME
SIPTAG_ACCEPT_STR(this->allow),
TAG_IF(eventlist, SIPTAG_SUPPORTED_STR("eventlist")),
SIPTAG_EVENT_STR(this->eventpackg),
TAG_END());
this->sm_ctx.sm_subscribeSent();
return ERR_SUCCESS;
}
/* send SIP UNSUBSCRIBE request*/
ERR sip_dialog_subscribe::sendUnsubscribe()
{
if(this->handle)
{
nua_subscribe(this->handle,
NUTAG_M_FEATURES("expires=0"),// FIXME
TAG_END());
this->sm_ctx.sm_unsubscribeSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* cancel request */
ERR sip_dialog_subscribe::sendCancel()
{
if(this->handle)
{
nua_cancel(this->handle, TAG_END());
this->sm_ctx.sm_cancelSent();
return ERR_SUCCESS;
}
else return ERR_SIP_DIALOG_UNKNOWN;
}
/* dialog callback function*/
void sip_dialog_subscribe::dialog_callback(nua_event_t _event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[])
{
switch(_event)
{
case nua_r_subscribe:
case nua_r_unsubscribe:
{
if(status <200) this->sm_ctx.sm_1xx_response();
else if(status <300) this->sm_ctx.sm_2xx_response( (_event==nua_r_unsubscribe) );
else if(status <400) this->sm_ctx.sm_3xx_response();
else if(status == 401 || status == 407 || status == 421 || status == 494)
{
this->sm_ctx.sm_401_407_421_494_response();
this->authenticate(nh, sip);
this->sm_ctx.sm_authentificationSent();
}
else if(status<500) this->sm_ctx.sm_4xx_response();
else if(status<600) this->sm_ctx.sm_5xx_response();
else if(status<700) this->sm_ctx.sm_6xx_response();
else this->sm_ctx.sm_xxx_response();
break;
}
case nua_i_notify:
{
// FIXME: handled by nea layer?
/*if(sip && sip->sip_subscription_state)
{
bool term = !stricmp(sip->sip_subscription_state->ss_substate, "terminated");
this->sm_ctx.sm_notify_response(term);
}*/
break;
}
default:
{
break;
}
}
}
PREF_NAMESPACE_END

View File

@ -1,73 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_DIALOG_SUBSCRIBE_SM_H__
#define __DOUBANGO_DIALOG_SUBSCRIBE_SM_H__
#include "pref.h"
#include "sip_dialog.h"
#include "sm_dialog_subscribe_sm.h"
PREF_NAMESPACE_START
/* SUBSCRIBE */
class sip_dialog_subscribe : public sip_dialog
{
public:
sip_dialog_subscribe(stack* stk, const char* dest_address, const char* eventpackg, const char* allow, bool eventlist);
~sip_dialog_subscribe();
/* sip_dialog override*/
ERR Start();
ERR Stop();
void OnStateChanged(SIP_STATE state);
inline const char* get_sipmethod()const;
inline bool get_terminated()const;
void dialog_callback(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]);
private:
ERR sendSubscribe();
ERR sendUnsubscribe();
ERR sendCancel();
private:
sip_dialog_subscribeContext sm_ctx;
char* dest_address;
char* eventpackg;
char* allow;
bool eventlist;
};
PREF_NAMESPACE_END
#endif /* __DOUBANGO_DIALOG_SUBSCRIBE_SM_H__ */

View File

@ -1,60 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_info.sm
*/
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
#include "sip_dialog_info.h"
#include "..\..\doubango\src\sm_dialog_info_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_info_Initialized map_dialog_info::Initialized("map_dialog_info::Initialized", 0);
void sip_dialog_infoState::Default(sip_dialog_infoContext& context)
{
assert(1==0);
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,123 +0,0 @@
#ifndef _H_SM_DIALOG_INFO_SM
#define _H_SM_DIALOG_INFO_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_info.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_info;
class map_dialog_info_Initialized;
class map_dialog_info_Default;
class sip_dialog_infoState;
class sip_dialog_infoContext;
class sip_dialog_info;
class sip_dialog_infoState :
public statemap::State
{
public:
sip_dialog_infoState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_infoContext&) {};
virtual void Exit(sip_dialog_infoContext&) {};
protected:
virtual void Default(sip_dialog_infoContext& context);
};
class map_dialog_info
{
public:
static map_dialog_info_Initialized Initialized;
};
class map_dialog_info_Default :
public sip_dialog_infoState
{
public:
map_dialog_info_Default(const char *name, int stateId)
: sip_dialog_infoState(name, stateId)
{};
};
class map_dialog_info_Initialized :
public map_dialog_info_Default
{
public:
map_dialog_info_Initialized(const char *name, int stateId)
: map_dialog_info_Default(name, stateId)
{};
};
class sip_dialog_infoContext :
public statemap::FSMContext
{
public:
sip_dialog_infoContext(sip_dialog_info& owner)
: FSMContext(map_dialog_info::Initialized),
_owner(owner)
{};
sip_dialog_infoContext(sip_dialog_info& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_info& getOwner() const
{
return (_owner);
};
sip_dialog_infoState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_infoState&>(*_state));
};
private:
sip_dialog_info& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_INFO_SM

View File

@ -1,60 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_invite.sm
*/
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
#include "sip_dialog_invite.h"
#include "..\..\doubango\src\sm_dialog_invite_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_invite_Initialized map_dialog_invite::Initialized("map_dialog_invite::Initialized", 0);
void sip_dialog_inviteState::Default(sip_dialog_inviteContext& context)
{
assert(1==0);
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,123 +0,0 @@
#ifndef _H_SM_DIALOG_INVITE_SM
#define _H_SM_DIALOG_INVITE_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_invite.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_invite;
class map_dialog_invite_Initialized;
class map_dialog_invite_Default;
class sip_dialog_inviteState;
class sip_dialog_inviteContext;
class sip_dialog_invite;
class sip_dialog_inviteState :
public statemap::State
{
public:
sip_dialog_inviteState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_inviteContext&) {};
virtual void Exit(sip_dialog_inviteContext&) {};
protected:
virtual void Default(sip_dialog_inviteContext& context);
};
class map_dialog_invite
{
public:
static map_dialog_invite_Initialized Initialized;
};
class map_dialog_invite_Default :
public sip_dialog_inviteState
{
public:
map_dialog_invite_Default(const char *name, int stateId)
: sip_dialog_inviteState(name, stateId)
{};
};
class map_dialog_invite_Initialized :
public map_dialog_invite_Default
{
public:
map_dialog_invite_Initialized(const char *name, int stateId)
: map_dialog_invite_Default(name, stateId)
{};
};
class sip_dialog_inviteContext :
public statemap::FSMContext
{
public:
sip_dialog_inviteContext(sip_dialog_invite& owner)
: FSMContext(map_dialog_invite::Initialized),
_owner(owner)
{};
sip_dialog_inviteContext(sip_dialog_invite& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_invite& getOwner() const
{
return (_owner);
};
sip_dialog_inviteState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_inviteState&>(*_state));
};
private:
sip_dialog_invite& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_INVITE_SM

View File

@ -1,250 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_message.sm
*/
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
#include "sip_dialog_message.h"
#include "..\..\doubango\src\sm_dialog_message_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_message_Initialized map_dialog_message::Initialized("map_dialog_message::Initialized", 0);
map_dialog_message_Trying map_dialog_message::Trying("map_dialog_message::Trying", 1);
map_dialog_message_Authentifying map_dialog_message::Authentifying("map_dialog_message::Authentifying", 2);
map_dialog_message_Terminated map_dialog_message::Terminated("map_dialog_message::Terminated", 3);
void sip_dialog_messageState::sm_1xx_response(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::sm_2xx_response(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::sm_401_407_421_494_response(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::sm_authentificationSent(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::sm_messageSent(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::sm_xxx_response(sip_dialog_messageContext& context)
{
Default(context);
return;
}
void sip_dialog_messageState::Default(sip_dialog_messageContext& context)
{
assert(1==0);
return;
}
void map_dialog_message_Default::sm_401_407_421_494_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Default::Default(sip_dialog_messageContext& context)
{
return;
}
void map_dialog_message_Initialized::Entry(sip_dialog_messageContext& context)
{
sip_dialog_message& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_MESSAGE_INITIALIZED);
return;
}
void map_dialog_message_Initialized::sm_messageSent(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Trying::Entry(sip_dialog_messageContext& context)
{
sip_dialog_message& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_MESSAGE_TRYING);
return;
}
void map_dialog_message_Trying::sm_1xx_response(sip_dialog_messageContext& context)
{
return;
}
void map_dialog_message_Trying::sm_2xx_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Trying::sm_401_407_421_494_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Trying::sm_xxx_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Authentifying::Entry(sip_dialog_messageContext& context)
{
sip_dialog_message& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_MESSAGE_AUTHENTIFYING);
return;
}
void map_dialog_message_Authentifying::Default(sip_dialog_messageContext& context)
{
return;
}
void map_dialog_message_Authentifying::sm_1xx_response(sip_dialog_messageContext& context)
{
return;
}
void map_dialog_message_Authentifying::sm_2xx_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Authentifying::sm_authentificationSent(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Authentifying::sm_xxx_response(sip_dialog_messageContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_message::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_message_Terminated::Entry(sip_dialog_messageContext& context)
{
sip_dialog_message& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_MESSAGE_TERMINATED);
return;
}
void map_dialog_message_Terminated::Default(sip_dialog_messageContext& context)
{
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,212 +0,0 @@
#ifndef _H_SM_DIALOG_MESSAGE_SM
#define _H_SM_DIALOG_MESSAGE_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_message.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_message;
class map_dialog_message_Initialized;
class map_dialog_message_Trying;
class map_dialog_message_Authentifying;
class map_dialog_message_Terminated;
class map_dialog_message_Default;
class sip_dialog_messageState;
class sip_dialog_messageContext;
class sip_dialog_message;
class sip_dialog_messageState :
public statemap::State
{
public:
sip_dialog_messageState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_messageContext&) {};
virtual void Exit(sip_dialog_messageContext&) {};
virtual void sm_1xx_response(sip_dialog_messageContext& context);
virtual void sm_2xx_response(sip_dialog_messageContext& context);
virtual void sm_401_407_421_494_response(sip_dialog_messageContext& context);
virtual void sm_authentificationSent(sip_dialog_messageContext& context);
virtual void sm_messageSent(sip_dialog_messageContext& context);
virtual void sm_xxx_response(sip_dialog_messageContext& context);
protected:
virtual void Default(sip_dialog_messageContext& context);
};
class map_dialog_message
{
public:
static map_dialog_message_Initialized Initialized;
static map_dialog_message_Trying Trying;
static map_dialog_message_Authentifying Authentifying;
static map_dialog_message_Terminated Terminated;
};
class map_dialog_message_Default :
public sip_dialog_messageState
{
public:
map_dialog_message_Default(const char *name, int stateId)
: sip_dialog_messageState(name, stateId)
{};
virtual void sm_401_407_421_494_response(sip_dialog_messageContext& context);
virtual void Default(sip_dialog_messageContext& context);
};
class map_dialog_message_Initialized :
public map_dialog_message_Default
{
public:
map_dialog_message_Initialized(const char *name, int stateId)
: map_dialog_message_Default(name, stateId)
{};
void Entry(sip_dialog_messageContext&);
void sm_messageSent(sip_dialog_messageContext& context);
};
class map_dialog_message_Trying :
public map_dialog_message_Default
{
public:
map_dialog_message_Trying(const char *name, int stateId)
: map_dialog_message_Default(name, stateId)
{};
void Entry(sip_dialog_messageContext&);
void sm_1xx_response(sip_dialog_messageContext& context);
void sm_2xx_response(sip_dialog_messageContext& context);
void sm_401_407_421_494_response(sip_dialog_messageContext& context);
void sm_xxx_response(sip_dialog_messageContext& context);
};
class map_dialog_message_Authentifying :
public map_dialog_message_Default
{
public:
map_dialog_message_Authentifying(const char *name, int stateId)
: map_dialog_message_Default(name, stateId)
{};
void Entry(sip_dialog_messageContext&);
void Default(sip_dialog_messageContext& context);
void sm_1xx_response(sip_dialog_messageContext& context);
void sm_2xx_response(sip_dialog_messageContext& context);
void sm_authentificationSent(sip_dialog_messageContext& context);
void sm_xxx_response(sip_dialog_messageContext& context);
};
class map_dialog_message_Terminated :
public map_dialog_message_Default
{
public:
map_dialog_message_Terminated(const char *name, int stateId)
: map_dialog_message_Default(name, stateId)
{};
void Entry(sip_dialog_messageContext&);
void Default(sip_dialog_messageContext& context);
};
class sip_dialog_messageContext :
public statemap::FSMContext
{
public:
sip_dialog_messageContext(sip_dialog_message& owner)
: FSMContext(map_dialog_message::Initialized),
_owner(owner)
{};
sip_dialog_messageContext(sip_dialog_message& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_message& getOwner() const
{
return (_owner);
};
sip_dialog_messageState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_messageState&>(*_state));
};
void sm_1xx_response()
{
(getState()).sm_1xx_response(*this);
};
void sm_2xx_response()
{
(getState()).sm_2xx_response(*this);
};
void sm_401_407_421_494_response()
{
(getState()).sm_401_407_421_494_response(*this);
};
void sm_authentificationSent()
{
(getState()).sm_authentificationSent(*this);
};
void sm_messageSent()
{
(getState()).sm_messageSent(*this);
};
void sm_xxx_response()
{
(getState()).sm_xxx_response(*this);
};
private:
sip_dialog_message& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_MESSAGE_SM

View File

@ -1,59 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_options.sm
*/
///****************************************************************************
// _ _
// | | | |
// _ | | ___ _ _| | _ ____ ____ ____ ___
// / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
// ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
// \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
// (_____|
//
// Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
//
// This file is part of Open Source Doubango IMS Client Framework project.
//
// DOUBANGO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOUBANGO is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with DOUBANGO.
//****************************************************************************/
#include "sip_dialog_options.h"
#include "..\..\doubango\src\sm_dialog_options_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_options_Initialized map_dialog_options::Initialized("map_dialog_options::Initialized", 0);
void sip_dialog_optionsState::Default(sip_dialog_optionsContext& context)
{
assert(1==0);
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,123 +0,0 @@
#ifndef _H_SM_DIALOG_OPTIONS_SM
#define _H_SM_DIALOG_OPTIONS_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_options.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_options;
class map_dialog_options_Initialized;
class map_dialog_options_Default;
class sip_dialog_optionsState;
class sip_dialog_optionsContext;
class sip_dialog_options;
class sip_dialog_optionsState :
public statemap::State
{
public:
sip_dialog_optionsState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_optionsContext&) {};
virtual void Exit(sip_dialog_optionsContext&) {};
protected:
virtual void Default(sip_dialog_optionsContext& context);
};
class map_dialog_options
{
public:
static map_dialog_options_Initialized Initialized;
};
class map_dialog_options_Default :
public sip_dialog_optionsState
{
public:
map_dialog_options_Default(const char *name, int stateId)
: sip_dialog_optionsState(name, stateId)
{};
};
class map_dialog_options_Initialized :
public map_dialog_options_Default
{
public:
map_dialog_options_Initialized(const char *name, int stateId)
: map_dialog_options_Default(name, stateId)
{};
};
class sip_dialog_optionsContext :
public statemap::FSMContext
{
public:
sip_dialog_optionsContext(sip_dialog_options& owner)
: FSMContext(map_dialog_options::Initialized),
_owner(owner)
{};
sip_dialog_optionsContext(sip_dialog_options& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_options& getOwner() const
{
return (_owner);
};
sip_dialog_optionsState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_optionsState&>(*_state));
};
private:
sip_dialog_options& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_OPTIONS_SM

View File

@ -1,494 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_publish.sm
*/
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
#include "sip_dialog_publish.h"
#include "..\..\doubango\src\sm_dialog_publish_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_publish_Initialized map_dialog_publish::Initialized("map_dialog_publish::Initialized", 0);
map_dialog_publish_Trying map_dialog_publish::Trying("map_dialog_publish::Trying", 1);
map_dialog_publish_Established map_dialog_publish::Established("map_dialog_publish::Established", 2);
map_dialog_publish_Authentifying map_dialog_publish::Authentifying("map_dialog_publish::Authentifying", 3);
map_dialog_publish_Terminated map_dialog_publish::Terminated("map_dialog_publish::Terminated", 4);
void sip_dialog_publishState::sm_1xx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_2xx_response(sip_dialog_publishContext& context, bool unpub)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_3xx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_401_407_421_494_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_4xx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_5xx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_6xx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_authentificationSent(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_cancelSent(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_publishSent(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_unpublishSent(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::sm_xxx_response(sip_dialog_publishContext& context)
{
Default(context);
return;
}
void sip_dialog_publishState::Default(sip_dialog_publishContext& context)
{
assert(1==0);
return;
}
void map_dialog_publish_Default::sm_401_407_421_494_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Default::sm_3xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Default::sm_4xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Default::sm_5xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Default::sm_6xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Default::sm_xxx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Default::Default(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Initialized::Entry(sip_dialog_publishContext& context)
{
sip_dialog_publish& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_PUBLISH_INITIALIZED);
return;
}
void map_dialog_publish_Initialized::sm_publishSent(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::Entry(sip_dialog_publishContext& context)
{
sip_dialog_publish& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_PUBLISH_TRYING);
return;
}
void map_dialog_publish_Trying::Default(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Trying::sm_1xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Trying::sm_2xx_response(sip_dialog_publishContext& context, bool unpub)
{
if (unpub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
}
else if (unpub == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_publish::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_publish_Default::sm_2xx_response(context, unpub);
}
return;
}
void map_dialog_publish_Trying::sm_3xx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_401_407_421_494_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_4xx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_5xx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_6xx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_cancelSent(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Trying::sm_xxx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Established::Entry(sip_dialog_publishContext& context)
{
sip_dialog_publish& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_PUBLISH_ESTABLISHED);
return;
}
void map_dialog_publish_Established::Default(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Established::sm_1xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Established::sm_2xx_response(sip_dialog_publishContext& context, bool unpub)
{
if (unpub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
}
else if (unpub == false)
{
// No actions.
} else
{
map_dialog_publish_Default::sm_2xx_response(context, unpub);
}
return;
}
void map_dialog_publish_Established::sm_401_407_421_494_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Established::sm_publishSent(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Established::sm_unpublishSent(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Established::sm_xxx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Authentifying::Entry(sip_dialog_publishContext& context)
{
sip_dialog_publish& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_PUBLISH_AUTHENTIFYING);
return;
}
void map_dialog_publish_Authentifying::Default(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Authentifying::sm_1xx_response(sip_dialog_publishContext& context)
{
return;
}
void map_dialog_publish_Authentifying::sm_2xx_response(sip_dialog_publishContext& context, bool unpub)
{
if (unpub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
}
else if (unpub == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_publish::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_publish_Default::sm_2xx_response(context, unpub);
}
return;
}
void map_dialog_publish_Authentifying::sm_authentificationSent(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Authentifying::sm_xxx_response(sip_dialog_publishContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_publish::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_publish_Terminated::Entry(sip_dialog_publishContext& context)
{
sip_dialog_publish& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_PUBLISH_TERMINATED);
return;
}
void map_dialog_publish_Terminated::Default(sip_dialog_publishContext& context)
{
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,279 +0,0 @@
#ifndef _H_SM_DIALOG_PUBLISH_SM
#define _H_SM_DIALOG_PUBLISH_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_publish.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_publish;
class map_dialog_publish_Initialized;
class map_dialog_publish_Trying;
class map_dialog_publish_Established;
class map_dialog_publish_Authentifying;
class map_dialog_publish_Terminated;
class map_dialog_publish_Default;
class sip_dialog_publishState;
class sip_dialog_publishContext;
class sip_dialog_publish;
class sip_dialog_publishState :
public statemap::State
{
public:
sip_dialog_publishState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_publishContext&) {};
virtual void Exit(sip_dialog_publishContext&) {};
virtual void sm_1xx_response(sip_dialog_publishContext& context);
virtual void sm_2xx_response(sip_dialog_publishContext& context, bool unpub);
virtual void sm_3xx_response(sip_dialog_publishContext& context);
virtual void sm_401_407_421_494_response(sip_dialog_publishContext& context);
virtual void sm_4xx_response(sip_dialog_publishContext& context);
virtual void sm_5xx_response(sip_dialog_publishContext& context);
virtual void sm_6xx_response(sip_dialog_publishContext& context);
virtual void sm_authentificationSent(sip_dialog_publishContext& context);
virtual void sm_cancelSent(sip_dialog_publishContext& context);
virtual void sm_publishSent(sip_dialog_publishContext& context);
virtual void sm_unpublishSent(sip_dialog_publishContext& context);
virtual void sm_xxx_response(sip_dialog_publishContext& context);
protected:
virtual void Default(sip_dialog_publishContext& context);
};
class map_dialog_publish
{
public:
static map_dialog_publish_Initialized Initialized;
static map_dialog_publish_Trying Trying;
static map_dialog_publish_Established Established;
static map_dialog_publish_Authentifying Authentifying;
static map_dialog_publish_Terminated Terminated;
};
class map_dialog_publish_Default :
public sip_dialog_publishState
{
public:
map_dialog_publish_Default(const char *name, int stateId)
: sip_dialog_publishState(name, stateId)
{};
virtual void sm_401_407_421_494_response(sip_dialog_publishContext& context);
virtual void sm_3xx_response(sip_dialog_publishContext& context);
virtual void sm_4xx_response(sip_dialog_publishContext& context);
virtual void sm_5xx_response(sip_dialog_publishContext& context);
virtual void sm_6xx_response(sip_dialog_publishContext& context);
virtual void sm_xxx_response(sip_dialog_publishContext& context);
virtual void Default(sip_dialog_publishContext& context);
};
class map_dialog_publish_Initialized :
public map_dialog_publish_Default
{
public:
map_dialog_publish_Initialized(const char *name, int stateId)
: map_dialog_publish_Default(name, stateId)
{};
void Entry(sip_dialog_publishContext&);
void sm_publishSent(sip_dialog_publishContext& context);
};
class map_dialog_publish_Trying :
public map_dialog_publish_Default
{
public:
map_dialog_publish_Trying(const char *name, int stateId)
: map_dialog_publish_Default(name, stateId)
{};
void Entry(sip_dialog_publishContext&);
void Default(sip_dialog_publishContext& context);
void sm_1xx_response(sip_dialog_publishContext& context);
void sm_2xx_response(sip_dialog_publishContext& context, bool unpub);
void sm_3xx_response(sip_dialog_publishContext& context);
void sm_401_407_421_494_response(sip_dialog_publishContext& context);
void sm_4xx_response(sip_dialog_publishContext& context);
void sm_5xx_response(sip_dialog_publishContext& context);
void sm_6xx_response(sip_dialog_publishContext& context);
void sm_cancelSent(sip_dialog_publishContext& context);
void sm_xxx_response(sip_dialog_publishContext& context);
};
class map_dialog_publish_Established :
public map_dialog_publish_Default
{
public:
map_dialog_publish_Established(const char *name, int stateId)
: map_dialog_publish_Default(name, stateId)
{};
void Entry(sip_dialog_publishContext&);
void Default(sip_dialog_publishContext& context);
void sm_1xx_response(sip_dialog_publishContext& context);
void sm_2xx_response(sip_dialog_publishContext& context, bool unpub);
void sm_401_407_421_494_response(sip_dialog_publishContext& context);
void sm_publishSent(sip_dialog_publishContext& context);
void sm_unpublishSent(sip_dialog_publishContext& context);
void sm_xxx_response(sip_dialog_publishContext& context);
};
class map_dialog_publish_Authentifying :
public map_dialog_publish_Default
{
public:
map_dialog_publish_Authentifying(const char *name, int stateId)
: map_dialog_publish_Default(name, stateId)
{};
void Entry(sip_dialog_publishContext&);
void Default(sip_dialog_publishContext& context);
void sm_1xx_response(sip_dialog_publishContext& context);
void sm_2xx_response(sip_dialog_publishContext& context, bool unpub);
void sm_authentificationSent(sip_dialog_publishContext& context);
void sm_xxx_response(sip_dialog_publishContext& context);
};
class map_dialog_publish_Terminated :
public map_dialog_publish_Default
{
public:
map_dialog_publish_Terminated(const char *name, int stateId)
: map_dialog_publish_Default(name, stateId)
{};
void Entry(sip_dialog_publishContext&);
void Default(sip_dialog_publishContext& context);
};
class sip_dialog_publishContext :
public statemap::FSMContext
{
public:
sip_dialog_publishContext(sip_dialog_publish& owner)
: FSMContext(map_dialog_publish::Initialized),
_owner(owner)
{};
sip_dialog_publishContext(sip_dialog_publish& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_publish& getOwner() const
{
return (_owner);
};
sip_dialog_publishState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_publishState&>(*_state));
};
void sm_1xx_response()
{
(getState()).sm_1xx_response(*this);
};
void sm_2xx_response(bool unpub)
{
(getState()).sm_2xx_response(*this, unpub);
};
void sm_3xx_response()
{
(getState()).sm_3xx_response(*this);
};
void sm_401_407_421_494_response()
{
(getState()).sm_401_407_421_494_response(*this);
};
void sm_4xx_response()
{
(getState()).sm_4xx_response(*this);
};
void sm_5xx_response()
{
(getState()).sm_5xx_response(*this);
};
void sm_6xx_response()
{
(getState()).sm_6xx_response(*this);
};
void sm_authentificationSent()
{
(getState()).sm_authentificationSent(*this);
};
void sm_cancelSent()
{
(getState()).sm_cancelSent(*this);
};
void sm_publishSent()
{
(getState()).sm_publishSent(*this);
};
void sm_unpublishSent()
{
(getState()).sm_unpublishSent(*this);
};
void sm_xxx_response()
{
(getState()).sm_xxx_response(*this);
};
private:
sip_dialog_publish& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_PUBLISH_SM

View File

@ -1,483 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_register.sm
*/
///****************************************************************************
// _ _
// | | | |
// _ | | ___ _ _| | _ ____ ____ ____ ___
// / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
// ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
// \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
// (_____|
//
// Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
//
// This file is part of Open Source Doubango IMS Client Framework project.
//
// DOUBANGO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOUBANGO is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with DOUBANGO.
//****************************************************************************/
#include "sip_dialog_register.h"
#include "..\..\doubango\src\sm_dialog_register_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_register_Initialized map_dialog_register::Initialized("map_dialog_register::Initialized", 0);
map_dialog_register_Trying map_dialog_register::Trying("map_dialog_register::Trying", 1);
map_dialog_register_Established map_dialog_register::Established("map_dialog_register::Established", 2);
map_dialog_register_Authentifying map_dialog_register::Authentifying("map_dialog_register::Authentifying", 3);
map_dialog_register_Terminated map_dialog_register::Terminated("map_dialog_register::Terminated", 4);
void sip_dialog_registerState::sm_1xx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_2xx_response(sip_dialog_registerContext& context, bool unreg)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_3xx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_401_407_421_494_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_4xx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_5xx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_6xx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_authentificationSent(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_cancelSent(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_registerSent(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_unregisterSent(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::sm_xxx_response(sip_dialog_registerContext& context)
{
Default(context);
return;
}
void sip_dialog_registerState::Default(sip_dialog_registerContext& context)
{
assert(1==0);
return;
}
void map_dialog_register_Default::sm_401_407_421_494_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Default::sm_3xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Default::sm_4xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Default::sm_5xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Default::sm_6xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Default::sm_xxx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Default::Default(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Initialized::Entry(sip_dialog_registerContext& context)
{
sip_dialog_register& ctxt(context.getOwner());
ctxt.OnStateChanged(srs_none);
return;
}
void map_dialog_register_Initialized::sm_registerSent(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::Entry(sip_dialog_registerContext& context)
{
sip_dialog_register& ctxt(context.getOwner());
ctxt.OnStateChanged(srs_trying);
return;
}
void map_dialog_register_Trying::Default(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Trying::sm_1xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Trying::sm_2xx_response(sip_dialog_registerContext& context, bool unreg)
{
if (unreg == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
}
else if (unreg == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_register::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_register_Default::sm_2xx_response(context, unreg);
}
return;
}
void map_dialog_register_Trying::sm_3xx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_401_407_421_494_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_4xx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_5xx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_6xx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_cancelSent(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Trying::sm_xxx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Established::Entry(sip_dialog_registerContext& context)
{
sip_dialog_register& ctxt(context.getOwner());
ctxt.OnStateChanged(srs_registered);
return;
}
void map_dialog_register_Established::Default(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Established::sm_1xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Established::sm_2xx_response(sip_dialog_registerContext& context, bool unreg)
{
if (unreg == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
}
else if (unreg == false)
{
// No actions.
} else
{
map_dialog_register_Default::sm_2xx_response(context, unreg);
}
return;
}
void map_dialog_register_Established::sm_401_407_421_494_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Established::sm_unregisterSent(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Established::sm_xxx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Authentifying::Entry(sip_dialog_registerContext& context)
{
sip_dialog_register& ctxt(context.getOwner());
ctxt.OnStateChanged(srs_authentifying);
return;
}
void map_dialog_register_Authentifying::Default(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Authentifying::sm_1xx_response(sip_dialog_registerContext& context)
{
return;
}
void map_dialog_register_Authentifying::sm_2xx_response(sip_dialog_registerContext& context, bool unreg)
{
if (unreg == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
}
else if (unreg == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_register::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_register_Default::sm_2xx_response(context, unreg);
}
return;
}
void map_dialog_register_Authentifying::sm_authentificationSent(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Authentifying::sm_xxx_response(sip_dialog_registerContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_register::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_register_Terminated::Entry(sip_dialog_registerContext& context)
{
sip_dialog_register& ctxt(context.getOwner());
ctxt.OnStateChanged(srs_unregistered);
return;
}
void map_dialog_register_Terminated::Default(sip_dialog_registerContext& context)
{
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,278 +0,0 @@
#ifndef _H_SM_DIALOG_REGISTER_SM
#define _H_SM_DIALOG_REGISTER_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_register.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_register;
class map_dialog_register_Initialized;
class map_dialog_register_Trying;
class map_dialog_register_Established;
class map_dialog_register_Authentifying;
class map_dialog_register_Terminated;
class map_dialog_register_Default;
class sip_dialog_registerState;
class sip_dialog_registerContext;
class sip_dialog_register;
class sip_dialog_registerState :
public statemap::State
{
public:
sip_dialog_registerState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_registerContext&) {};
virtual void Exit(sip_dialog_registerContext&) {};
virtual void sm_1xx_response(sip_dialog_registerContext& context);
virtual void sm_2xx_response(sip_dialog_registerContext& context, bool unreg);
virtual void sm_3xx_response(sip_dialog_registerContext& context);
virtual void sm_401_407_421_494_response(sip_dialog_registerContext& context);
virtual void sm_4xx_response(sip_dialog_registerContext& context);
virtual void sm_5xx_response(sip_dialog_registerContext& context);
virtual void sm_6xx_response(sip_dialog_registerContext& context);
virtual void sm_authentificationSent(sip_dialog_registerContext& context);
virtual void sm_cancelSent(sip_dialog_registerContext& context);
virtual void sm_registerSent(sip_dialog_registerContext& context);
virtual void sm_unregisterSent(sip_dialog_registerContext& context);
virtual void sm_xxx_response(sip_dialog_registerContext& context);
protected:
virtual void Default(sip_dialog_registerContext& context);
};
class map_dialog_register
{
public:
static map_dialog_register_Initialized Initialized;
static map_dialog_register_Trying Trying;
static map_dialog_register_Established Established;
static map_dialog_register_Authentifying Authentifying;
static map_dialog_register_Terminated Terminated;
};
class map_dialog_register_Default :
public sip_dialog_registerState
{
public:
map_dialog_register_Default(const char *name, int stateId)
: sip_dialog_registerState(name, stateId)
{};
virtual void sm_401_407_421_494_response(sip_dialog_registerContext& context);
virtual void sm_3xx_response(sip_dialog_registerContext& context);
virtual void sm_4xx_response(sip_dialog_registerContext& context);
virtual void sm_5xx_response(sip_dialog_registerContext& context);
virtual void sm_6xx_response(sip_dialog_registerContext& context);
virtual void sm_xxx_response(sip_dialog_registerContext& context);
virtual void Default(sip_dialog_registerContext& context);
};
class map_dialog_register_Initialized :
public map_dialog_register_Default
{
public:
map_dialog_register_Initialized(const char *name, int stateId)
: map_dialog_register_Default(name, stateId)
{};
void Entry(sip_dialog_registerContext&);
void sm_registerSent(sip_dialog_registerContext& context);
};
class map_dialog_register_Trying :
public map_dialog_register_Default
{
public:
map_dialog_register_Trying(const char *name, int stateId)
: map_dialog_register_Default(name, stateId)
{};
void Entry(sip_dialog_registerContext&);
void Default(sip_dialog_registerContext& context);
void sm_1xx_response(sip_dialog_registerContext& context);
void sm_2xx_response(sip_dialog_registerContext& context, bool unreg);
void sm_3xx_response(sip_dialog_registerContext& context);
void sm_401_407_421_494_response(sip_dialog_registerContext& context);
void sm_4xx_response(sip_dialog_registerContext& context);
void sm_5xx_response(sip_dialog_registerContext& context);
void sm_6xx_response(sip_dialog_registerContext& context);
void sm_cancelSent(sip_dialog_registerContext& context);
void sm_xxx_response(sip_dialog_registerContext& context);
};
class map_dialog_register_Established :
public map_dialog_register_Default
{
public:
map_dialog_register_Established(const char *name, int stateId)
: map_dialog_register_Default(name, stateId)
{};
void Entry(sip_dialog_registerContext&);
void Default(sip_dialog_registerContext& context);
void sm_1xx_response(sip_dialog_registerContext& context);
void sm_2xx_response(sip_dialog_registerContext& context, bool unreg);
void sm_401_407_421_494_response(sip_dialog_registerContext& context);
void sm_unregisterSent(sip_dialog_registerContext& context);
void sm_xxx_response(sip_dialog_registerContext& context);
};
class map_dialog_register_Authentifying :
public map_dialog_register_Default
{
public:
map_dialog_register_Authentifying(const char *name, int stateId)
: map_dialog_register_Default(name, stateId)
{};
void Entry(sip_dialog_registerContext&);
void Default(sip_dialog_registerContext& context);
void sm_1xx_response(sip_dialog_registerContext& context);
void sm_2xx_response(sip_dialog_registerContext& context, bool unreg);
void sm_authentificationSent(sip_dialog_registerContext& context);
void sm_xxx_response(sip_dialog_registerContext& context);
};
class map_dialog_register_Terminated :
public map_dialog_register_Default
{
public:
map_dialog_register_Terminated(const char *name, int stateId)
: map_dialog_register_Default(name, stateId)
{};
void Entry(sip_dialog_registerContext&);
void Default(sip_dialog_registerContext& context);
};
class sip_dialog_registerContext :
public statemap::FSMContext
{
public:
sip_dialog_registerContext(sip_dialog_register& owner)
: FSMContext(map_dialog_register::Initialized),
_owner(owner)
{};
sip_dialog_registerContext(sip_dialog_register& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_register& getOwner() const
{
return (_owner);
};
sip_dialog_registerState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_registerState&>(*_state));
};
void sm_1xx_response()
{
(getState()).sm_1xx_response(*this);
};
void sm_2xx_response(bool unreg)
{
(getState()).sm_2xx_response(*this, unreg);
};
void sm_3xx_response()
{
(getState()).sm_3xx_response(*this);
};
void sm_401_407_421_494_response()
{
(getState()).sm_401_407_421_494_response(*this);
};
void sm_4xx_response()
{
(getState()).sm_4xx_response(*this);
};
void sm_5xx_response()
{
(getState()).sm_5xx_response(*this);
};
void sm_6xx_response()
{
(getState()).sm_6xx_response(*this);
};
void sm_authentificationSent()
{
(getState()).sm_authentificationSent(*this);
};
void sm_cancelSent()
{
(getState()).sm_cancelSent(*this);
};
void sm_registerSent()
{
(getState()).sm_registerSent(*this);
};
void sm_unregisterSent()
{
(getState()).sm_unregisterSent(*this);
};
void sm_xxx_response()
{
(getState()).sm_xxx_response(*this);
};
private:
sip_dialog_register& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_REGISTER_SM

View File

@ -1,574 +0,0 @@
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_subscribe.sm
*/
///**
//* @file
//* @author xxxyyyzzz <imsframework(at)gmail.com>
//* @version 1.0
//*
//* @section LICENSE
//*
//*
//* This file is part of Open Source Doubango IMS Client Framework project.
//*
//* DOUBANGO is free software: you can redistribute it and/or modify
//* it under the terms of the GNU General Public License as published by
//* the Free Software Foundation, either version 3 of the License, or
//* (at your option) any later version.
//*
//* DOUBANGO is distributed in the hope that it will be useful,
//* but WITHOUT ANY WARRANTY; without even the implied warranty of
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//* GNU Lesser General Public License for more details.
//*
//* You should have received a copy of the GNU General Public License
//* along with DOUBANGO.
//*
//* @section DESCRIPTION
//*
//*
//*/
#include "sip_dialog_subscribe.h"
#include "..\..\doubango\src\sm_dialog_subscribe_sm.h"
using namespace statemap;
namespace dgo
{
// Static class declarations.
map_dialog_subscribe_Initialized map_dialog_subscribe::Initialized("map_dialog_subscribe::Initialized", 0);
map_dialog_subscribe_Trying map_dialog_subscribe::Trying("map_dialog_subscribe::Trying", 1);
map_dialog_subscribe_Established map_dialog_subscribe::Established("map_dialog_subscribe::Established", 2);
map_dialog_subscribe_Authentifying map_dialog_subscribe::Authentifying("map_dialog_subscribe::Authentifying", 3);
map_dialog_subscribe_Terminated map_dialog_subscribe::Terminated("map_dialog_subscribe::Terminated", 4);
void sip_dialog_subscribeState::sm_1xx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_3xx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_401_407_421_494_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_4xx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_5xx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_6xx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_authentificationSent(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_cancelSent(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_notify_response(sip_dialog_subscribeContext& context, bool term)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_subscribeSent(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_unsubscribeSent(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::sm_xxx_response(sip_dialog_subscribeContext& context)
{
Default(context);
return;
}
void sip_dialog_subscribeState::Default(sip_dialog_subscribeContext& context)
{
assert(1==0);
return;
}
void map_dialog_subscribe_Default::sm_401_407_421_494_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Default::sm_3xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Default::sm_4xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Default::sm_5xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Default::sm_6xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Default::sm_xxx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Default::Default(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Initialized::Entry(sip_dialog_subscribeContext& context)
{
sip_dialog_subscribe& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_SUBSCRIBE_INITIALIZED);
return;
}
void map_dialog_subscribe_Initialized::sm_subscribeSent(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::Entry(sip_dialog_subscribeContext& context)
{
sip_dialog_subscribe& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_SUBSCRIBE_TRYING);
return;
}
void map_dialog_subscribe_Trying::Default(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Trying::sm_1xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Trying::sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub)
{
if (unsub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
}
else if (unsub == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_subscribe::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_subscribe_Default::sm_2xx_response(context, unsub);
}
return;
}
void map_dialog_subscribe_Trying::sm_3xx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_401_407_421_494_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_4xx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_5xx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_6xx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_cancelSent(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Trying::sm_notify_response(sip_dialog_subscribeContext& context, bool term)
{
sip_dialog_subscribe& ctxt(context.getOwner());
if (term == true)
{
(context.getState()).Exit(context);
context.clearState();
try
{
ctxt.OnStateChanged(SS_SUBSCRIBE_NOTIFIED);
context.setState(map_dialog_subscribe::Terminated);
}
catch (...)
{
context.setState(map_dialog_subscribe::Terminated);
}
(context.getState()).Entry(context);
}
else if (term == false)
{
sip_dialog_subscribeState& endState = context.getState();
context.clearState();
try
{
ctxt.OnStateChanged(SS_SUBSCRIBE_NOTIFIED);
context.setState(endState);
}
catch (...)
{
context.setState(endState);
}
} else
{
map_dialog_subscribe_Default::sm_notify_response(context, term);
}
return;
}
void map_dialog_subscribe_Trying::sm_xxx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Established::Entry(sip_dialog_subscribeContext& context)
{
sip_dialog_subscribe& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_SUBSCRIBE_ESTABLISHED);
return;
}
void map_dialog_subscribe_Established::Default(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Established::sm_1xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Established::sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub)
{
if (unsub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
}
else if (unsub == false)
{
// No actions.
} else
{
map_dialog_subscribe_Default::sm_2xx_response(context, unsub);
}
return;
}
void map_dialog_subscribe_Established::sm_401_407_421_494_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Authentifying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Established::sm_notify_response(sip_dialog_subscribeContext& context, bool term)
{
sip_dialog_subscribe& ctxt(context.getOwner());
if (term == true)
{
(context.getState()).Exit(context);
context.clearState();
try
{
ctxt.OnStateChanged(SS_SUBSCRIBE_NOTIFIED);
context.setState(map_dialog_subscribe::Terminated);
}
catch (...)
{
context.setState(map_dialog_subscribe::Terminated);
}
(context.getState()).Entry(context);
}
else if (term == false)
{
sip_dialog_subscribeState& endState = context.getState();
context.clearState();
try
{
ctxt.OnStateChanged(SS_SUBSCRIBE_NOTIFIED);
context.setState(endState);
}
catch (...)
{
context.setState(endState);
}
} else
{
map_dialog_subscribe_Default::sm_notify_response(context, term);
}
return;
}
void map_dialog_subscribe_Established::sm_unsubscribeSent(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Established::sm_xxx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Authentifying::Entry(sip_dialog_subscribeContext& context)
{
sip_dialog_subscribe& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_SUBSCRIBE_AUTHENTIFYING);
return;
}
void map_dialog_subscribe_Authentifying::Default(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Authentifying::sm_1xx_response(sip_dialog_subscribeContext& context)
{
return;
}
void map_dialog_subscribe_Authentifying::sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub)
{
if (unsub == true)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
}
else if (unsub == false)
{
(context.getState()).Exit(context);
// No actions.
context.setState(map_dialog_subscribe::Established);
(context.getState()).Entry(context);
} else
{
map_dialog_subscribe_Default::sm_2xx_response(context, unsub);
}
return;
}
void map_dialog_subscribe_Authentifying::sm_authentificationSent(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Trying);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Authentifying::sm_xxx_response(sip_dialog_subscribeContext& context)
{
(context.getState()).Exit(context);
context.setState(map_dialog_subscribe::Terminated);
(context.getState()).Entry(context);
return;
}
void map_dialog_subscribe_Terminated::Entry(sip_dialog_subscribeContext& context)
{
sip_dialog_subscribe& ctxt(context.getOwner());
ctxt.OnStateChanged(SS_SUBSCRIBE_TERMINATED);
return;
}
void map_dialog_subscribe_Terminated::Default(sip_dialog_subscribeContext& context)
{
return;
}
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/

View File

@ -1,286 +0,0 @@
#ifndef _H_SM_DIALOG_SUBSCRIBE_SM
#define _H_SM_DIALOG_SUBSCRIBE_SM
/*
* ex: set ro:
* DO NOT EDIT.
* generated by smc (http://smc.sourceforge.net/)
* from file : sm_dialog_subscribe.sm
*/
#define SMC_USES_IOSTREAMS
#define SMC_NO_EXCEPTIONS
#include <statemap.h>
namespace dgo
{
// Forward declarations.
class map_dialog_subscribe;
class map_dialog_subscribe_Initialized;
class map_dialog_subscribe_Trying;
class map_dialog_subscribe_Established;
class map_dialog_subscribe_Authentifying;
class map_dialog_subscribe_Terminated;
class map_dialog_subscribe_Default;
class sip_dialog_subscribeState;
class sip_dialog_subscribeContext;
class sip_dialog_subscribe;
class sip_dialog_subscribeState :
public statemap::State
{
public:
sip_dialog_subscribeState(const char *name, int stateId)
: statemap::State(name, stateId)
{};
virtual void Entry(sip_dialog_subscribeContext&) {};
virtual void Exit(sip_dialog_subscribeContext&) {};
virtual void sm_1xx_response(sip_dialog_subscribeContext& context);
virtual void sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub);
virtual void sm_3xx_response(sip_dialog_subscribeContext& context);
virtual void sm_401_407_421_494_response(sip_dialog_subscribeContext& context);
virtual void sm_4xx_response(sip_dialog_subscribeContext& context);
virtual void sm_5xx_response(sip_dialog_subscribeContext& context);
virtual void sm_6xx_response(sip_dialog_subscribeContext& context);
virtual void sm_authentificationSent(sip_dialog_subscribeContext& context);
virtual void sm_cancelSent(sip_dialog_subscribeContext& context);
virtual void sm_notify_response(sip_dialog_subscribeContext& context, bool term);
virtual void sm_subscribeSent(sip_dialog_subscribeContext& context);
virtual void sm_unsubscribeSent(sip_dialog_subscribeContext& context);
virtual void sm_xxx_response(sip_dialog_subscribeContext& context);
protected:
virtual void Default(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe
{
public:
static map_dialog_subscribe_Initialized Initialized;
static map_dialog_subscribe_Trying Trying;
static map_dialog_subscribe_Established Established;
static map_dialog_subscribe_Authentifying Authentifying;
static map_dialog_subscribe_Terminated Terminated;
};
class map_dialog_subscribe_Default :
public sip_dialog_subscribeState
{
public:
map_dialog_subscribe_Default(const char *name, int stateId)
: sip_dialog_subscribeState(name, stateId)
{};
virtual void sm_401_407_421_494_response(sip_dialog_subscribeContext& context);
virtual void sm_3xx_response(sip_dialog_subscribeContext& context);
virtual void sm_4xx_response(sip_dialog_subscribeContext& context);
virtual void sm_5xx_response(sip_dialog_subscribeContext& context);
virtual void sm_6xx_response(sip_dialog_subscribeContext& context);
virtual void sm_xxx_response(sip_dialog_subscribeContext& context);
virtual void Default(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe_Initialized :
public map_dialog_subscribe_Default
{
public:
map_dialog_subscribe_Initialized(const char *name, int stateId)
: map_dialog_subscribe_Default(name, stateId)
{};
void Entry(sip_dialog_subscribeContext&);
void sm_subscribeSent(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe_Trying :
public map_dialog_subscribe_Default
{
public:
map_dialog_subscribe_Trying(const char *name, int stateId)
: map_dialog_subscribe_Default(name, stateId)
{};
void Entry(sip_dialog_subscribeContext&);
void Default(sip_dialog_subscribeContext& context);
void sm_1xx_response(sip_dialog_subscribeContext& context);
void sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub);
void sm_3xx_response(sip_dialog_subscribeContext& context);
void sm_401_407_421_494_response(sip_dialog_subscribeContext& context);
void sm_4xx_response(sip_dialog_subscribeContext& context);
void sm_5xx_response(sip_dialog_subscribeContext& context);
void sm_6xx_response(sip_dialog_subscribeContext& context);
void sm_cancelSent(sip_dialog_subscribeContext& context);
void sm_notify_response(sip_dialog_subscribeContext& context, bool term);
void sm_xxx_response(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe_Established :
public map_dialog_subscribe_Default
{
public:
map_dialog_subscribe_Established(const char *name, int stateId)
: map_dialog_subscribe_Default(name, stateId)
{};
void Entry(sip_dialog_subscribeContext&);
void Default(sip_dialog_subscribeContext& context);
void sm_1xx_response(sip_dialog_subscribeContext& context);
void sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub);
void sm_401_407_421_494_response(sip_dialog_subscribeContext& context);
void sm_notify_response(sip_dialog_subscribeContext& context, bool term);
void sm_unsubscribeSent(sip_dialog_subscribeContext& context);
void sm_xxx_response(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe_Authentifying :
public map_dialog_subscribe_Default
{
public:
map_dialog_subscribe_Authentifying(const char *name, int stateId)
: map_dialog_subscribe_Default(name, stateId)
{};
void Entry(sip_dialog_subscribeContext&);
void Default(sip_dialog_subscribeContext& context);
void sm_1xx_response(sip_dialog_subscribeContext& context);
void sm_2xx_response(sip_dialog_subscribeContext& context, bool unsub);
void sm_authentificationSent(sip_dialog_subscribeContext& context);
void sm_xxx_response(sip_dialog_subscribeContext& context);
};
class map_dialog_subscribe_Terminated :
public map_dialog_subscribe_Default
{
public:
map_dialog_subscribe_Terminated(const char *name, int stateId)
: map_dialog_subscribe_Default(name, stateId)
{};
void Entry(sip_dialog_subscribeContext&);
void Default(sip_dialog_subscribeContext& context);
};
class sip_dialog_subscribeContext :
public statemap::FSMContext
{
public:
sip_dialog_subscribeContext(sip_dialog_subscribe& owner)
: FSMContext(map_dialog_subscribe::Initialized),
_owner(owner)
{};
sip_dialog_subscribeContext(sip_dialog_subscribe& owner, const statemap::State& state)
: FSMContext(state),
_owner(owner)
{};
virtual void enterStartState()
{
getState().Entry(*this);
return;
}
sip_dialog_subscribe& getOwner() const
{
return (_owner);
};
sip_dialog_subscribeState& getState() const
{
if (_state == NULL)
{
assert(1 == 0);
}
return (dynamic_cast<sip_dialog_subscribeState&>(*_state));
};
void sm_1xx_response()
{
(getState()).sm_1xx_response(*this);
};
void sm_2xx_response(bool unsub)
{
(getState()).sm_2xx_response(*this, unsub);
};
void sm_3xx_response()
{
(getState()).sm_3xx_response(*this);
};
void sm_401_407_421_494_response()
{
(getState()).sm_401_407_421_494_response(*this);
};
void sm_4xx_response()
{
(getState()).sm_4xx_response(*this);
};
void sm_5xx_response()
{
(getState()).sm_5xx_response(*this);
};
void sm_6xx_response()
{
(getState()).sm_6xx_response(*this);
};
void sm_authentificationSent()
{
(getState()).sm_authentificationSent(*this);
};
void sm_cancelSent()
{
(getState()).sm_cancelSent(*this);
};
void sm_notify_response(bool term)
{
(getState()).sm_notify_response(*this, term);
};
void sm_subscribeSent()
{
(getState()).sm_subscribeSent(*this);
};
void sm_unsubscribeSent()
{
(getState()).sm_unsubscribeSent(*this);
};
void sm_xxx_response()
{
(getState()).sm_xxx_response(*this);
};
private:
sip_dialog_subscribe& _owner;
};
}
/*
* Local variables:
* buffer-read-only: t
* End:
*/
#endif // _H_SM_DIALOG_SUBSCRIBE_SM

View File

@ -1,14 +0,0 @@
set ROOT_DIR=..\..
set SMC_HOME=%ROOT_DIR%\SMC_6_0_0
set SM_DIR=%ROOT_DIR%\doubango\sm
set SRC_DIR=%ROOT_DIR%\doubango\src
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_info.sm
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_invite.sm
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_message.sm
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_options.sm
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_publish.sm
java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_register.sm
rem java -jar %SMC_HOME%\Smc.jar -c++ -suffix cxx -verbose -noex -d %SRC_DIR% %SM_DIR%\sm_dialog_subscribe.sm
pause

View File

@ -1,878 +0,0 @@
#ifndef _H_STATEMAP
#define _H_STATEMAP
//
// The contents of this file are subject to the Mozilla Public
// License Version 1.1 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy
// of the License at http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an
// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
// implied. See the License for the specific language governing
// rights and limitations under the License.
//
// The Original Code is State Machine Compiler (SMC).
//
// The Initial Developer of the Original Code is Charles W. Rapp.
// Portions created by Charles W. Rapp are
// Copyright (C) 2000 - 2007. Charles W. Rapp.
// All Rights Reserved.
//
// Contributor(s):
//
// Namespace
// statemap
//
// Description
// This namespace contains the finite state machine context
// class. The user can derive FSM contexts from this class and
// interface to them with the methods of this class.
//
// Notes
// The finite state machine needs to be initialized to the
// starting state of the FSM. This must be done manually in
// the constructor of the derived class.
//
// Author
// C. W. Rapp
//
// RCS ID
// $Id: statemap.h,v 1.14 2009/03/01 18:20:40 cwrapp Exp $
//
// CHANGE LOG
// (See bottom of file)
//
#include "pref.h"
#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
#include <iostream>
#if defined(SMC_NO_EXCEPTIONS)
#include <cassert>
#endif // SMC_NO_EXCEPTIONS
#include <cstdio>
#elif defined(WIN32)
#include <iostream>
#include <windows.h>
#if defined(SMC_NO_EXCEPTIONS)
#include <cassert>
#endif // SMC_NO_EXCEPTIONS
#else
#include <iostream.h>
#if defined(SMC_NO_EXCEPTIONS)
#include <assert.h>
#endif // SMC_NO_EXCEPTIONS
#include <stdio.h>
#endif
#if ! defined(SMC_NO_EXCEPTIONS)
#include <stdexcept>
#include <cstring>
#endif
// Limit names to 100 ASCII characters.
// Why 100? Because it is a round number.
#define MAX_NAME_LEN 100
namespace statemap
{
//---------------------------------------------------------------
// Routines.
//
inline char* copyString(const char *s)
{
char *retval = NULL;
if (s != NULL)
{
retval = new char[MAX_NAME_LEN + 1];
retval[MAX_NAME_LEN] = '\0';
(void) std::strncpy(retval, s, MAX_NAME_LEN);
}
return (retval);
}
//---------------------------------------------------------------
// Exception Classes.
//
#ifndef SMC_NO_EXCEPTIONS
// Base class for all SMC exceptions.
class SmcException :
public std::runtime_error
{
//-----------------------------------------------------------
// Member methods
//
public:
// Destructor.
virtual ~SmcException() throw()
{};
protected:
// Constructor.
SmcException(const std::string& reason)
: std::runtime_error(reason)
{};
private:
// Default construction not allowed.
SmcException();
//-----------------------------------------------------------
// Member data.
//
public:
protected:
private:
};
// This class is thrown when a pop is issued on an empty
// state stack.
class PopOnEmptyStateStackException :
public SmcException
{
//-----------------------------------------------------------
// Member methods.
//
public:
// Default constructor.
PopOnEmptyStateStackException()
: SmcException("no state to pop from state stack")
{};
// Destructor.
virtual ~PopOnEmptyStateStackException() throw()
{};
protected:
private:
//-----------------------------------------------------------
// Member data.
//
public:
protected:
private:
};
// This class is thrown when a transition is issued
// but there is no current state. This happens when
// a transition is issued from within a transition
// action.
class StateUndefinedException :
public SmcException
{
//-----------------------------------------------------------
// Member methods.
//
public:
// Default constructor.
StateUndefinedException()
: SmcException("transition invoked while in transition")
{};
// Destructor.
virtual ~StateUndefinedException() throw()
{};
protected:
private:
//-----------------------------------------------------------
// Member data.
//
public:
protected:
private:
};
// This class is thrown when a transition is issued
// but there is no code to handle it.
class TransitionUndefinedException :
public SmcException
{
//-----------------------------------------------------------
// Member methods.
//
public:
// Default constructor.
TransitionUndefinedException()
: SmcException("no such transition in current state"),
_state(NULL),
_transition(NULL)
{};
// Construct an exception using the specified state
// and transition.
TransitionUndefinedException(const char *state,
const char *transition)
: SmcException("no such transition in current state"),
_state(copyString(state)),
_transition(copyString(transition))
{};
// Copy constructor.
TransitionUndefinedException(
const TransitionUndefinedException& ex)
: SmcException("no such transition in current state"),
_state(copyString(ex._state)),
_transition(copyString(ex._transition))
{};
// Destructor.
virtual ~TransitionUndefinedException() throw()
{
if (_state != NULL)
{
delete[] _state;
_state = NULL;
}
if (_transition != NULL)
{
delete[] _transition;
_transition = NULL;
}
};
// Assignment operator.
const TransitionUndefinedException&
operator=(const TransitionUndefinedException& ex)
{
// Don't do self assignment.
if (this != &ex)
{
if (_state != NULL)
{
delete[] _state;
_state = NULL;
}
if (_transition != NULL)
{
delete[] _transition;
_transition = NULL;
}
_state = copyString(ex._state);
_transition = copyString(ex._transition);
}
return (*this);
};
// Returns the state. May be NULL.
const char* getState() const
{
return(_state);
};
// Returns the transition. May be NULL.
const char* getTransition() const
{
return (_transition);
};
protected:
private:
//-----------------------------------------------------------
// Member data.
//
public:
protected:
private:
char *_state;
char *_transition;
};
// This class is thrown when a state ID is either less than
// the minimal value or greater than the maximal value.
class IndexOutOfBoundsException :
public SmcException
{
//-----------------------------------------------------------
// Member methods.
//
public:
// Default constructor.
IndexOutOfBoundsException()
: SmcException("index out of bounds"),
_index(0),
_minIndex(0),
_maxIndex(0)
{};
// Constructs an exception using the specified index,
// minimum index and maximum index.
IndexOutOfBoundsException(const int index,
const int minIndex,
const int maxIndex)
: SmcException("index out of bounds"),
_index(index),
_minIndex(minIndex),
_maxIndex(maxIndex)
{};
// Copy constructor.
IndexOutOfBoundsException(
const IndexOutOfBoundsException& ex)
: SmcException("index out of bounds"),
_index(ex._index),
_minIndex(ex._minIndex),
_maxIndex(ex._maxIndex)
{};
// Destructor.
virtual ~IndexOutOfBoundsException() throw()
{};
// Assignment operator.
const IndexOutOfBoundsException&
operator=(const IndexOutOfBoundsException& ex)
{
// Don't do self assignment.
if (this != &ex)
{
_index = ex._index;
_minIndex = ex._minIndex;
_maxIndex = ex._maxIndex;
}
return (*this);
};
// Returns the out-of-bounds index.
int getIndex() const
{
return(_index);
};
// Returns the minimum allowed index value.
int getMinIndex() const
{
return (_minIndex);
};
// Returns the maximum allowed index value.
int getMaxIndex() const
{
return (_maxIndex);
};
protected:
private:
//-----------------------------------------------------------
// Member data.
//
public:
protected:
private:
int _index;
int _minIndex;
int _maxIndex;
};
#endif // !SMC_NO_EXCEPTIONS
//
// end of Exception Classes.
//---------------------------------------------------------------
class State
{
//-----------------------------------------------------------
// Member functions.
//
public:
const char* getName() const
{
return (_name);
};
int getId() const
{
return (_stateId);
}
protected:
State(const char *name, int stateId)
: _name(NULL),
_stateId(stateId)
{
if (name != NULL)
{
_name = copyString(name);
}
else
{
_name = copyString("NAME NOT SET");
}
};
virtual ~State()
{
if (_name != NULL)
{
delete[] _name;
_name = NULL;
}
};
private:
// Make the default and copy constructors private to
// prevent their use.
State() {};
State(const State&) {};
//-----------------------------------------------------------
// Member data.
//
public:
protected:
// This state's printable name.
char *_name;
// This state's unique identifier.
int _stateId;
private:
};
class FSMContext
{
//-----------------------------------------------------------
// Nested classes.
//
public:
protected:
private:
// Implements the state stack.
class StateEntry
{
//-------------------------------------------------------
// Member functions.
//
public:
StateEntry(State *state, StateEntry *next)
: _state(state),
_next(next)
{};
~StateEntry()
{
_state = NULL;
_next = NULL;
};
State* getState()
{
return(_state);
};
StateEntry* getNext()
{
return(_next);
};
protected:
private:
//-------------------------------------------------------
// Member data.
//
public:
protected:
private:
State *_state;
StateEntry *_next;
//-------------------------------------------------------
// Friends
//
friend class FSMContext;
}; // end of class StateEntry
//-----------------------------------------------------------
// Member functions
//
public:
// Destructor.
virtual ~FSMContext()
{
StateEntry *state;
if (_transition != NULL)
{
delete[] _transition;
_transition = NULL;
}
// But we did allocate the state stack.
while (_state_stack != NULL)
{
state = _state_stack;
_state_stack = _state_stack->_next;
delete state;
}
};
// Comparison and assignment operators
// Assignment operator
FSMContext& operator=(const FSMContext& fsm)
{
// Don't do the assignment if the left and right
// hand sides are the same object.
if (this != &fsm)
{
_state = fsm._state;
}
return(*this);
};
// Starts the finite state machine running by executing
// the initial state's entry actions.
virtual void enterStartState()=0;
// Exact same object (is it me?)
int same(const FSMContext& fsm) const
{
return(this == &fsm);
};
// Returns the debug flag's current setting.
bool getDebugFlag()
{
return(_debug_flag);
};
// Sets the debug flag. A true value means debugging
// is on and false means off.
void setDebugFlag(bool flag)
{
_debug_flag = flag;
return;
};
#ifdef SMC_USES_IOSTREAMS
// Returns the stream to which debug output is written.
std::ostream& getDebugStream()
{
return (*_debug_stream);
};
// Sets the debug output stream.
void setDebugStream(std::ostream& debug_stream)
{
_debug_stream = &debug_stream;
return;
}
#endif // SMC_USES_IOSTREAMS
// Is this state machine already inside a transition?
// Yes if state is null.
bool isInTransition() const
{
return(_state == NULL ? true : false);
};
// Returns the current transition's name.
// Used only for debugging purposes.
char* getTransition()
{
return (_transition);
};
// Saves away the transition name only if debugging
// is turned on.
void setTransition(const char *transition)
{
if (_transition != NULL)
{
delete[] _transition;
_transition = NULL;
}
_transition = copyString(transition);
return;
};
// Clears the current state.
void clearState()
{
_previous_state = _state;
_state = NULL;
};
// Returns the state which a transition left.
// May be NULL.
State* getPreviousState()
{
return (_previous_state);
}
// Sets the current state to the specified state.
void setState(const State& state)
{
_state = const_cast<State *>(&state);
if (_debug_flag == true)
{
#ifdef SMC_USES_IOSTREAMS
*_debug_stream << "NEW STATE : "
<< _state->getName()
<< std::endl;
#else
TRACE("NEW STATE : %s\n\r",
_state->getName());
#endif // SMC_USES_IOSTREAMS
}
};
// Returns true if the state stack is empty and false
// otherwise.
bool isStateStackEmpty() const
{
return (_state_stack == NULL);
}
// Returns the state stack's depth.
int getStateStackDepth() const
{
StateEntry *state_ptr;
int retval;
for (state_ptr = _state_stack, retval = 0;
state_ptr != NULL;
state_ptr = state_ptr->getNext(), ++retval)
;
return (retval);
}
// Push the current state on top of the state stack
// and make the specified state the current state.
void pushState(const State& state)
{
StateEntry *new_entry;
// Do the push only if there is a state to be pushed
// on the stack.
if (_state != NULL)
{
new_entry = new StateEntry(_state, _state_stack);
_state_stack = new_entry;
}
_state = const_cast<State *>(&state);
if (_debug_flag == true)
{
#ifdef SMC_USES_IOSTREAMS
*_debug_stream << "PUSH TO STATE: "
<< _state->getName()
<< std::endl;
#else
TRACE("PUSH TO STATE: %s\n\r",
_state->getName());
#endif // SMC_USES_IOSTREAMS
}
};
// Make the state on top of the state stack the
// current state.
void popState()
{
StateEntry *entry;
// Popping when there was no previous push is an error.
#ifdef SMC_NO_EXCEPTIONS
assert(_state_stack != NULL);
#else
if (_state_stack == NULL)
{
throw PopOnEmptyStateStackException();
}
#endif // SMC_NO_EXCEPTIONS
_state = _state_stack->getState();
entry = _state_stack;
_state_stack = _state_stack->getNext();
delete entry;
if (_debug_flag == true)
{
#ifdef SMC_USES_IOSTREAMS
*_debug_stream << "POP TO STATE : "
<< _state->getName()
<< std::endl;
#else
TRACE("POP TO STATE : %s\n\r",
_state->getName());
#endif // SMC_USES_IOSTREAMS
}
};
// Remove all states from the state stack.
void emptyStateStack()
{
StateEntry *state_ptr,
*next_ptr;
for (state_ptr = _state_stack;
state_ptr != NULL;
state_ptr = next_ptr)
{
next_ptr = state_ptr->getNext();
delete state_ptr;
}
_state_stack = NULL;
};
protected:
// Default constructor.
FSMContext(const State& state)
: _state(const_cast<State *>(&state)),
_previous_state(NULL),
_state_stack(NULL),
_transition(NULL),
#ifdef SMC_USES_IOSTREAMS
_debug_flag(false),
_debug_stream(&std::cerr)
#else
_debug_flag(false)
#endif // SMC_USES_IOSTREAMS
{};
private:
// I don't believe that it makes sense to copy a
// context. It may make sense to copy the application
// class but the new object is *not* in the same
// state as the old - the new object must start in
// the FSM's initial state. Therefore, the copy
// constructor is private in order to prevent it
// being used.
FSMContext(const FSMContext&)
{};
//-----------------------------------------------------------
// Member data
//
public:
protected:
// The current state of the finite state machine.
State *_state;
// Remember which state a transition left.
State *_previous_state;
// The stack of pushed states.
StateEntry *_state_stack;
// The current transition *name*. Use for debugging
// purposes.
char *_transition;
private:
// When this flag is set to true, this class will print
// out debug messages.
bool _debug_flag;
// Include the following only if C++ iostreams are being used.
#ifdef SMC_USES_IOSTREAMS
// When FSM debugging is on, debug messages will be
// written to this output stream. This stream is set to
// standard error by default.
std::ostream *_debug_stream;
#endif // SMC_USES_IOSTREAMS
}; // end of class FSMContext
}
//
// CHANGE LOG
// $Log: statemap.h,v $
// Revision 1.14 2009/03/01 18:20:40 cwrapp
// Preliminary v. 6.0.0 commit.
//
// Revision 1.13 2008/05/20 18:31:12 cwrapp
// ----------------------------------------------------------------------
//
// Committing release 5.1.0.
//
// Modified Files:
// Makefile README.txt smc.mk tar_list.txt bin/Smc.jar
// examples/Ant/EX1/build.xml examples/Ant/EX2/build.xml
// examples/Ant/EX3/build.xml examples/Ant/EX4/build.xml
// examples/Ant/EX5/build.xml examples/Ant/EX6/build.xml
// examples/Ant/EX7/build.xml examples/Ant/EX7/src/Telephone.java
// examples/Java/EX1/Makefile examples/Java/EX4/Makefile
// examples/Java/EX5/Makefile examples/Java/EX6/Makefile
// examples/Java/EX7/Makefile examples/Ruby/EX1/Makefile
// lib/statemap.jar lib/C++/statemap.h lib/Java/Makefile
// lib/Php/statemap.php lib/Scala/Makefile
// lib/Scala/statemap.scala net/sf/smc/CODE_README.txt
// net/sf/smc/README.txt net/sf/smc/Smc.java
// ----------------------------------------------------------------------
//
// Revision 1.12 2007/12/28 12:34:40 cwrapp
// Version 5.0.1 check-in.
//
// Revision 1.11 2007/08/05 12:58:54 cwrapp
// Version 5.0.1 check-in. See net/sf/smc/CODE_README.txt for more information.
//
// Revision 1.10 2007/01/15 00:23:50 cwrapp
// Release 4.4.0 initial commit.
//
// Revision 1.9 2006/07/11 18:28:22 cwrapp
// Move SmcException::copyString() to a package-wide routine.
//
// Revision 1.8 2006/04/22 12:45:24 cwrapp
// Version 4.3.1
//
// Revision 1.7 2005/06/08 11:09:14 cwrapp
// + Updated Python code generator to place "pass" in methods with empty
// bodies.
// + Corrected FSM errors in Python example 7.
// + Removed unnecessary includes from C++ examples.
// + Corrected errors in top-level makefile's distribution build.
//
// Revision 1.6 2005/05/28 18:44:13 cwrapp
// Updated C++, Java and Tcl libraries, added CSharp, Python and VB.
//
// Revision 1.2 2005/02/21 19:01:42 charlesr
// Changed State::_id to State::_stateId because of Object-C++
// reserved word conflict.
//
// Revision 1.1 2004/05/31 13:44:41 charlesr
// Added support for non-iostreams output.
//
// Revision 1.0 2003/12/14 20:37:49 charlesr
// Initial revision
#endif

View File

@ -1,39 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#include "strutils.h"
#ifdef WIN32
# define snprintf _snprintf
#endif
std::string itoa(int64_t i){
char buffer[30]; memset(buffer, '\0', 30);
snprintf(buffer, 30, "%lld",i);
return std::string(buffer);
}

View File

@ -1,39 +0,0 @@
/**
* @file
* @author xxxyyyzzz <imsframework(at)gmail.com>
* @version 1.0
*
* @section LICENSE
*
*
* This file is part of Open Source Doubango IMS Client Framework project.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
* @section DESCRIPTION
*
*
*/
#ifndef __DOUBANGO_STRUTILS_H__
#define __DOUBANGO_STRUTILS_H__
#include "pref.h"
#include <string>
#include <iostream>
#include <sofia-sip/su_types.h>
std::string itoa(int64_t i);
#endif /* __DOUBANGO_STRUTILS_H__ */

View File

@ -1,26 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doubs", "doubs\doubs.vcproj", "{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdoubs", "libdoubs\libdoubs.vcproj", "{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}.Debug|Win32.ActiveCfg = Debug|Win32
{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}.Debug|Win32.Build.0 = Debug|Win32
{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}.Release|Win32.ActiveCfg = Release|Win32
{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}.Release|Win32.Build.0 = Release|Win32
{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}.Debug|Win32.ActiveCfg = Debug|Win32
{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}.Debug|Win32.Build.0 = Debug|Win32
{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}.Release|Win32.ActiveCfg = Release|Win32
{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -1,81 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'doubs.h'
**
** Created: Wed Oct 28 02:11:54 2009
** by: The Qt Meta Object Compiler version 62 (Qt 4.6.0)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../../doubs.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'doubs.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 62
#error "This file was generated using the moc from 4.6.0. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_doubs[] = {
// content:
4, // revision
0, // classname
0, 0, // classinfo
2, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: signature, parameters, type, tag, flags
7, 6, 6, 6, 0x08,
20, 6, 6, 6, 0x08,
0 // eod
};
static const char qt_meta_stringdata_doubs[] = {
"doubs\0\0slotOnline()\0slotBusy()\0"
};
const QMetaObject doubs::staticMetaObject = {
{ &QMainWindow::staticMetaObject, qt_meta_stringdata_doubs,
qt_meta_data_doubs, 0 }
};
#ifdef Q_NO_DATA_RELOCATION
const QMetaObject &doubs::getStaticMetaObject() { return staticMetaObject; }
#endif //Q_NO_DATA_RELOCATION
const QMetaObject *doubs::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
}
void *doubs::qt_metacast(const char *_clname)
{
if (!_clname) return 0;
if (!strcmp(_clname, qt_meta_stringdata_doubs))
return static_cast<void*>(const_cast< doubs*>(this));
return QMainWindow::qt_metacast(_clname);
}
int doubs::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: slotOnline(); break;
case 1: slotBusy(); break;
default: ;
}
_id -= 2;
}
return _id;
}
QT_END_MOC_NAMESPACE

View File

@ -1,380 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the tools applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
/****************************************************************************
** Resource object code
**
** Created: Wed Oct 28 02:11:54 2009
** by: The Resource Compiler for Qt version 4.6.0
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <QtCore/qglobal.h>
static const unsigned char qt_resource_data[] = {
// C:/projects/doubango/doubs/doubs/Images/splash.PNG
0x0,0x0,0x10,0x54,
0x89,
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
0x0,0x1,0x4b,0x0,0x0,0x0,0xe5,0x8,0x2,0x0,0x0,0x0,0x55,0xb4,0x42,0xe3,
0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,
0x0,0x0,0x10,0xb,0x49,0x44,0x41,0x54,0x78,0x5e,0xed,0x9d,0x4d,0x96,0xdb,0x36,
0x12,0x80,0xd9,0xb6,0xe3,0xdd,0x1c,0x2d,0xf7,0xc8,0x21,0xb2,0xf0,0x1,0x72,0x82,
0x5c,0x20,0xfb,0xec,0xb3,0xce,0x36,0xdb,0x2c,0xb3,0xcc,0xbc,0xcc,0xc4,0xf1,0xf8,
0xa7,0xdd,0x2d,0x89,0x53,0x92,0xda,0x7c,0x30,0xc0,0x9f,0x2a,0x8a,0xa5,0x86,0xa,
0x1f,0x9f,0x5e,0x62,0xb7,0xc1,0x12,0xeb,0x3,0x3e,0x16,0x8,0x52,0xea,0xbb,0x7e,
0xdf,0x77,0xe7,0xed,0xc5,0xa1,0xeb,0xf6,0x5d,0xb7,0xeb,0x3a,0xf9,0xc3,0x8b,0xee,
0x51,0xfe,0xf3,0xba,0xbb,0x7b,0xd9,0xf5,0xfd,0x61,0xbf,0xbb,0xbb,0xdb,0xdf,0x7d,
0xf3,0xb2,0xeb,0xee,0xba,0xdd,0xab,0xa7,0xf6,0xe9,0xff,0x24,0xc6,0xdd,0x97,0xbf,
0xcb,0x1f,0x4e,0x7f,0x4d,0x7f,0xf6,0xf4,0xaf,0x43,0x9b,0x2c,0xc4,0xf9,0x10,0xbe,
0xda,0x21,0x69,0x31,0xb5,0x97,0x34,0x99,0xf9,0xa7,0x91,0xa3,0x94,0xf4,0xe,0xfb,
0xee,0x98,0xf0,0xeb,0xee,0xe5,0xa1,0x7b,0x21,0x29,0xca,0x26,0xf9,0xbc,0x92,0x1f,
0x7d,0xba,0xef,0x5e,0xbf,0xdc,0xbf,0xea,0xde,0x75,0xfb,0x43,0xf7,0xfa,0x5f,0x92,
0xfc,0x5f,0xc7,0x76,0xdd,0x37,0xa7,0x16,0xe7,0xf7,0x7a,0xf1,0xe5,0x38,0x85,0xd0,
0x18,0x6,0xeb,0xf1,0x8c,0x1d,0x23,0x3f,0x83,0xc0,0xa6,0x4,0xc4,0xf0,0xe3,0xeb,
0xd0,0x9f,0xfe,0xf7,0xd0,0xf7,0x1f,0x4f,0xaf,0xfb,0xfe,0xf0,0xd8,0xef,0x1e,0xf7,
0xf7,0xbb,0xfe,0xe1,0xf0,0xe5,0x5f,0x1f,0xf7,0x3b,0xf9,0x79,0xdf,0xef,0xfa,0xdd,
0xa7,0xc7,0xcf,0xef,0xef,0x77,0x1f,0xe4,0x5f,0x8f,0x7f,0xed,0x1f,0x4f,0xff,0x3d,
0xbf,0xce,0x1,0xf7,0xfd,0x41,0x5a,0xca,0xeb,0xcb,0x5f,0x8f,0x7f,0x9e,0x7a,0xd,
0x6d,0xd2,0x3f,0xcc,0xb4,0x3f,0x1e,0xed,0x9a,0xed,0xd0,0xef,0x3f,0xf7,0xf,0xf2,
0x92,0x3f,0xc8,0x91,0x7e,0x3a,0xbd,0xe4,0xd8,0x8f,0x7,0xf6,0xf0,0xd8,0x3f,0x7c,
0xfc,0xd4,0xbf,0xff,0xa7,0x7f,0xf8,0xcf,0xe9,0xe7,0xfd,0xff,0xfa,0xfe,0x5d,0xdf,
0x7f,0x4e,0x12,0x3c,0x1f,0xde,0x39,0xcd,0xd1,0xc3,0x5b,0x73,0x50,0xec,0x3,0x1,
0x47,0x2,0xdd,0x71,0xc8,0xb2,0x41,0x0,0x2,0x41,0x9,0x74,0xa7,0xfa,0xcc,0x6,
0x1,0x8,0xc4,0x24,0x80,0xe1,0x31,0xfb,0x95,0xac,0x20,0x70,0x26,0x20,0xeb,0x68,
0x72,0x25,0xcd,0x6,0x1,0x8,0xc4,0x24,0x20,0x86,0xbf,0x8f,0x99,0x19,0x59,0x41,
0x0,0x2,0xa7,0x1a,0x2e,0x4b,0xc6,0x6c,0x10,0x80,0x40,0x4c,0x2,0xdd,0x63,0xff,
0xdf,0x98,0x99,0x91,0x15,0x4,0x20,0x20,0x35,0xfc,0xd0,0xff,0xd,0x7,0x8,0x40,
0x20,0x2a,0x81,0x6e,0x87,0xe1,0x51,0xfb,0x96,0xbc,0x20,0x20,0x35,0xfc,0x33,0x86,
0x33,0xe,0x20,0x10,0x97,0x40,0xf7,0xb1,0x7f,0x1b,0x37,0x3b,0x32,0x83,0x40,0xeb,
0x4,0xba,0x7b,0xee,0x96,0xb5,0x3e,0x6,0xc8,0x3f,0x32,0x81,0xee,0x3,0x86,0x47,
0xee,0x5f,0x72,0x6b,0x9d,0x40,0xf7,0xf7,0xee,0xdf,0xad,0x33,0x20,0x7f,0x8,0xc4,
0x25,0x20,0x2b,0x6d,0x7f,0xc5,0xcd,0x8e,0xcc,0x20,0xd0,0x3a,0x1,0x31,0x5c,0x3e,
0xd,0xcd,0x6,0x1,0x8,0xc4,0x24,0x20,0x2b,0x6d,0xf7,0x31,0x33,0x23,0x2b,0x8,
0x40,0x40,0xee,0x87,0xbf,0xe3,0x3,0xe2,0x8c,0x3,0x8,0xc4,0x25,0xd0,0x71,0x37,
0x3c,0x6e,0xe7,0x92,0x19,0x4,0x8e,0x35,0x9c,0xd,0x2,0x10,0x8,0x4b,0x0,0xc3,
0xc3,0x76,0x2d,0x89,0x41,0x40,0x8,0x74,0x7c,0xff,0x3,0xe3,0x0,0x2,0x81,0x9,
0xc8,0x33,0x6d,0x7c,0x8b,0x53,0xe0,0xfe,0x25,0xb5,0xd6,0x9,0x74,0xef,0xf6,0xdc,
0xf,0x6f,0x7d,0x10,0x90,0x7f,0x60,0x2,0x7c,0x8b,0x53,0xe0,0xce,0x25,0x35,0x8,
0xc8,0xf7,0xb4,0xed,0x99,0xa5,0x33,0xe,0x20,0x10,0x96,0x40,0xc7,0x17,0x31,0x86,
0xed,0x5b,0x12,0x83,0xc0,0xf1,0xbb,0x56,0xf9,0x68,0x19,0xe3,0x0,0x2,0x71,0x9,
0x60,0x78,0xdc,0xbe,0x25,0x33,0x8,0x1c,0x6b,0xf8,0x3f,0x60,0x80,0x0,0x4,0xc2,
0x12,0xe8,0x8e,0xbf,0x4a,0x98,0xd,0x2,0x10,0x8,0x4a,0xa0,0x3b,0x7c,0xfe,0x10,
0x34,0x35,0xd2,0x82,0x0,0x4,0xe4,0x37,0x22,0x3c,0x3c,0x82,0x1,0x2,0x10,0x88,
0x4a,0xa0,0xeb,0x11,0x3c,0x6a,0xdf,0x92,0x17,0x4,0x8e,0xbf,0xd5,0x88,0x7,0x5e,
0x18,0x7,0x10,0x88,0x4b,0xa0,0xdb,0x7f,0x8e,0x9b,0x1c,0x99,0x41,0xa0,0x79,0x2,
0xdd,0x61,0xd7,0x3c,0x3,0x0,0x40,0x20,0x2e,0x81,0xee,0x70,0x88,0x9b,0x1c,0x99,
0x41,0xa0,0x79,0x2,0xf2,0xdb,0x85,0xd9,0x20,0x0,0x81,0xb0,0x4,0x2a,0x36,0xbc,
0xeb,0x7a,0x5e,0x10,0xb8,0x9,0x2,0x15,0x9f,0x1f,0xc4,0xf0,0x7d,0xa5,0x87,0xd7,
0x75,0xdd,0x9b,0x9e,0x17,0x4,0x2a,0x27,0x70,0xac,0x43,0x15,0x6f,0x62,0x78,0xad,
0x37,0xc4,0x31,0x9c,0x13,0xdc,0x2d,0x10,0xa8,0xdd,0xf0,0x9e,0x1a,0x7e,0xb,0xc3,
0xa8,0xf2,0x3a,0xd6,0xf2,0xe1,0xd5,0x6f,0x78,0xad,0x33,0xc,0x6a,0x38,0xa7,0x9e,
0x5b,0x20,0x50,0xbd,0xe1,0xd5,0x2e,0xa6,0x63,0xf8,0x2d,0x8c,0xef,0x96,0xab,0xf7,
0x39,0x77,0xc,0x5f,0x3b,0x47,0xc0,0x70,0xc,0xbf,0x5,0x2,0xd5,0x1b,0xbe,0x56,
0x40,0xf7,0xfd,0x30,0xfc,0x16,0xc6,0x37,0x35,0x1c,0xc3,0xd7,0x9e,0xa,0x30,0x1c,
0xc3,0x6f,0x81,0x0,0x86,0xbb,0x19,0xde,0xbd,0x91,0x3b,0xe6,0xbc,0x20,0xe0,0x4e,
0x60,0xf6,0x44,0x83,0xe1,0x8e,0x86,0xaf,0xd,0xcd,0x7e,0x10,0xd0,0x12,0x38,0x9e,
0x3e,0x30,0x5c,0x4b,0xcb,0xd4,0x6e,0x71,0x96,0x7e,0x5c,0xc7,0x64,0x83,0x80,0x2f,
0x1,0xc,0x77,0xe3,0x8b,0xe1,0x6e,0x68,0x9,0xac,0x27,0x80,0xe1,0x7a,0x56,0xc6,
0x96,0x18,0x6e,0x4,0x46,0x73,0xf,0x2,0x18,0xee,0x41,0xf5,0x14,0x13,0xc3,0xdd,
0xd0,0x12,0x58,0x4f,0x0,0xc3,0xf5,0xac,0x8c,0x2d,0x31,0xdc,0x8,0x8c,0xe6,0x1e,
0x4,0x30,0xdc,0x83,0x2a,0x35,0xdc,0x8d,0x2a,0x81,0x8d,0x4,0x30,0xdc,0x8,0x4c,
0xdf,0x9c,0x1a,0xae,0x67,0x45,0x4b,0x37,0x2,0x18,0xee,0x88,0x76,0xe1,0x89,0x48,
0xee,0x96,0xb9,0xb1,0x27,0xf0,0x40,0x0,0xc3,0xdd,0x6,0x3,0x35,0xdc,0xd,0x2d,
0x81,0xf5,0x4,0x30,0x5c,0xcf,0xca,0xd8,0x12,0xc3,0x8d,0xc0,0x68,0xee,0x41,0x0,
0xc3,0x3d,0xa8,0xb2,0xd2,0xe6,0x46,0x95,0xc0,0x46,0x2,0x18,0x6e,0x4,0xa6,0x6f,
0x4e,0xd,0xd7,0xb3,0xa2,0xa5,0x1b,0x1,0xc,0x77,0x44,0xcb,0x4a,0x9b,0x1b,0x5c,
0x2,0x6b,0x9,0x60,0xb8,0x96,0x94,0xb9,0x1d,0x35,0xdc,0x8c,0x8c,0x1d,0xb6,0x27,
0x80,0xe1,0xdb,0x33,0x7d,0x8a,0x88,0xe1,0x6e,0x68,0x9,0xac,0x27,0x80,0xe1,0x7a,
0x56,0xc6,0x96,0x18,0x6e,0x4,0x46,0x73,0xf,0x2,0x18,0xee,0x41,0x95,0xb5,0x74,
0x37,0xaa,0x4,0x36,0x12,0xc0,0x70,0x23,0x30,0x7d,0x73,0x6a,0xb8,0x9e,0x15,0x2d,
0xdd,0x8,0x60,0xb8,0x23,0x5a,0xd6,0xd2,0xdd,0xe0,0x12,0x58,0x4b,0x0,0xc3,0xb5,
0xa4,0xcc,0xed,0xa8,0xe1,0x66,0x64,0xec,0xb0,0x3d,0x1,0xc,0xdf,0x9e,0x29,0x6b,
0xe9,0x6e,0x4c,0x9,0x6c,0x26,0x80,0xe1,0x66,0x64,0xda,0x1d,0xa8,0xe1,0x5a,0x52,
0xb4,0x73,0x24,0x80,0xe1,0x6e,0x70,0x31,0xdc,0xd,0x2d,0x81,0xf5,0x4,0x30,0x5c,
0xcf,0xca,0xd8,0x12,0xc3,0x8d,0xc0,0x68,0xee,0x41,0x0,0xc3,0x3d,0xa8,0x9e,0x62,
0x62,0xb8,0x1b,0x5a,0x2,0xeb,0x9,0x60,0xb8,0x9e,0x95,0xb1,0x25,0x86,0x1b,0x81,
0xd1,0xdc,0x83,0x0,0x86,0x7b,0x50,0xa5,0x86,0xbb,0x51,0x25,0xb0,0x91,0x0,0x86,
0x1b,0x81,0xe9,0x9b,0x53,0xc3,0xf5,0xac,0x68,0xe9,0x46,0x0,0xc3,0x1d,0xd1,0xf2,
0x4c,0x9b,0x1b,0x5c,0x2,0x6b,0x9,0x60,0xb8,0x96,0x94,0xb9,0x1d,0x35,0xdc,0x8c,
0x8c,0x1d,0xb6,0x27,0x80,0xe1,0xdb,0x33,0x7d,0x8a,0x88,0xe1,0x6e,0x68,0x9,0xac,
0x27,0x80,0xe1,0x7a,0x56,0xc6,0x96,0x18,0x6e,0x4,0x46,0x73,0xf,0x2,0x18,0xee,
0x41,0x95,0xb5,0x74,0x37,0xaa,0x4,0x36,0x12,0xc0,0x70,0x23,0x30,0x7d,0x73,0x6a,
0xb8,0x9e,0x15,0x2d,0xdd,0x8,0x60,0xb8,0x23,0x5a,0xd6,0xd2,0xdd,0xe0,0x12,0x58,
0x4b,0x0,0xc3,0xb5,0xa4,0xcc,0xed,0xa8,0xe1,0x66,0x64,0xec,0xb0,0x3d,0x1,0xc,
0xdf,0x9e,0xe9,0xad,0xac,0xa5,0xbf,0x7d,0xdb,0xff,0xf8,0xa3,0x3c,0x3e,0x3f,0xfe,
0xfa,0xed,0x37,0x37,0x32,0xcf,0x1d,0x58,0x52,0x9b,0xca,0xfa,0xd7,0x5f,0x9f,0xfb,
0xe0,0xb6,0x7e,0x7f,0xc,0xdf,0x9a,0xe8,0x10,0xaf,0xee,0x1a,0xfe,0xcb,0x2f,0x93,
0xa3,0x3c,0x1d,0xfd,0xbf,0xff,0xee,0xc6,0xe7,0x39,0x2,0x4b,0x3a,0x53,0x6e,0xa7,
0x3f,0x17,0x38,0x61,0x36,0xc,0x77,0xeb,0xca,0x8a,0xd,0x4f,0x8b,0xd8,0x4f,0x3f,
0xf5,0x52,0xcc,0x65,0xfb,0xf3,0xcf,0xf1,0x92,0x1e,0xa6,0x98,0x4b,0xa6,0x99,0xde,
0x43,0x6a,0x65,0x55,0xff,0xfe,0x7b,0xb7,0x81,0x71,0xdd,0xc0,0x18,0xee,0xc6,0xbb,
0x62,0xc3,0xbf,0xfb,0xee,0x69,0xac,0x97,0x93,0xd2,0x3f,0xfe,0xc8,0x35,0xf8,0xf6,
0x5b,0x37,0x44,0x57,0xc,0x2c,0x99,0xa6,0x7a,0x8b,0xed,0xe5,0x96,0x9d,0x2,0xe4,
0x12,0x26,0xc0,0x86,0xe1,0x6e,0x9d,0x58,0xb1,0xe1,0xc3,0x58,0x1f,0x4d,0x5e,0x8a,
0x79,0x2a,0x43,0xc,0xc3,0xd3,0x8c,0xe4,0x4,0x37,0xb5,0xfd,0xf0,0xc3,0x57,0xb9,
0x7,0xb8,0x48,0xc1,0xf0,0x16,0xd,0x1f,0x6a,0xb8,0x54,0xec,0x45,0xc9,0x3,0xcc,
0xd2,0xb3,0x2,0x3e,0x93,0x51,0x76,0xa1,0x1e,0xa0,0x8c,0x63,0x78,0x8b,0x86,0xf,
0xcb,0x6c,0x33,0xd5,0xcc,0x8d,0xcb,0x33,0x4,0xce,0x6e,0x19,0xc8,0x24,0x65,0x66,
0xcb,0xae,0xd5,0x9f,0xe1,0x70,0x37,0x7d,0x4b,0xc,0xdf,0x14,0x67,0x1a,0xac,0xe2,
0x59,0xba,0x1c,0xe6,0x50,0xc6,0x5b,0x90,0x3c,0x9b,0x7b,0xcf,0x77,0x39,0x86,0xbb,
0x29,0xb1,0x26,0x70,0xb7,0x66,0xa7,0xeb,0xec,0x53,0xb7,0xe1,0xa9,0xe4,0x32,0xa6,
0x3,0x5c,0x70,0x6e,0x55,0x96,0x83,0xad,0x41,0x50,0xc3,0xdd,0x74,0xaf,0xde,0xf0,
0x4c,0x72,0xb9,0x3f,0x74,0xbe,0x6d,0x16,0x6f,0xd3,0x97,0xe5,0x6c,0x95,0x71,0x74,
0xc9,0xfd,0xb6,0xf8,0x60,0xb8,0x5b,0x7f,0xdd,0x82,0xe1,0x92,0x7c,0x76,0x8b,0x28,
0xd2,0xc3,0x1e,0x43,0xd7,0xea,0xd,0xcf,0x6e,0x8c,0x4f,0xad,0x44,0xba,0xd,0x9a,
0xed,0x3,0x63,0xf8,0xf6,0x4c,0x9f,0x22,0xde,0x88,0xe1,0x72,0xb4,0xe5,0xf3,0x1e,
0xeb,0x46,0xb6,0xec,0x25,0x13,0x81,0xf2,0xa1,0xb1,0xe1,0xa1,0x9a,0x29,0xd6,0x59,
0xe5,0x9c,0x39,0xcb,0xc,0xcb,0x7,0x72,0xf,0x4f,0x7f,0x65,0xa1,0x37,0x3c,0xbd,
0x62,0xd7,0x2f,0xa4,0xcb,0x91,0xc,0x7,0xa6,0x79,0x66,0x4e,0x7f,0x3c,0x97,0x8f,
0x4e,0xc,0xbf,0x9c,0xe1,0x44,0x84,0xdb,0x31,0x5c,0x12,0xc8,0xee,0x27,0xc9,0x10,
0x34,0x15,0xf3,0xf2,0x39,0x99,0x72,0xa0,0x8b,0x3c,0x53,0x57,0x1,0xa5,0x1e,0x33,
0xd3,0x63,0x39,0x1d,0xa4,0xe7,0x11,0xcd,0xc9,0x48,0x69,0x94,0x1c,0xde,0xd0,0x52,
0xb9,0x0,0xa9,0x7c,0xc,0x76,0x5e,0x7b,0xb7,0x21,0x78,0xc,0x8c,0xe1,0x6e,0x78,
0x6f,0xc1,0xf0,0xcc,0x96,0x6c,0x20,0x2a,0x9f,0xdc,0xfc,0xf9,0xe7,0xaf,0xea,0xf6,
0x70,0xb7,0xb9,0x3c,0x6b,0x4c,0x2d,0xe9,0x49,0x41,0x2e,0x1d,0x98,0xbf,0xf,0x9f,
0x9e,0x53,0x16,0x4f,0x46,0x53,0x86,0x67,0x6b,0xec,0x43,0x33,0xe5,0xe5,0x77,0xf9,
0x18,0xec,0x8a,0x2,0x2e,0xbb,0xb8,0x6e,0x18,0xee,0x86,0xb7,0x6e,0xc3,0xa5,0x5e,
0xa5,0x95,0xf3,0x3c,0x91,0xce,0x66,0xcb,0x32,0xf8,0x16,0x4b,0x59,0x3a,0xca,0x47,
0x3f,0x98,0x55,0x7a,0x5e,0xce,0xae,0x47,0x3f,0x6,0xb3,0x38,0x49,0x4e,0x8f,0x56,
0xce,0x32,0x2b,0xd6,0xd2,0xb3,0x73,0xd3,0xe0,0xa7,0x9c,0x71,0xe6,0xef,0x99,0x97,
0xeb,0x17,0xeb,0xdc,0x3e,0xef,0xe5,0xba,0x61,0xb8,0x1b,0xde,0x8a,0xd,0x4f,0x2f,
0xbc,0xb3,0x42,0x5d,0x4a,0x3e,0x53,0xc9,0x53,0x33,0x67,0xa,0x69,0x79,0x9d,0x5f,
0x4e,0xd7,0xcb,0xb,0x78,0xcd,0xd3,0xb2,0xe9,0x24,0x79,0xe6,0xb2,0x5c,0x39,0x4b,
0x97,0xa1,0x90,0x9e,0xf5,0x66,0x3e,0x49,0x3a,0x35,0x39,0x97,0x2c,0x24,0xd9,0x21,
0xbb,0xa1,0xd9,0x33,0xde,0xa7,0xc0,0xf0,0xe6,0xc,0x4f,0x7d,0x93,0x69,0x6a,0xb9,
0x95,0x17,0xd5,0xa3,0xf6,0xa6,0xe7,0x82,0xc5,0x52,0x9f,0x3d,0x55,0x56,0x4e,0x83,
0xcb,0x33,0x8b,0xb2,0xb8,0x69,0x1e,0xdd,0xd1,0x1b,0x9e,0x5e,0x8a,0xcb,0x5e,0x53,
0x53,0x83,0x72,0xe1,0x60,0xea,0x74,0x90,0xe6,0xf5,0x2c,0xcf,0xff,0x62,0x78,0x5b,
0x86,0x67,0x22,0x4d,0x2d,0x7d,0x95,0xd3,0xe6,0x12,0x53,0x7a,0x11,0xbb,0xf8,0xc5,
0x9,0x99,0x39,0x22,0x4f,0xf9,0xd6,0xe5,0x9c,0x59,0xd3,0x37,0xe9,0x55,0xc0,0x94,
0x42,0x7a,0xc3,0xcb,0x45,0xc7,0x72,0x6a,0x50,0x4e,0x49,0xf4,0x4b,0x6,0xca,0x2b,
0x7c,0x4d,0xe2,0xca,0x36,0x18,0xae,0x4,0x65,0x6f,0x56,0xe5,0x2c,0x3d,0xd5,0x72,
0x7e,0xb4,0x65,0x56,0x64,0xe,0x67,0x67,0xa,0xcd,0x82,0x76,0x56,0xc6,0xcb,0xf2,
0x58,0x96,0x71,0xd,0xf4,0x74,0xc6,0x31,0x75,0xe9,0x6e,0x32,0x3c,0x9b,0xab,0x97,
0x53,0x89,0x2c,0x91,0xd1,0x79,0x50,0x76,0xe4,0xe9,0xc9,0xeb,0xca,0x92,0x63,0xb8,
0x66,0x14,0xad,0x6a,0x53,0x9f,0xe1,0x99,0x42,0xf3,0xf7,0x93,0xb3,0x85,0xe2,0x6c,
0x1c,0x67,0xf5,0x56,0x3,0x28,0x2b,0x7d,0xa3,0x62,0x58,0x55,0x3c,0xbf,0xef,0xe2,
0x2d,0x2e,0x6b,0xd8,0xa9,0xbb,0x3,0xe7,0xb7,0xcb,0xa6,0xe8,0xca,0xdb,0xf2,0xe9,
0x31,0x2c,0x4e,0x79,0x34,0x3c,0x95,0x6d,0x30,0x5c,0x9,0xca,0xde,0xac,0x3e,0xc3,
0xb3,0x81,0x3b,0xbf,0x5c,0x9c,0x2d,0x26,0x65,0xeb,0x5e,0xa6,0xcf,0x72,0x9c,0xd9,
0x95,0x97,0xf7,0x25,0x53,0xab,0x8a,0x99,0xe1,0x53,0x97,0xee,0xd6,0xb0,0xd9,0xa1,
0x66,0x53,0x3,0x6b,0xb4,0xf3,0x41,0xae,0x38,0x27,0xda,0xc7,0xdc,0xc8,0x1e,0x18,
0xbe,0x9,0xc6,0xb1,0x20,0xf5,0x19,0x6e,0xd2,0xb2,0xbc,0x72,0x4e,0x93,0x5c,0x37,
0xca,0x17,0xf7,0x5a,0x6c,0x30,0xda,0x5b,0xe9,0x5e,0x8b,0xd,0x94,0xb,0x78,0x69,
0xcc,0xec,0xec,0xb6,0xee,0x20,0xb3,0xb3,0xc6,0xd5,0xca,0x38,0x86,0x37,0x64,0xb8,
0x75,0x68,0xce,0xb4,0xb7,0x86,0x2a,0x8b,0xed,0xa8,0x69,0x97,0x87,0xf5,0x30,0x3c,
0x3b,0xd4,0x75,0x7,0x99,0x5e,0x4d,0x48,0x4,0xcd,0xd5,0xfb,0x26,0x43,0x13,0xc3,
0x37,0xc1,0x78,0x1b,0x35,0xdc,0x3a,0x34,0xd3,0xf6,0xd9,0xfd,0xb0,0x2c,0x94,0x66,
0xa5,0x2d,0x1b,0xe2,0xa3,0xb7,0xd9,0xad,0x47,0x98,0x4d,0xfe,0xa7,0x6e,0xdd,0xaf,
0x8,0x3b,0xb3,0x4b,0x36,0x15,0xd2,0x7f,0x20,0x6f,0xc5,0x61,0x5c,0x3e,0x3a,0x31,
0xfc,0x72,0x86,0x13,0x11,0xea,0x9b,0xa5,0x5b,0x47,0x58,0xda,0x3e,0xbb,0x16,0xcd,
0x1e,0x50,0x51,0xce,0x39,0xd3,0x80,0xa3,0x4b,0xca,0xd6,0x23,0x14,0xf4,0xd9,0xf7,
0xc6,0x7a,0xd4,0xf0,0x6c,0x96,0x9e,0x5d,0x51,0x2b,0x57,0xda,0xb2,0x13,0x9c,0xf2,
0x62,0xe1,0xf2,0xd1,0x89,0xe1,0x97,0x33,0xbc,0x19,0xc3,0x33,0x2d,0xe7,0xb,0xef,
0xfc,0x75,0x63,0xb6,0xd2,0xae,0x79,0x82,0x3d,0xb,0x38,0x2a,0x46,0xf6,0x80,0xba,
0x66,0x6a,0x90,0xde,0xbb,0xda,0xe4,0x7e,0xb8,0x74,0x67,0x76,0xd3,0x21,0x3b,0xbb,
0xad,0xfb,0xc,0xf9,0xfc,0xba,0x86,0xdb,0x28,0xe4,0x93,0x27,0x9e,0x68,0x6b,0xfb,
0xbd,0x65,0x59,0xf1,0x99,0x7f,0x96,0x3b,0x7b,0x9e,0x3c,0xe3,0x54,0x2e,0x8c,0x2f,
0xda,0x98,0x6,0x9c,0x7a,0x6,0x2e,0x9b,0x0,0x2f,0x4e,0xd,0x32,0x6d,0xa6,0x3a,
0xd3,0x3a,0x35,0xc8,0x6e,0xec,0x95,0x27,0x8e,0x15,0x13,0x75,0xcd,0xcd,0x42,0x8f,
0xc1,0x48,0xd,0xf7,0xa0,0x7a,0x8a,0x59,0xdf,0x2c,0x3d,0x2b,0x3e,0xf3,0x8f,0x9a,
0xa6,0x77,0x7d,0x47,0x9f,0x5a,0xcd,0x46,0xf9,0xe2,0xd2,0x51,0x1a,0x70,0x6a,0x66,
0x9b,0x3d,0x4b,0x67,0x7a,0x18,0x76,0xe6,0xc1,0x78,0xab,0xe1,0xd9,0x33,0x2d,0xe5,
0x10,0x99,0x2f,0xf2,0xa3,0x43,0x2a,0xc3,0x75,0xb5,0x27,0x58,0x31,0xbc,0x21,0xc3,
0x25,0xd5,0x6c,0xec,0x4e,0x59,0x91,0xd6,0xdb,0xa9,0x19,0x78,0xf9,0x8,0xda,0x8c,
0x63,0x69,0xc0,0x99,0x87,0xba,0xca,0xa9,0xac,0xf2,0x3,0x2d,0xf3,0x97,0x9,0x99,
0xe1,0xf3,0x53,0x3,0xe5,0x6d,0xad,0xac,0x26,0xcf,0x3f,0xa9,0x96,0x3d,0x5c,0xa0,
0xb9,0xa8,0xd9,0x6a,0x5c,0x62,0xf8,0x56,0x24,0x8b,0x38,0xf5,0xd5,0xf0,0xf3,0x21,
0x66,0xc3,0xbd,0x2c,0x26,0xd9,0x10,0x9f,0x59,0x2b,0x2e,0x9f,0xd0,0x1e,0x95,0x27,
0x6d,0xb6,0x58,0x96,0xcb,0x47,0xe2,0x17,0x3f,0x94,0xba,0x18,0x33,0x4b,0xf9,0xfc,
0xd7,0xd1,0xcb,0xa,0x53,0x71,0xce,0x2e,0x64,0xa6,0x66,0x31,0xe5,0x7,0xd1,0x16,
0x3f,0x9a,0xba,0xe1,0xa0,0xc4,0xf0,0xd,0x61,0x7e,0x1d,0xaa,0x56,0xc3,0x47,0x3f,
0x4,0x7e,0x1e,0x73,0xd9,0x17,0x42,0xc8,0xba,0xd7,0xe2,0xad,0xa0,0xd1,0xdf,0xe3,
0x39,0x38,0x99,0xd,0xee,0xc5,0x99,0xfc,0x99,0xe0,0xe8,0x37,0x2b,0x4c,0x7d,0xb1,
0xc4,0xa2,0xde,0xe5,0x49,0x2d,0x5b,0xd2,0x1f,0x72,0xb7,0x5e,0x77,0x48,0xe4,0xd1,
0x5f,0x78,0x36,0x9c,0x3b,0xe4,0x5f,0xcb,0x2f,0xb7,0xb8,0xa6,0xde,0xa7,0xdc,0xdf,
0xcc,0xaf,0x7,0xb9,0x7f,0x42,0xfd,0x32,0xc3,0x9c,0x3f,0x3e,0x7f,0xc9,0xc1,0xd5,
0x6a,0xb8,0xe4,0x94,0x7d,0xfd,0xc3,0x68,0x89,0xd3,0x7f,0x40,0x42,0x86,0xec,0xe8,
0x97,0xb4,0x2c,0x4e,0x16,0x66,0xe8,0x2a,0x7f,0x35,0xea,0xe2,0xb7,0xbb,0x8c,0x4e,
0x5b,0x34,0xe9,0x2f,0x2e,0xf2,0xd,0x7,0x2f,0xd1,0xa6,0xbe,0x2b,0x26,0x23,0xb0,
0xf8,0x9d,0x16,0x97,0xc,0xb7,0xa9,0x7d,0x31,0xdc,0x83,0xea,0xd3,0x6c,0xb8,0xb6,
0xb5,0xf4,0x2c,0x55,0x29,0x35,0xa3,0xdf,0x1f,0x28,0x6b,0xec,0x8b,0xa5,0xbb,0xa4,
0x26,0x9e,0x4f,0xd,0xf4,0xd5,0xab,0x4a,0x33,0x9e,0xeb,0xd,0x2c,0x6b,0xf8,0xf9,
0xe0,0xa7,0xd2,0x37,0x45,0x4e,0x3d,0x9f,0xfa,0xc6,0x18,0xf1,0x5c,0x79,0x26,0xf2,
0x18,0x8b,0x18,0xee,0x41,0xf5,0x36,0xc,0x77,0xcb,0xbc,0xba,0xc0,0xd6,0xb5,0xf4,
0xea,0x12,0xb8,0xe0,0x80,0x30,0xfc,0x2,0x78,0xf3,0xbb,0x56,0x3c,0x4b,0x77,0xcb,
0xb9,0xd2,0xc0,0x18,0x3e,0x33,0x9d,0xe4,0x3a,0x7c,0xed,0xa8,0xc5,0xf0,0xb5,0xe4,
0x36,0xdf,0xf,0xc3,0x31,0x7c,0xf3,0x41,0x55,0xe3,0x13,0x2f,0xe,0x49,0xde,0x46,
0x48,0xc,0xc7,0x70,0x87,0x91,0x4a,0xd,0x77,0x80,0xba,0x22,0x64,0x76,0x77,0xf0,
0x9a,0x4f,0x9b,0xac,0x38,0xda,0xcd,0x77,0xe1,0x3a,0x7c,0x73,0xa4,0x5f,0x2,0x62,
0xb8,0x1b,0x5a,0x53,0xe0,0xec,0x1,0x1e,0xe5,0x3d,0x79,0xd3,0x5b,0xd4,0xdc,0x18,
0xc3,0xdd,0x7a,0x7,0xc3,0xdd,0xd0,0x9a,0x2,0x67,0x4f,0xdd,0xe8,0xef,0xf3,0x9b,
0xde,0xa5,0xda,0xc6,0x18,0xee,0xd6,0x35,0x18,0xee,0x86,0xd6,0x14,0x38,0xbb,0xa9,
0xfe,0x8c,0xb7,0xa6,0x4d,0x87,0xbd,0x55,0x63,0xc,0xdf,0x8a,0x64,0x11,0x7,0xc3,
0xdd,0xd0,0x9a,0x2,0x67,0x1f,0xb6,0x59,0xfc,0x94,0xab,0x29,0x78,0xfd,0x8d,0x31,
0xdc,0xad,0x8f,0x30,0xdc,0xd,0xad,0x29,0x70,0xf6,0xdc,0xde,0x8a,0xc7,0xf5,0x4c,
0x6f,0x57,0x5b,0x63,0xc,0x77,0xeb,0x11,0xc,0x77,0x43,0x4b,0x60,0x3d,0x1,0xc,
0xd7,0xb3,0x32,0xb6,0xc4,0x70,0x23,0x30,0x9a,0x7b,0x10,0xc0,0x70,0xf,0xaa,0xa7,
0x98,0x18,0xee,0x86,0x96,0xc0,0x7a,0x2,0x18,0xae,0x67,0x65,0x6c,0x89,0xe1,0x46,
0x60,0x34,0xf7,0x20,0x80,0xe1,0x1e,0x54,0xa9,0xe1,0x6e,0x54,0x9,0x6c,0x24,0x80,
0xe1,0x46,0x60,0xfa,0xe6,0xd4,0x70,0x3d,0x2b,0x5a,0xba,0x11,0xc0,0x70,0x47,0xb4,
0x95,0x7f,0x3,0x84,0x5b,0xe6,0x4,0xae,0x88,0x0,0x86,0xbb,0x75,0x6,0x35,0xdc,
0xd,0x2d,0x81,0xf5,0x4,0x30,0x5c,0xcf,0xca,0xd8,0x12,0xc3,0x8d,0xc0,0x68,0xee,
0x41,0x0,0xc3,0x3d,0xa8,0xb2,0xd2,0xe6,0x46,0x95,0xc0,0x46,0x2,0x18,0x6e,0x4,
0xa6,0x6f,0x4e,0xd,0xd7,0xb3,0xa2,0xa5,0x1b,0x1,0xc,0x77,0x44,0xcb,0x4a,0x9b,
0x1b,0x5c,0x2,0x6b,0x9,0x60,0xb8,0x96,0x94,0xb9,0x1d,0x35,0xdc,0x8c,0x8c,0x1d,
0xb6,0x27,0x80,0xe1,0xdb,0x33,0x7d,0x8a,0x88,0xe1,0x6e,0x68,0x9,0xac,0x27,0x80,
0xe1,0x7a,0x56,0xc6,0x96,0x18,0x6e,0x4,0x46,0x73,0xf,0x2,0x18,0xee,0x41,0x95,
0xb5,0x74,0x37,0xaa,0x4,0x36,0x12,0xc0,0x70,0x23,0x30,0x7d,0x73,0x6a,0xb8,0x9e,
0x15,0x2d,0xdd,0x8,0x60,0xb8,0x23,0x5a,0xd6,0xd2,0xdd,0xe0,0x12,0x58,0x4b,0x0,
0xc3,0xb5,0xa4,0xcc,0xed,0xa8,0xe1,0x66,0x64,0xec,0xb0,0x3d,0x1,0xc,0xdf,0x9e,
0x29,0x6b,0xe9,0x6e,0x4c,0x9,0x6c,0x26,0x80,0xe1,0x66,0x64,0xda,0x1d,0xa8,0xe1,
0x5a,0x52,0xb4,0x73,0x24,0x80,0xe1,0x6e,0x70,0x31,0xdc,0xd,0x2d,0x81,0xf5,0x4,
0x30,0x5c,0xcf,0xca,0xd8,0x12,0xc3,0x8d,0xc0,0x68,0xee,0x41,0x0,0xc3,0x3d,0xa8,
0x9e,0x62,0x62,0xb8,0x1b,0x5a,0x2,0xeb,0x9,0x60,0xb8,0x9e,0x95,0xb1,0x25,0x86,
0x1b,0x81,0xd1,0xdc,0x83,0x0,0x86,0x7b,0x50,0xa5,0x86,0xbb,0x51,0x25,0xb0,0x91,
0x0,0x86,0x1b,0x81,0xe9,0x9b,0x53,0xc3,0xf5,0xac,0x68,0xe9,0x46,0x0,0xc3,0x1d,
0xd1,0xf2,0x4c,0x9b,0x1b,0x5c,0x2,0x6b,0x9,0x60,0xb8,0x96,0x94,0xb9,0x1d,0x35,
0xdc,0x8c,0x8c,0x1d,0xb6,0x27,0x80,0xe1,0xdb,0x33,0x7d,0x8a,0x88,0xe1,0x6e,0x68,
0x9,0xac,0x27,0x80,0xe1,0x7a,0x56,0xc6,0x96,0x18,0x6e,0x4,0x46,0x73,0xf,0x2,
0x18,0xee,0x41,0x55,0xbb,0x96,0x7e,0xa4,0xcf,0xb,0x2,0xde,0x4,0xde,0xf4,0x33,
0x4b,0x42,0xf2,0xe0,0x86,0x9b,0x3,0x1b,0x4,0xae,0xf8,0xe0,0x16,0x6b,0xf8,0x2c,
0xf7,0x85,0x55,0x3a,0xf6,0x85,0xc0,0x46,0x4,0x30,0x7c,0xed,0x79,0x8,0xc3,0x37,
0x1a,0x82,0x9c,0xec,0x5c,0x9,0x60,0x38,0x86,0xcf,0xcd,0xf1,0x5c,0x7,0x1f,0xc1,
0xaf,0x40,0x0,0xc3,0x31,0x1c,0xc3,0x23,0x13,0xc0,0x70,0xc,0x8f,0x3c,0xbe,0xaf,
0x50,0x24,0x2b,0x7f,0xb,0xc,0xc7,0x70,0xc,0x8f,0x4c,0x0,0xc3,0x31,0x3c,0xf2,
0xf8,0xae,0xbc,0xc0,0x5e,0xe1,0xf0,0x30,0x1c,0xc3,0x31,0x3c,0x32,0x1,0xc,0xc7,
0xf0,0xc8,0xe3,0xfb,0xa,0x45,0xb2,0xf2,0xb7,0xc0,0xf0,0xf5,0x86,0x1f,0xd9,0xf1,
0x82,0x40,0xfd,0x4,0xd6,0x8e,0xf1,0x2b,0xec,0x57,0xf1,0x33,0x6d,0x57,0xc8,0x9e,
0xb7,0x80,0x40,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0x18,0xde,0x76,
0xff,0x93,0x7d,0x74,0x2,0x18,0x1e,0xbd,0x87,0xc9,0xaf,0x6d,0x2,0xff,0x7,0x65,
0x9c,0xa5,0xd9,0x49,0xc1,0x1c,0x5c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,
0x42,0x60,0x82,
};
static const unsigned char qt_resource_name[] = {
// doubs
0x0,0x5,
0x0,0x6b,0x6b,0x93,
0x0,0x64,
0x0,0x6f,0x0,0x75,0x0,0x62,0x0,0x73,
// Images
0x0,0x6,
0x5,0x3,0x7d,0xc3,
0x0,0x49,
0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x73,
// splash.PNG
0x0,0xa,
0x8,0x94,0x7b,0x67,
0x0,0x73,
0x0,0x70,0x0,0x6c,0x0,0x61,0x0,0x73,0x0,0x68,0x0,0x2e,0x0,0x50,0x0,0x4e,0x0,0x47,
};
static const unsigned char qt_resource_struct[] = {
// :
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,
// :/doubs
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,
// :/doubs/Images
0x0,0x0,0x0,0x10,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,
// :/doubs/Images/splash.PNG
0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
};
QT_BEGIN_NAMESPACE
extern Q_CORE_EXPORT bool qRegisterResourceData
(int, const unsigned char *, const unsigned char *, const unsigned char *);
extern Q_CORE_EXPORT bool qUnregisterResourceData
(int, const unsigned char *, const unsigned char *, const unsigned char *);
QT_END_NAMESPACE
int QT_MANGLE_NAMESPACE(qInitResources_doubs)()
{
QT_PREPEND_NAMESPACE(qRegisterResourceData)
(0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
return 1;
}
Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_doubs))
int QT_MANGLE_NAMESPACE(qCleanupResources_doubs)()
{
QT_PREPEND_NAMESPACE(qUnregisterResourceData)
(0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
return 1;
}
Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_doubs))

View File

@ -1,225 +0,0 @@
/********************************************************************************
** Form generated from reading UI file 'authentication.ui'
**
** Created: Wed Oct 28 02:11:54 2009
** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_AUTHENTICATION_H
#define UI_AUTHENTICATION_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QCheckBox>
#include <QtGui/QFormLayout>
#include <QtGui/QFrame>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_FormAuthentication
{
public:
QVBoxLayout *verticalLayout;
QFormLayout *formLayout;
QLabel *label_PublicIdentity;
QLineEdit *lineEdit_PublicIdentity;
QLabel *label_PrivateIdentity;
QLineEdit *lineEdit_PrivateIdentity;
QLabel *label_SecretKey;
QLineEdit *lineEdit_SecretKey;
QLabel *label_DisplayName;
QLineEdit *lineEdit_DisplayName;
QLabel *label_Realm;
QLineEdit *lineEdit_Realm;
QLabel *label_PCSCF;
QLineEdit *lineEdit_PCSCF;
QSpacerItem *verticalSpacer;
QCheckBox *checkBox_EarlyIMS;
QSpacerItem *verticalSpacer_2;
QFrame *frame;
QVBoxLayout *verticalLayout_2;
QHBoxLayout *horizontalLayout;
QSpacerItem *horizontalSpacer;
QPushButton *pushButton_Connect;
QPushButton *pushButton_Cancel;
QPushButton *pushButton_Revert;
void setupUi(QWidget *FormAuthentication)
{
if (FormAuthentication->objectName().isEmpty())
FormAuthentication->setObjectName(QString::fromUtf8("FormAuthentication"));
FormAuthentication->resize(323, 415);
verticalLayout = new QVBoxLayout(FormAuthentication);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setSizeConstraint(QLayout::SetFixedSize);
formLayout = new QFormLayout();
formLayout->setObjectName(QString::fromUtf8("formLayout"));
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
label_PublicIdentity = new QLabel(FormAuthentication);
label_PublicIdentity->setObjectName(QString::fromUtf8("label_PublicIdentity"));
formLayout->setWidget(0, QFormLayout::LabelRole, label_PublicIdentity);
lineEdit_PublicIdentity = new QLineEdit(FormAuthentication);
lineEdit_PublicIdentity->setObjectName(QString::fromUtf8("lineEdit_PublicIdentity"));
formLayout->setWidget(0, QFormLayout::FieldRole, lineEdit_PublicIdentity);
label_PrivateIdentity = new QLabel(FormAuthentication);
label_PrivateIdentity->setObjectName(QString::fromUtf8("label_PrivateIdentity"));
formLayout->setWidget(1, QFormLayout::LabelRole, label_PrivateIdentity);
lineEdit_PrivateIdentity = new QLineEdit(FormAuthentication);
lineEdit_PrivateIdentity->setObjectName(QString::fromUtf8("lineEdit_PrivateIdentity"));
formLayout->setWidget(1, QFormLayout::FieldRole, lineEdit_PrivateIdentity);
label_SecretKey = new QLabel(FormAuthentication);
label_SecretKey->setObjectName(QString::fromUtf8("label_SecretKey"));
formLayout->setWidget(2, QFormLayout::LabelRole, label_SecretKey);
lineEdit_SecretKey = new QLineEdit(FormAuthentication);
lineEdit_SecretKey->setObjectName(QString::fromUtf8("lineEdit_SecretKey"));
formLayout->setWidget(2, QFormLayout::FieldRole, lineEdit_SecretKey);
label_DisplayName = new QLabel(FormAuthentication);
label_DisplayName->setObjectName(QString::fromUtf8("label_DisplayName"));
formLayout->setWidget(3, QFormLayout::LabelRole, label_DisplayName);
lineEdit_DisplayName = new QLineEdit(FormAuthentication);
lineEdit_DisplayName->setObjectName(QString::fromUtf8("lineEdit_DisplayName"));
formLayout->setWidget(3, QFormLayout::FieldRole, lineEdit_DisplayName);
label_Realm = new QLabel(FormAuthentication);
label_Realm->setObjectName(QString::fromUtf8("label_Realm"));
formLayout->setWidget(4, QFormLayout::LabelRole, label_Realm);
lineEdit_Realm = new QLineEdit(FormAuthentication);
lineEdit_Realm->setObjectName(QString::fromUtf8("lineEdit_Realm"));
formLayout->setWidget(4, QFormLayout::FieldRole, lineEdit_Realm);
label_PCSCF = new QLabel(FormAuthentication);
label_PCSCF->setObjectName(QString::fromUtf8("label_PCSCF"));
formLayout->setWidget(5, QFormLayout::LabelRole, label_PCSCF);
lineEdit_PCSCF = new QLineEdit(FormAuthentication);
lineEdit_PCSCF->setObjectName(QString::fromUtf8("lineEdit_PCSCF"));
formLayout->setWidget(5, QFormLayout::FieldRole, lineEdit_PCSCF);
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
formLayout->setItem(6, QFormLayout::LabelRole, verticalSpacer);
checkBox_EarlyIMS = new QCheckBox(FormAuthentication);
checkBox_EarlyIMS->setObjectName(QString::fromUtf8("checkBox_EarlyIMS"));
formLayout->setWidget(7, QFormLayout::SpanningRole, checkBox_EarlyIMS);
verticalLayout->addLayout(formLayout);
verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer_2);
frame = new QFrame(FormAuthentication);
frame->setObjectName(QString::fromUtf8("frame"));
frame->setMinimumSize(QSize(40, 40));
frame->setFrameShape(QFrame::StyledPanel);
frame->setFrameShadow(QFrame::Raised);
verticalLayout_2 = new QVBoxLayout(frame);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer);
pushButton_Connect = new QPushButton(frame);
pushButton_Connect->setObjectName(QString::fromUtf8("pushButton_Connect"));
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(pushButton_Connect->sizePolicy().hasHeightForWidth());
pushButton_Connect->setSizePolicy(sizePolicy);
pushButton_Connect->setAutoDefault(false);
horizontalLayout->addWidget(pushButton_Connect);
pushButton_Cancel = new QPushButton(frame);
pushButton_Cancel->setObjectName(QString::fromUtf8("pushButton_Cancel"));
sizePolicy.setHeightForWidth(pushButton_Cancel->sizePolicy().hasHeightForWidth());
pushButton_Cancel->setSizePolicy(sizePolicy);
horizontalLayout->addWidget(pushButton_Cancel);
pushButton_Revert = new QPushButton(frame);
pushButton_Revert->setObjectName(QString::fromUtf8("pushButton_Revert"));
sizePolicy.setHeightForWidth(pushButton_Revert->sizePolicy().hasHeightForWidth());
pushButton_Revert->setSizePolicy(sizePolicy);
horizontalLayout->addWidget(pushButton_Revert);
verticalLayout_2->addLayout(horizontalLayout);
verticalLayout->addWidget(frame);
retranslateUi(FormAuthentication);
QMetaObject::connectSlotsByName(FormAuthentication);
} // setupUi
void retranslateUi(QWidget *FormAuthentication)
{
FormAuthentication->setWindowTitle(QApplication::translate("FormAuthentication", "Authentication", 0, QApplication::UnicodeUTF8));
label_PublicIdentity->setText(QApplication::translate("FormAuthentication", "Public Identity*:", 0, QApplication::UnicodeUTF8));
lineEdit_PublicIdentity->setText(QApplication::translate("FormAuthentication", "sip:doubango@example.com", 0, QApplication::UnicodeUTF8));
label_PrivateIdentity->setText(QApplication::translate("FormAuthentication", "Private Identity*:", 0, QApplication::UnicodeUTF8));
lineEdit_PrivateIdentity->setText(QApplication::translate("FormAuthentication", "doubango@example.com", 0, QApplication::UnicodeUTF8));
label_SecretKey->setText(QApplication::translate("FormAuthentication", "Secret key*:", 0, QApplication::UnicodeUTF8));
lineEdit_SecretKey->setText(QApplication::translate("FormAuthentication", "mysecret", 0, QApplication::UnicodeUTF8));
label_DisplayName->setText(QApplication::translate("FormAuthentication", "Display Name:", 0, QApplication::UnicodeUTF8));
lineEdit_DisplayName->setText(QApplication::translate("FormAuthentication", "Doubango Client", 0, QApplication::UnicodeUTF8));
label_Realm->setText(QApplication::translate("FormAuthentication", "Realm*:", 0, QApplication::UnicodeUTF8));
lineEdit_Realm->setText(QApplication::translate("FormAuthentication", "example.com", 0, QApplication::UnicodeUTF8));
label_PCSCF->setText(QApplication::translate("FormAuthentication", "Proxy-CSCF*:", 0, QApplication::UnicodeUTF8));
lineEdit_PCSCF->setText(QApplication::translate("FormAuthentication", "192.168.0.14:5060/UDP", 0, QApplication::UnicodeUTF8));
checkBox_EarlyIMS->setText(QApplication::translate("FormAuthentication", "Early IMS", 0, QApplication::UnicodeUTF8));
pushButton_Connect->setText(QApplication::translate("FormAuthentication", "Connect", 0, QApplication::UnicodeUTF8));
pushButton_Cancel->setText(QApplication::translate("FormAuthentication", "Cancel", 0, QApplication::UnicodeUTF8));
pushButton_Revert->setText(QApplication::translate("FormAuthentication", "Revert", 0, QApplication::UnicodeUTF8));
} // retranslateUi
};
namespace Ui {
class FormAuthentication: public Ui_FormAuthentication {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_AUTHENTICATION_H

View File

@ -1,286 +0,0 @@
/********************************************************************************
** Form generated from reading UI file 'doubs.ui'
**
** Created: Wed Oct 28 02:11:54 2009
** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_DOUBS_H
#define UI_DOUBS_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMdiArea>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_doubsClass
{
public:
QAction *actionOnline;
QAction *actionSign_Out;
QAction *actionExit;
QAction *actionHelp;
QAction *actionAbout;
QAction *actionAdd_Contact;
QAction *actionEdit_Contact;
QAction *actionDelete_Contact;
QAction *actionAdd_Group;
QAction *actionEdit_Group;
QAction *actionDelete_Group;
QAction *actionAdd_Sphere;
QAction *actionEdit_Sphere;
QAction *actionDelete_Sphere;
QAction *actionGetting_started;
QAction *actionRelease_Note;
QAction *actionForum;
QAction *actionCompliance;
QAction *actionBusy;
QAction *actionBe_right_back;
QAction *actionAway;
QAction *actionIn_call;
QAction *actionOut_to_lunch;
QAction *actionAppear_off_line;
QAction *actionChange_your_contact_card;
QAction *actionRegistration_info;
QAction *actionTbarSignIn;
QAction *actionTbarSettings;
QAction *actionTbarAddressBook;
QAction *actionTbarSignOut;
QAction *actionOpen_Log_File;
QAction *actionDiagnostics;
QAction *actionAudio_Video_devices;
QWidget *centralWidget;
QMdiArea *mdiArea;
QMenuBar *menuBar;
QMenu *menuFile;
QMenu *menuAddress_Book;
QMenu *menu;
QMenu *menuTools;
QStatusBar *statusBar;
QToolBar *toolBar;
void setupUi(QMainWindow *doubsClass)
{
if (doubsClass->objectName().isEmpty())
doubsClass->setObjectName(QString::fromUtf8("doubsClass"));
doubsClass->setWindowModality(Qt::ApplicationModal);
doubsClass->resize(335, 477);
doubsClass->setAutoFillBackground(false);
actionOnline = new QAction(doubsClass);
actionOnline->setObjectName(QString::fromUtf8("actionOnline"));
actionSign_Out = new QAction(doubsClass);
actionSign_Out->setObjectName(QString::fromUtf8("actionSign_Out"));
actionExit = new QAction(doubsClass);
actionExit->setObjectName(QString::fromUtf8("actionExit"));
QFont font;
font.setBold(true);
font.setWeight(75);
actionExit->setFont(font);
actionHelp = new QAction(doubsClass);
actionHelp->setObjectName(QString::fromUtf8("actionHelp"));
actionAbout = new QAction(doubsClass);
actionAbout->setObjectName(QString::fromUtf8("actionAbout"));
actionAdd_Contact = new QAction(doubsClass);
actionAdd_Contact->setObjectName(QString::fromUtf8("actionAdd_Contact"));
actionEdit_Contact = new QAction(doubsClass);
actionEdit_Contact->setObjectName(QString::fromUtf8("actionEdit_Contact"));
actionDelete_Contact = new QAction(doubsClass);
actionDelete_Contact->setObjectName(QString::fromUtf8("actionDelete_Contact"));
actionAdd_Group = new QAction(doubsClass);
actionAdd_Group->setObjectName(QString::fromUtf8("actionAdd_Group"));
actionEdit_Group = new QAction(doubsClass);
actionEdit_Group->setObjectName(QString::fromUtf8("actionEdit_Group"));
actionDelete_Group = new QAction(doubsClass);
actionDelete_Group->setObjectName(QString::fromUtf8("actionDelete_Group"));
actionAdd_Sphere = new QAction(doubsClass);
actionAdd_Sphere->setObjectName(QString::fromUtf8("actionAdd_Sphere"));
actionEdit_Sphere = new QAction(doubsClass);
actionEdit_Sphere->setObjectName(QString::fromUtf8("actionEdit_Sphere"));
actionDelete_Sphere = new QAction(doubsClass);
actionDelete_Sphere->setObjectName(QString::fromUtf8("actionDelete_Sphere"));
actionGetting_started = new QAction(doubsClass);
actionGetting_started->setObjectName(QString::fromUtf8("actionGetting_started"));
actionRelease_Note = new QAction(doubsClass);
actionRelease_Note->setObjectName(QString::fromUtf8("actionRelease_Note"));
actionForum = new QAction(doubsClass);
actionForum->setObjectName(QString::fromUtf8("actionForum"));
actionCompliance = new QAction(doubsClass);
actionCompliance->setObjectName(QString::fromUtf8("actionCompliance"));
actionBusy = new QAction(doubsClass);
actionBusy->setObjectName(QString::fromUtf8("actionBusy"));
actionBe_right_back = new QAction(doubsClass);
actionBe_right_back->setObjectName(QString::fromUtf8("actionBe_right_back"));
actionAway = new QAction(doubsClass);
actionAway->setObjectName(QString::fromUtf8("actionAway"));
actionIn_call = new QAction(doubsClass);
actionIn_call->setObjectName(QString::fromUtf8("actionIn_call"));
actionOut_to_lunch = new QAction(doubsClass);
actionOut_to_lunch->setObjectName(QString::fromUtf8("actionOut_to_lunch"));
actionAppear_off_line = new QAction(doubsClass);
actionAppear_off_line->setObjectName(QString::fromUtf8("actionAppear_off_line"));
actionChange_your_contact_card = new QAction(doubsClass);
actionChange_your_contact_card->setObjectName(QString::fromUtf8("actionChange_your_contact_card"));
actionRegistration_info = new QAction(doubsClass);
actionRegistration_info->setObjectName(QString::fromUtf8("actionRegistration_info"));
actionTbarSignIn = new QAction(doubsClass);
actionTbarSignIn->setObjectName(QString::fromUtf8("actionTbarSignIn"));
actionTbarSettings = new QAction(doubsClass);
actionTbarSettings->setObjectName(QString::fromUtf8("actionTbarSettings"));
actionTbarAddressBook = new QAction(doubsClass);
actionTbarAddressBook->setObjectName(QString::fromUtf8("actionTbarAddressBook"));
actionTbarSignOut = new QAction(doubsClass);
actionTbarSignOut->setObjectName(QString::fromUtf8("actionTbarSignOut"));
actionOpen_Log_File = new QAction(doubsClass);
actionOpen_Log_File->setObjectName(QString::fromUtf8("actionOpen_Log_File"));
actionDiagnostics = new QAction(doubsClass);
actionDiagnostics->setObjectName(QString::fromUtf8("actionDiagnostics"));
actionAudio_Video_devices = new QAction(doubsClass);
actionAudio_Video_devices->setObjectName(QString::fromUtf8("actionAudio_Video_devices"));
centralWidget = new QWidget(doubsClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
mdiArea = new QMdiArea(centralWidget);
mdiArea->setObjectName(QString::fromUtf8("mdiArea"));
mdiArea->setGeometry(QRect(9, 65, 320, 351));
mdiArea->setTabShape(QTabWidget::Rounded);
doubsClass->setCentralWidget(centralWidget);
menuBar = new QMenuBar(doubsClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 335, 21));
menuFile = new QMenu(menuBar);
menuFile->setObjectName(QString::fromUtf8("menuFile"));
menuAddress_Book = new QMenu(menuBar);
menuAddress_Book->setObjectName(QString::fromUtf8("menuAddress_Book"));
menu = new QMenu(menuBar);
menu->setObjectName(QString::fromUtf8("menu"));
menuTools = new QMenu(menuBar);
menuTools->setObjectName(QString::fromUtf8("menuTools"));
doubsClass->setMenuBar(menuBar);
statusBar = new QStatusBar(doubsClass);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
doubsClass->setStatusBar(statusBar);
toolBar = new QToolBar(doubsClass);
toolBar->setObjectName(QString::fromUtf8("toolBar"));
toolBar->setMinimumSize(QSize(33, 33));
doubsClass->addToolBar(Qt::TopToolBarArea, toolBar);
menuBar->addAction(menuFile->menuAction());
menuBar->addAction(menuAddress_Book->menuAction());
menuBar->addAction(menuTools->menuAction());
menuBar->addAction(menu->menuAction());
menuFile->addAction(actionOnline);
menuFile->addAction(actionBusy);
menuFile->addAction(actionBe_right_back);
menuFile->addAction(actionAway);
menuFile->addAction(actionIn_call);
menuFile->addAction(actionOut_to_lunch);
menuFile->addAction(actionAppear_off_line);
menuFile->addAction(actionSign_Out);
menuFile->addSeparator();
menuFile->addAction(actionRegistration_info);
menuFile->addAction(actionChange_your_contact_card);
menuFile->addSeparator();
menuFile->addAction(actionExit);
menuAddress_Book->addAction(actionAdd_Contact);
menuAddress_Book->addAction(actionEdit_Contact);
menuAddress_Book->addAction(actionDelete_Contact);
menuAddress_Book->addSeparator();
menuAddress_Book->addAction(actionAdd_Group);
menuAddress_Book->addAction(actionEdit_Group);
menuAddress_Book->addAction(actionDelete_Group);
menuAddress_Book->addSeparator();
menuAddress_Book->addAction(actionAdd_Sphere);
menuAddress_Book->addAction(actionEdit_Sphere);
menuAddress_Book->addAction(actionDelete_Sphere);
menu->addAction(actionForum);
menu->addAction(actionGetting_started);
menu->addSeparator();
menu->addAction(actionRelease_Note);
menu->addAction(actionCompliance);
menu->addSeparator();
menu->addAction(actionAbout);
menu->addSeparator();
menuTools->addAction(actionOpen_Log_File);
menuTools->addAction(actionDiagnostics);
menuTools->addSeparator();
menuTools->addAction(actionAudio_Video_devices);
toolBar->addAction(actionTbarSignIn);
toolBar->addAction(actionTbarSignOut);
toolBar->addAction(actionTbarAddressBook);
toolBar->addAction(actionTbarSettings);
retranslateUi(doubsClass);
QMetaObject::connectSlotsByName(doubsClass);
} // setupUi
void retranslateUi(QMainWindow *doubsClass)
{
doubsClass->setWindowTitle(QApplication::translate("doubsClass", "doubs", 0, QApplication::UnicodeUTF8));
actionOnline->setText(QApplication::translate("doubsClass", "Online", 0, QApplication::UnicodeUTF8));
actionOnline->setShortcut(QApplication::translate("doubsClass", "Ctrl+O", 0, QApplication::UnicodeUTF8));
actionSign_Out->setText(QApplication::translate("doubsClass", "Sign Out", 0, QApplication::UnicodeUTF8));
actionSign_Out->setShortcut(QApplication::translate("doubsClass", "Ctrl+X", 0, QApplication::UnicodeUTF8));
actionExit->setText(QApplication::translate("doubsClass", "Exit", 0, QApplication::UnicodeUTF8));
actionExit->setShortcut(QApplication::translate("doubsClass", "Ctrl+E", 0, QApplication::UnicodeUTF8));
actionHelp->setText(QApplication::translate("doubsClass", "Help", 0, QApplication::UnicodeUTF8));
actionAbout->setText(QApplication::translate("doubsClass", "About...", 0, QApplication::UnicodeUTF8));
actionAdd_Contact->setText(QApplication::translate("doubsClass", "Add Contact", 0, QApplication::UnicodeUTF8));
actionEdit_Contact->setText(QApplication::translate("doubsClass", "Edit Contact", 0, QApplication::UnicodeUTF8));
actionDelete_Contact->setText(QApplication::translate("doubsClass", "Delete Contact", 0, QApplication::UnicodeUTF8));
actionAdd_Group->setText(QApplication::translate("doubsClass", "Add Group", 0, QApplication::UnicodeUTF8));
actionEdit_Group->setText(QApplication::translate("doubsClass", "Edit Group", 0, QApplication::UnicodeUTF8));
actionDelete_Group->setText(QApplication::translate("doubsClass", "Delete Group", 0, QApplication::UnicodeUTF8));
actionAdd_Sphere->setText(QApplication::translate("doubsClass", "Add Sphere", 0, QApplication::UnicodeUTF8));
actionEdit_Sphere->setText(QApplication::translate("doubsClass", "Edit Sphere", 0, QApplication::UnicodeUTF8));
actionDelete_Sphere->setText(QApplication::translate("doubsClass", "Delete Sphere", 0, QApplication::UnicodeUTF8));
actionGetting_started->setText(QApplication::translate("doubsClass", "Getting started", 0, QApplication::UnicodeUTF8));
actionRelease_Note->setText(QApplication::translate("doubsClass", "Release Note", 0, QApplication::UnicodeUTF8));
actionForum->setText(QApplication::translate("doubsClass", "Forum", 0, QApplication::UnicodeUTF8));
actionCompliance->setText(QApplication::translate("doubsClass", "Compliance", 0, QApplication::UnicodeUTF8));
actionBusy->setText(QApplication::translate("doubsClass", "Busy", 0, QApplication::UnicodeUTF8));
actionBusy->setShortcut(QApplication::translate("doubsClass", "Ctrl+Y", 0, QApplication::UnicodeUTF8));
actionBe_right_back->setText(QApplication::translate("doubsClass", "Be right back", 0, QApplication::UnicodeUTF8));
actionBe_right_back->setShortcut(QApplication::translate("doubsClass", "Ctrl+K", 0, QApplication::UnicodeUTF8));
actionAway->setText(QApplication::translate("doubsClass", "Away", 0, QApplication::UnicodeUTF8));
actionAway->setShortcut(QApplication::translate("doubsClass", "Ctrl+A", 0, QApplication::UnicodeUTF8));
actionIn_call->setText(QApplication::translate("doubsClass", "In call", 0, QApplication::UnicodeUTF8));
actionIn_call->setShortcut(QApplication::translate("doubsClass", "Ctrl+I", 0, QApplication::UnicodeUTF8));
actionOut_to_lunch->setText(QApplication::translate("doubsClass", "Out to lunch", 0, QApplication::UnicodeUTF8));
actionAppear_off_line->setText(QApplication::translate("doubsClass", "Appear off line", 0, QApplication::UnicodeUTF8));
actionChange_your_contact_card->setText(QApplication::translate("doubsClass", "Change your contact card", 0, QApplication::UnicodeUTF8));
actionRegistration_info->setText(QApplication::translate("doubsClass", "Registration info", 0, QApplication::UnicodeUTF8));
actionTbarSignIn->setText(QApplication::translate("doubsClass", "SignIn", 0, QApplication::UnicodeUTF8));
actionTbarSettings->setText(QApplication::translate("doubsClass", "Settings", 0, QApplication::UnicodeUTF8));
actionTbarAddressBook->setText(QApplication::translate("doubsClass", "AddressBook", 0, QApplication::UnicodeUTF8));
actionTbarSignOut->setText(QApplication::translate("doubsClass", "SignOut", 0, QApplication::UnicodeUTF8));
actionOpen_Log_File->setText(QApplication::translate("doubsClass", "Open Log File", 0, QApplication::UnicodeUTF8));
actionDiagnostics->setText(QApplication::translate("doubsClass", "Diagnostics", 0, QApplication::UnicodeUTF8));
actionAudio_Video_devices->setText(QApplication::translate("doubsClass", "Audio/Video devices", 0, QApplication::UnicodeUTF8));
menuFile->setTitle(QApplication::translate("doubsClass", "&File", 0, QApplication::UnicodeUTF8));
menuAddress_Book->setTitle(QApplication::translate("doubsClass", "&Address Book", 0, QApplication::UnicodeUTF8));
menu->setTitle(QApplication::translate("doubsClass", "Help", 0, QApplication::UnicodeUTF8));
menuTools->setTitle(QApplication::translate("doubsClass", "Tools", 0, QApplication::UnicodeUTF8));
toolBar->setWindowTitle(QApplication::translate("doubsClass", "toolBar", 0, QApplication::UnicodeUTF8));
} // retranslateUi
};
namespace Ui {
class doubsClass: public Ui_doubsClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_DOUBS_H

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -1,27 +0,0 @@
#include "ScreenAuthentication.h"
/* Screen constructor */
ScreenAuthentication::ScreenAuthentication()
:Screen(ScreenAuthentication::getType())
{
ui.setupUi(this);
}
/* Screen destructor */
ScreenAuthentication::~ScreenAuthentication()
{
}
/* get authentication screen type */
SCREEN_TYPE_T ScreenAuthentication::getType()
{
return SCT_AUTHENTICATION;
}
/* function to create authentication screen */
Screen* ScreenAuthentication::CreateScreen()
{
return new ScreenAuthentication();
}
#undef SCREEN_TYPE

View File

@ -1,22 +0,0 @@
#ifndef _DOUBS_SCREEN_AUTHENTICATION_H_
#define _DOUBS_SCREEN_AUTHENTICATION_H_
#include "doubs_config.h"
#include "ui_authentication.h"
#include <Screen.h>
class ScreenAuthentication : public Screen
{
public:
ScreenAuthentication();
~ScreenAuthentication();
static Screen* CreateScreen();
static SCREEN_TYPE_T getType();
private:
Ui::FormAuthentication ui;
};
#endif /* _DOUBS_SCREEN_AUTHENTICATION_H_ */

View File

@ -1,228 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormAuthentication</class>
<widget class="QWidget" name="FormAuthentication">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>323</width>
<height>415</height>
</rect>
</property>
<property name="windowTitle">
<string>Authentication</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_PublicIdentity">
<property name="text">
<string>Public Identity*:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_PublicIdentity">
<property name="text">
<string>sip:doubango@example.com</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_PrivateIdentity">
<property name="text">
<string>Private Identity*:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_PrivateIdentity">
<property name="text">
<string>doubango@example.com</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_SecretKey">
<property name="text">
<string>Secret key*:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_SecretKey">
<property name="text">
<string>mysecret</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_DisplayName">
<property name="text">
<string>Display Name:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_DisplayName">
<property name="text">
<string>Doubango Client</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_Realm">
<property name="text">
<string>Realm*:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_Realm">
<property name="text">
<string>example.com</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_PCSCF">
<property name="text">
<string>Proxy-CSCF*:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_PCSCF">
<property name="text">
<string>192.168.0.14:5060/UDP</string>
</property>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox_EarlyIMS">
<property name="text">
<string>Early IMS</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_Connect">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Connect</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_Cancel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_Revert">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Revert</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,72 +0,0 @@
/****************************************************************************
_ _
| | | |
_ | | ___ _ _| | _ ____ ____ ____ ___
/ || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
\____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
(_____|
Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
This file is part of Open Source Doubango IMS Client Framework project.
DOUBANGO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DOUBANGO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU General Public License
along with DOUBANGO.
****************************************************************************/
#include "doubs.h"
#include <QMessageBox>
#include <globals.h>
doubs::doubs(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
setCentralWidget(ui.mdiArea);
/* init mdi area */
globals::getScreenMgr()->setMdiArea(ui.mdiArea);
/* slots */
connect(ui.actionExit, SIGNAL(triggered()), this, SLOT(close()));
connect(ui.actionOnline, SIGNAL(triggered()), this, SLOT(slotOnline()));
connect(ui.actionBusy, SIGNAL(triggered()), this, SLOT(slotBusy()));
/* register */
}
doubs::~doubs()
{
}
/*******************************************
SLOTS
*******************************************/
/* change user status to 'online' */
void doubs::slotOnline()
{
//QMessageBox::information(this, tr("User status"),
// tr("change user status to 'online'"));
globals::getScreenMgr()->setCurrentScreen(SCT_AUTHENTICATION);
}
/* change user status to 'busy' */
void doubs::slotBusy()
{
QMessageBox::warning(this, tr("User status"),
tr("change user status to 'busy'"));
}

View File

@ -1,49 +0,0 @@
/****************************************************************************
_ _
| | | |
_ | | ___ _ _| | _ ____ ____ ____ ___
/ || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
\____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
(_____|
Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
This file is part of Open Source Doubango IMS Client Framework project.
DOUBANGO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DOUBANGO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU General Public License
along with DOUBANGO.
****************************************************************************/
#ifndef DOUBS_H
#define DOUBS_H
#include <QtGui/QMainWindow>
#include "ui_doubs.h"
class doubs : public QMainWindow
{
Q_OBJECT
public:
doubs(QWidget *parent = 0, Qt::WFlags flags = 0);
~doubs();
private slots:
void slotOnline();
void slotBusy();
private:
Ui::doubsClass ui;
};
#endif // DOUBS_H

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,5 +0,0 @@
<RCC>
<qresource prefix="/doubs" >
<file>Images/splash.PNG</file>
</qresource>
</RCC>

View File

@ -1,2 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "doubs.ico"

View File

@ -1,328 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<author>Doubango Project</author>
<class>doubsClass</class>
<widget class="QMainWindow" name="doubsClass">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>335</width>
<height>477</height>
</rect>
</property>
<property name="windowTitle">
<string>doubs</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QMdiArea" name="mdiArea">
<property name="geometry">
<rect>
<x>9</x>
<y>65</y>
<width>320</width>
<height>351</height>
</rect>
</property>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>335</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="actionOnline"/>
<addaction name="actionBusy"/>
<addaction name="actionBe_right_back"/>
<addaction name="actionAway"/>
<addaction name="actionIn_call"/>
<addaction name="actionOut_to_lunch"/>
<addaction name="actionAppear_off_line"/>
<addaction name="actionSign_Out"/>
<addaction name="separator"/>
<addaction name="actionRegistration_info"/>
<addaction name="actionChange_your_contact_card"/>
<addaction name="separator"/>
<addaction name="actionExit"/>
</widget>
<widget class="QMenu" name="menuAddress_Book">
<property name="title">
<string>&amp;Address Book</string>
</property>
<addaction name="actionAdd_Contact"/>
<addaction name="actionEdit_Contact"/>
<addaction name="actionDelete_Contact"/>
<addaction name="separator"/>
<addaction name="actionAdd_Group"/>
<addaction name="actionEdit_Group"/>
<addaction name="actionDelete_Group"/>
<addaction name="separator"/>
<addaction name="actionAdd_Sphere"/>
<addaction name="actionEdit_Sphere"/>
<addaction name="actionDelete_Sphere"/>
</widget>
<widget class="QMenu" name="menu">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionForum"/>
<addaction name="actionGetting_started"/>
<addaction name="separator"/>
<addaction name="actionRelease_Note"/>
<addaction name="actionCompliance"/>
<addaction name="separator"/>
<addaction name="actionAbout"/>
<addaction name="separator"/>
</widget>
<widget class="QMenu" name="menuTools">
<property name="title">
<string>Tools</string>
</property>
<addaction name="actionOpen_Log_File"/>
<addaction name="actionDiagnostics"/>
<addaction name="separator"/>
<addaction name="actionAudio_Video_devices"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuAddress_Book"/>
<addaction name="menuTools"/>
<addaction name="menu"/>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<widget class="QToolBar" name="toolBar">
<property name="minimumSize">
<size>
<width>33</width>
<height>33</height>
</size>
</property>
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionTbarSignIn"/>
<addaction name="actionTbarSignOut"/>
<addaction name="actionTbarAddressBook"/>
<addaction name="actionTbarSettings"/>
</widget>
<action name="actionOnline">
<property name="text">
<string>Online</string>
</property>
<property name="shortcut">
<string>Ctrl+O</string>
</property>
</action>
<action name="actionSign_Out">
<property name="text">
<string>Sign Out</string>
</property>
<property name="shortcut">
<string>Ctrl+X</string>
</property>
</action>
<action name="actionExit">
<property name="text">
<string>Exit</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="shortcut">
<string>Ctrl+E</string>
</property>
</action>
<action name="actionHelp">
<property name="text">
<string>Help</string>
</property>
</action>
<action name="actionAbout">
<property name="text">
<string>About...</string>
</property>
</action>
<action name="actionAdd_Contact">
<property name="text">
<string>Add Contact</string>
</property>
</action>
<action name="actionEdit_Contact">
<property name="text">
<string>Edit Contact</string>
</property>
</action>
<action name="actionDelete_Contact">
<property name="text">
<string>Delete Contact</string>
</property>
</action>
<action name="actionAdd_Group">
<property name="text">
<string>Add Group</string>
</property>
</action>
<action name="actionEdit_Group">
<property name="text">
<string>Edit Group</string>
</property>
</action>
<action name="actionDelete_Group">
<property name="text">
<string>Delete Group</string>
</property>
</action>
<action name="actionAdd_Sphere">
<property name="text">
<string>Add Sphere</string>
</property>
</action>
<action name="actionEdit_Sphere">
<property name="text">
<string>Edit Sphere</string>
</property>
</action>
<action name="actionDelete_Sphere">
<property name="text">
<string>Delete Sphere</string>
</property>
</action>
<action name="actionGetting_started">
<property name="text">
<string>Getting started</string>
</property>
</action>
<action name="actionRelease_Note">
<property name="text">
<string>Release Note</string>
</property>
</action>
<action name="actionForum">
<property name="text">
<string>Forum</string>
</property>
</action>
<action name="actionCompliance">
<property name="text">
<string>Compliance</string>
</property>
</action>
<action name="actionBusy">
<property name="text">
<string>Busy</string>
</property>
<property name="shortcut">
<string>Ctrl+Y</string>
</property>
</action>
<action name="actionBe_right_back">
<property name="text">
<string>Be right back</string>
</property>
<property name="shortcut">
<string>Ctrl+K</string>
</property>
</action>
<action name="actionAway">
<property name="text">
<string>Away</string>
</property>
<property name="shortcut">
<string>Ctrl+A</string>
</property>
</action>
<action name="actionIn_call">
<property name="text">
<string>In call</string>
</property>
<property name="shortcut">
<string>Ctrl+I</string>
</property>
</action>
<action name="actionOut_to_lunch">
<property name="text">
<string>Out to lunch</string>
</property>
</action>
<action name="actionAppear_off_line">
<property name="text">
<string>Appear off line</string>
</property>
</action>
<action name="actionChange_your_contact_card">
<property name="text">
<string>Change your contact card</string>
</property>
</action>
<action name="actionRegistration_info">
<property name="text">
<string>Registration info</string>
</property>
</action>
<action name="actionTbarSignIn">
<property name="text">
<string>SignIn</string>
</property>
</action>
<action name="actionTbarSettings">
<property name="text">
<string>Settings</string>
</property>
</action>
<action name="actionTbarAddressBook">
<property name="text">
<string>AddressBook</string>
</property>
</action>
<action name="actionTbarSignOut">
<property name="text">
<string>SignOut</string>
</property>
</action>
<action name="actionOpen_Log_File">
<property name="text">
<string>Open Log File</string>
</property>
</action>
<action name="actionDiagnostics">
<property name="text">
<string>Diagnostics</string>
</property>
</action>
<action name="actionAudio_Video_devices">
<property name="text">
<string>Audio/Video devices</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="doubs.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -1,436 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="doubs"
ProjectGUID="{4DA9C90E-C9F1-41BC-9F8F-9CE285F36CFC}"
Keyword="Qt4VSv1.0"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\"
PreprocessorDefinitions="UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib advapi32.lib qtmain.lib QtCore.lib QtGui.lib"
OutputFile="$(OutDir)\$(ProjectName).exe"
AdditionalLibraryDirectories="$(QTDIR)\lib"
GenerateDebugInformation="false"
SubSystem="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\GeneratedFiles;&quot;$(QTDIR)\include&quot;;&quot;.\GeneratedFiles\$(ConfigurationName)&quot;;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;.\;&quot;$(SolutionDir)\libdoubs&quot;"
PreprocessorDefinitions="UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(OutDir)\libdoubs.lib kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib qtmaind.lib QtCored.lib QtGuid.lib"
OutputFile="$(OutDir)\$(ProjectName).exe"
AdditionalLibraryDirectories="$(QTDIR)\lib"
GenerateDebugInformation="true"
SubSystem="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;cxx;c;def"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\doubs.cpp"
>
</File>
<File
RelativePath=".\main.cpp"
>
</File>
<Filter
Name="Screens"
>
<File
RelativePath=".\ScreenAuthentication.cpp"
>
</File>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\doubs.h"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -I&quot;.\GeneratedFiles\.&quot; -I&quot;$(QTDIR)\include\.&quot; -I&quot;.\GeneratedFiles\$(ConfigurationName)\.&quot; -I&quot;$(QTDIR)\include\QtCore\.&quot; -I&quot;$(QTDIR)\include\QtGui\.&quot; -I&quot;.\.&quot; &quot;.\doubs.h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -I&quot;.\GeneratedFiles\.&quot; -I&quot;$(QTDIR)\include\.&quot; -I&quot;.\GeneratedFiles\$(ConfigurationName)\.&quot; -I&quot;$(QTDIR)\include\QtCore\.&quot; -I&quot;$(QTDIR)\include\QtGui\.&quot; -I&quot;.\.&quot; -I&quot;$(SolutionDir)\libdoubs\.&quot; &quot;.\doubs.h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\doubs_config.h"
>
</File>
<Filter
Name="Screens"
>
<File
RelativePath=".\ScreenAuthentication.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="Form Files"
Filter="ui"
UniqueIdentifier="{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"
>
<File
RelativePath=".\authentication.ui"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Uic&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies="$(QTDIR)\bin\uic.exe"
Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Uic&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies="$(QTDIR)\bin\uic.exe"
Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\doubs.ui"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Uic&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies="$(QTDIR)\bin\uic.exe"
Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Uic&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies="$(QTDIR)\bin\uic.exe"
Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="qrc;*"
UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
ParseFiles="false"
>
<File
RelativePath=".\doubs.qrc"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Rcc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\rcc.exe&quot; -name &quot;$(InputName)&quot; -no-compress &quot;$(InputPath)&quot; -o .\GeneratedFiles\qrc_$(InputName).cpp&#x0D;&#x0A;"
AdditionalDependencies="$(InputPath)"
Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Rcc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\rcc.exe&quot; -name &quot;$(InputName)&quot; -no-compress &quot;$(InputPath)&quot; -o .\GeneratedFiles\qrc_$(InputName).cpp&#x0D;&#x0A;"
AdditionalDependencies="$(InputPath)"
Outputs=".\GeneratedFiles\qrc_$(InputName).cpp"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Generated Files"
Filter="moc;h;cpp"
UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
SourceControlFiles="false"
>
<File
RelativePath=".\GeneratedFiles\qrc_doubs.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\GeneratedFiles\ui_authentication.h"
>
</File>
<File
RelativePath=".\GeneratedFiles\ui_doubs.h"
>
</File>
<Filter
Name="Release"
Filter="cpp;moc"
SourceControlFiles="false"
>
<File
RelativePath=".\GeneratedFiles\Release\moc_doubs.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Debug"
Filter="cpp;moc"
SourceControlFiles="false"
>
<File
RelativePath=".\GeneratedFiles\Debug\moc_doubs.cpp"
>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
</Filter>
</Filter>
<File
RelativePath=".\doubs.ico"
>
</File>
<File
RelativePath=".\doubs.rc"
>
</File>
</Files>
<Globals>
<Global
Name="lupdateOnBuild"
Value="0"
/>
<Global
Name="MocDir"
Value=".\GeneratedFiles\$(ConfigurationName)"
/>
<Global
Name="MocOptions"
Value=""
/>
<Global
Name="QtVersion Win32"
Value="qt-kinetic"
/>
<Global
Name="RccDir"
Value=".\GeneratedFiles"
/>
<Global
Name="UicDir"
Value=".\GeneratedFiles"
/>
</Globals>
</VisualStudioProject>

View File

@ -1,4 +0,0 @@
#ifndef _DOUBS_BOUBS_CONFIG_H_
#define _DOUBS_BOUBS_CONFIG_H_
#endif

View File

@ -1,65 +0,0 @@
/****************************************************************************
_ _
| | | |
_ | | ___ _ _| | _ ____ ____ ____ ___
/ || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
\____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
(_____|
Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
This file is part of Open Source Doubango IMS Client Framework project.
DOUBANGO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DOUBANGO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU General Public License
along with DOUBANGO.
****************************************************************************/
#include "doubs.h"
#include "ScreenAuthentication.h"
#include <QtGui/QApplication>
#include <QtGui>
#include <globals.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPixmap pix(":/doubs/Images/splash.PNG");
QSplashScreen splash(pix);
splash.show();
/// ----BEGIN
/* init globals */
splash.showMessage("globals::init");
globals::init();
a.processEvents();
/* register Screens */
splash.showMessage("Register functions");
globals::getScreenMgr()->registerScreenCreatorFunc(ScreenAuthentication::getType(), ScreenAuthentication::CreateScreen);
a.processEvents();
/// ---- END
/* create and show main window */
doubs w;
w.show();
/* finish splash */
splash.finish(&w);
return a.exec();
}

View File

@ -1,69 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'Screen.h'
**
** Created: Wed Oct 28 01:16:35 2009
** by: The Qt Meta Object Compiler version 62 (Qt 4.6.0)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../../Screen.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'Screen.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 62
#error "This file was generated using the moc from 4.6.0. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_Screen[] = {
// content:
4, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
static const char qt_meta_stringdata_Screen[] = {
"Screen\0"
};
const QMetaObject Screen::staticMetaObject = {
{ &QWidget::staticMetaObject, qt_meta_stringdata_Screen,
qt_meta_data_Screen, 0 }
};
#ifdef Q_NO_DATA_RELOCATION
const QMetaObject &Screen::getStaticMetaObject() { return staticMetaObject; }
#endif //Q_NO_DATA_RELOCATION
const QMetaObject *Screen::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
}
void *Screen::qt_metacast(const char *_clname)
{
if (!_clname) return 0;
if (!strcmp(_clname, qt_meta_stringdata_Screen))
return static_cast<void*>(const_cast< Screen*>(this));
return QWidget::qt_metacast(_clname);
}
int Screen::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
return _id;
}
QT_END_MOC_NAMESPACE

View File

@ -1,15 +0,0 @@
#include "Screen.h"
#include "globals.h"
Screen::Screen(SCREEN_TYPE_T _type, QWidget *parent, Qt::WFlags flags):
QWidget(parent, flags), type(_type)
{
/* add the screen to the map */
//globals::getScreenMgr()->addScreen(this);
}
Screen::~Screen()
{
/* remove the screen from the map */
//globals::getScreenMgr()->removeScreen(this);
}

View File

@ -1,36 +0,0 @@
#ifndef _LIBDOUBS_SCREEN_H
#define _LIBDOUBS_SCREEN_H
#include "libdoubs_config.h"
#include <QtGui/QWidget>
class Screen;
/* function pointer ... */
typedef Screen* (*ScreenCreatorFunc)();
/* screen type */
typedef enum SCREEN_TYPE_E
{
SCT_AUTHENTICATION,
SCT_CONTACTS,
SCT_HISTORY
}
SCREEN_TYPE_T;
class LIBDOUBS_API Screen : public QWidget
{
Q_OBJECT
public:
Screen(SCREEN_TYPE_T type, QWidget *parent = 0, Qt::WFlags flags = 0);
~Screen();
public:
inline SCREEN_TYPE_T getType() const{ return this->type; }
protected:
SCREEN_TYPE_T type;
};
#endif /* _LIBDOUBS_SCREEN_H */

View File

@ -1,76 +0,0 @@
#include "ScreenMgr.h"
#include <algorithm>
/* predicate to find screen by type */
struct pred_screen_find_by_type: public std::binary_function< const Screen*, SCREEN_TYPE_T, bool > {
bool operator () ( const Screen* screen, SCREEN_TYPE_T type ) const {
return screen->getType() == type;
}
};
/* predicate to find screen by type */
struct pred_screendef_find_by_type: public std::binary_function< const ScreenDefinition_t*, SCREEN_TYPE_T, bool > {
bool operator () ( const ScreenDefinition_t* screendef, SCREEN_TYPE_T type ) const {
return screendef->type == type;
}
};
#define DELETE_SCREEN_DEF(screenDef)\
if((screenDef)){\
if((screenDef)->screen) delete ((screenDef)->screen); \
delete (screenDef); \
}
/* constructor */
ScreenMgr::ScreenMgr()
{
this->mdiArea = 0;
}
/* destructor */
ScreenMgr::~ScreenMgr()
{
std::list<ScreenDefinition_t*>::iterator it;
for ( it=this->screenDefinitions.begin() ; it != this->screenDefinitions.end(); it++ )
{
DELETE_SCREEN_DEF(*it);
}
}
/* set mdi area */
void ScreenMgr::setMdiArea(QMdiArea* area)
{
this->mdiArea = area;
}
/* set current screen */
inline void ScreenMgr::setCurrentScreen(SCREEN_TYPE_T type)
{
std::list<ScreenDefinition_t*>::iterator iter = std::find_if( this->screenDefinitions.begin(), this->screenDefinitions.end(), std::bind2nd(pred_screendef_find_by_type(), type) );
if(iter == this->screenDefinitions.end())
{ /* not registered ==> FIXME: print error message */
}
if(!(*iter)->screen)
{ //* create creen NULL */
(*iter)->screen = (*iter)->creatorFunc();
(*iter)->screen->setParent(this->mdiArea);
}
(*iter)->screen->showMaximized();
}
/* register screen creator function */
void ScreenMgr::registerScreenCreatorFunc(SCREEN_TYPE_T type, ScreenCreatorFunc creatorFunc)
{
if(std::find_if( this->screenDefinitions.begin(), this->screenDefinitions.end(), std::bind2nd( pred_screendef_find_by_type(), type ) )
!= this->screenDefinitions.end())
{
return;
}
ScreenDefinition_t* screenDef = new ScreenDefinition_t();
screenDef->creatorFunc = creatorFunc;
screenDef->type = type;
this->screenDefinitions.push_back(screenDef);
}

View File

@ -1,45 +0,0 @@
#ifndef _LIBDOUBS_SCREENMGR_H
#define _LIBDOUBS_SCREENMGR_H
#include "libdoubs_config.h"
#include "Screen.h"
#include <QtGui/QMdiArea>
#include <list>
typedef struct ScreenDefinition_s
{
SCREEN_TYPE_T type;
ScreenCreatorFunc creatorFunc;
Screen* screen;
ScreenDefinition_s()
{
screen = 0;
}
}
ScreenDefinition_t;
class LIBDOUBS_API ScreenMgr
{
public:
ScreenMgr();
~ScreenMgr();
public:
void setMdiArea(QMdiArea* area);
inline void setCurrentScreen(SCREEN_TYPE_T type);
inline void registerScreenCreatorFunc(SCREEN_TYPE_T type, ScreenCreatorFunc creatorFunc);
private:
private:
QMdiArea *mdiArea;
std::list<ScreenDefinition_t*> screenDefinitions;
private:
};
#endif /* _LIBDOUBS_SCREENMGR_H */

View File

@ -1,17 +0,0 @@
#include "globals.h"
ScreenMgr* globals::screenMgr;
/* init globals */
void globals::init()
{
/* screen manager */
globals::screenMgr = 0;
}
/* get screen manager */
ScreenMgr* globals::getScreenMgr()
{
if(!globals::screenMgr) globals::screenMgr = new ScreenMgr();
return globals::screenMgr;
}

View File

@ -1,21 +0,0 @@
#ifndef _LIBDOUBS_GLOBALS_H
#define _LIBDOUBS_GLOBALS_H
#include "libdoubs_config.h"
#include "ScreenMgr.h"
class LIBDOUBS_API globals
{
public:
public:
static void init();
static ScreenMgr* getScreenMgr();
static void uninit();
private:
static ScreenMgr* screenMgr;
};
#endif /* _LIBDOUBS_GLOBALS_H */

View File

@ -1,293 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="libdoubs"
ProjectGUID="{6560C245-E1C8-491D-8C7E-6B84DDB5D4C4}"
Keyword="Qt4VSv1.0"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
ConfigurationType="4"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;.\"
PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;LIBDOUBS_EXPORTS"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
AdditionalLibraryDirectories="$(QTDIR)\lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;.\"
PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_CORE_LIB;LIBDOUBS_EXPORTS"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
AdditionalLibraryDirectories="$(QTDIR)\lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;cxx;c;def"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\globals.cpp"
>
</File>
<File
RelativePath=".\Screen.cpp"
>
</File>
<File
RelativePath=".\ScreenMgr.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\globals.h"
>
</File>
<File
RelativePath=".\libdoubs_config.h"
>
</File>
<File
RelativePath=".\Screen.h"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot; -DLIBDOUBS_EXPORTS -DNDEBUG -DQT_CORE_LIB -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I&quot;$(QTDIR)\include\.&quot; -I&quot;$(QTDIR)\include\QtCore\.&quot; -I&quot;.\.&quot; -I&quot;.\GeneratedFiles\$(ConfigurationName)\.&quot; -I&quot;.\GeneratedFiles\.&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing $(InputFileName)..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot; -DLIBDOUBS_EXPORTS -DQT_CORE_LIB -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I&quot;$(QTDIR)\include\.&quot; -I&quot;$(QTDIR)\include\QtCore\.&quot; -I&quot;.\.&quot; -I&quot;.\GeneratedFiles\$(ConfigurationName)\.&quot; -I&quot;.\GeneratedFiles\.&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ScreenMgr.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="qrc;*"
UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
ParseFiles="false"
>
</Filter>
<Filter
Name="Generated Files"
Filter="moc;h;cpp"
UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
SourceControlFiles="false"
>
<Filter
Name="Release"
Filter="cpp;moc"
SourceControlFiles="false"
>
<File
RelativePath=".\GeneratedFiles\Release\moc_Screen.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Debug"
Filter="cpp;moc"
SourceControlFiles="false"
>
<File
RelativePath=".\GeneratedFiles\Debug\moc_Screen.cpp"
>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
</Filter>
</Filter>
</Files>
<Globals>
<Global
Name="lupdateOnBuild"
Value="0"
/>
<Global
Name="MocDir"
Value=".\GeneratedFiles\$(ConfigurationName)"
/>
<Global
Name="MocOptions"
Value=""
/>
<Global
Name="QtVersion Win32"
Value="qt-kinetic"
/>
<Global
Name="RccDir"
Value=".\GeneratedFiles"
/>
<Global
Name="UicDir"
Value=".\GeneratedFiles"
/>
</Globals>
</VisualStudioProject>

View File

@ -1,12 +0,0 @@
#ifndef _LIBDOUBS_LIBDOUBSCONFIG_H
#define _LIBDOUBS_LIBDOUBSCONFIG_H
#if (defined(WIN32) || defined(__SYMBIAN32__)) && defined(LIBDOUBS_EXPORTS)
# define LIBDOUBS_API __declspec(dllexport)
#elif (defined(WIN32) || defined(__SYMBIAN32__)) && defined(LIBDOUBS_IMPORTS)
# define LIBDOUBS_API __declspec(dllimport)
#else
# define LIBDOUBS_API
#endif
#endif /* _LIBDOUBS_LIBDOUBSCONFIG_H */

View File

@ -1,49 +0,0 @@
Current development team
------------------------
Pekka Pessi <pekka.pessi -at nokia -dot com>
Martti Mela <martti.mela -at nokia -dot com>
Kai Vehmanen <kai.vehmanen -at nokia -dot com>
Contributors (in alphabetical order, surname first)
---------------------------------------------------
Alaoui, Youness <youness -dot alaoui -at collabora -dot co -dot uk>
Chan, Tat <first.surname@nokia.com>
Ciarkowski, Andrzej <wp-voigtkampff -at users -dot sourceforge -dot net>
Czapiga, Brian <rys -at evool -dot com>
Denis-Courmont, Remi <first.surname@nokia.com>
Ferrari, Fabio <fabioferrari -at gmail -dot com>
Filonenko Roman <shkoder -at ua -dot fm>
Haataja, Mikko <first.surname@nokia.com>
Jacobs, Remeres <first.surname@nokia.com>
Jalava, Teemu <first.surname@nokia.com>
Jerris, Michael <mike -at jerris -dot com>
Katcipis, Tiago <katcipis AT inf DOT ufcs DOT br>
Knoblich, Stefan
Legostayev, Denis <legostayev -at neic -dot nsk -dot su>
Lenk, Jeff <jlenk -at frontiernet -dot net>
Leuenberger, Stefan <first.surname -at netmodule -dot com>
Margarido, Fabio <fabiomargarido AT gmail DOT com>
Neuner, Jarod <janeuner -at networkharbor -dot com>
Paul, Johan <johan -dot paul -at plenware -dot fi>
Pizarro, Paulo <paulo -dot pizarro -at gmail -dot com>
Prado, Dimitri E. <dprado -at e3c -dot com -dot br>
Puolakka, Petteri <first.surname@nokia.com>
Puustinen, Ismo <first.surname@nokia.com>
Rinne-Rahkola, Pasi <first.surname@nokia.com>
Richards, Jerry <jerryr at tonecommander dot com>
Rondina, Daniele <geaary -at gmail -dot com>
Saari, Mika <first.surname@nokia.com>
Sabatini, Stefano
Selin, Jari <first.surname@nokia.com>
Suttner, Bernhard <suttner -at comdasys -dot com>
Underwood, Steve <steveu -at coppice -dot org>
Urpalainen, Jari <first.surname@nokia.com>
Whittaker, Colin <colinw -at occamnetworks -dot com>
Zabaluev, Mikhail <first.surname@nokia.com>
Zaikin, Maxim <Maxim -at amsd -dot com>
Note: for details on who did what, see the version control
system change history, and release notes for past releases at
http://sofia-sip.sourceforge.net/relnotes/

View File

@ -1,504 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@ -1,251 +0,0 @@
This package contains the Sofia-SIP library.
Copyright (C) 2005-2006 Nokia Corporation and others (see the
in individual files for a detailed list of copyright holders).
Contact: Pekka Pessi <Pekka.Pessi@nokia.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2.1 of
the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License (LICENSE) for more details.
----------------------------------------------------------------------------
libsofia-sip-ua/su/inet_ntop.c
The package also contains files licensed by Internet Software Consortium.
These files are distributed with the following copyright notice:
Copyright (c) 1996 by Internet Software Consortium.
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
----------------------------------------------------------------------------
libsofia-sip-ua/su/inet_pton.c
The package also contains files licensed by Internet Software Consortium and
Internet Systems Consortium, Inc.. These files are distributed with the
following copyright notice:
Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
Copyright (c) 1996,1999 by Internet Software Consortium.
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----------------------------------------------------------------------------
libsofia-sip-ua/su/sofia-sip/su_addrinfo.h
libsofia-sip-ua/su/su_addrinfo.c
The package also contains files licensed by WIDE Project. These files are
distributed with the following copyright notice:
Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
----------------------------------------------------------------------------
libsofia-sip-ua/su/getopt.c
The package also contains files licensed by IBM Corporation. These files are
distributed with the following copyright notice:
This module contains code made available by IBM
Corporation on an AS IS basis. Any one receiving the
module is considered to be licensed under IBM copyrights
to use the IBM-provided source code in any way he or she
deems fit, including copying it, compiling it, modifying
it, and redistributing it, with or without
modifications. No license under any IBM patents or
patent applications is to be implied from this copyright
license.
A user of the module should understand that IBM cannot
provide technical support for the module and will not be
responsible for any consequences of use of the program.
Any notices, including this one, are not to be removed
from the module without the prior written consent of
IBM.
----------------------------------------------------------------------------
libsofia-sip-ua/su/su_md5.c
The package also contains files written by Colin Plumb. These files are
distributed with the following copyright notice:
This code implements the MD5 message-digest algorithm. The algorithm is due
to Ron Rivest. This code was initially written by Colin Plumb in 1993, no
copyright is claimed. This code is in the public domain; do with it what you
wish.
Equivalent code is available from RSA Data Security, Inc. This code has
been tested against that, and is equivalent, except that you don't need
to include two pages of legalese with every copy.
----------------------------------------------------------------------------
libsofia-sip-ua/su/strtoull.c
The package also contains files licensed by University of California and Sun
Microsystems. These files are distributed with the following copyright
notice:
Copyright (c) 1988 The Regents of the University of California.
Copyright (c) 1994 Sun Microsystems, Inc.
The following license.terms for information on usage and redistribution
of this individual file, and for a DISCLAIMER OF ALL WARRANTIES.
This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState
Corporation and other parties. The following terms apply to all files
associated with the software unless explicitly disclaimed in
individual files.
The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.
----------------------------------------------------------------------------
libsofia-sip-ua/ipt/rc4.c
The package also contains files written by Pekka Pessi. These files are
distributed with the following copyright notice:
Copyright (c) 1996 Pekka Pessi. All rights reserved.
This source code is provided for unrestricted use. Users may copy or
modify this source code without charge.
THIS SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND
INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A
PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE
PRACTICE.
This source code is provided with no support and without any obligation
on the part of author to assist in its use, correction, modification or
enhancement.
AUTHOR SHALL HAVE NO LIABILITY WITH RESPECT TO THE INFRINGEMENT OF
COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE OR ANY PART
THEREOF.
In no event will author be liable for any lost revenue or profits or
other special, indirect and consequential damages, even if author has
been advised of the possibility of such damages.
----------------------------------------------------------------------------
libsofia-sip-ua/su/poll.c
The package also contains files from GNU C Library by Free Software
Foundation.
These files are distributed with the following copyright notice:
Copyright (C) 1994,1996,1997,1998,1999,2001,2002
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
----------------------------------------------------------------------------

View File

@ -1,18 +0,0 @@
===============================================================
ChangeLog / Sofia-SIP - SIP User-Agent library
===============================================================
Sofia-SIP library ChangeLog files are available in the
following places:
- per subdirectory ChangeLog files
- all non-trivial changes to files (unless documented
elsewhere)
- version control system changelogs
- darcs and CVS tree repositories (see README.developers
for latest repository location information)
- RELEASE files
- changes for the current version store in top-level
RELEASE files of the source tree
- old RELEASE files available at:
http://sofia-sip.sourceforge.net/relnotes/

File diff suppressed because it is too large Load Diff

View File

@ -1,78 +0,0 @@
#
# Makefile.am for sofia-sip package
#
# Copyright (C) 2005,2006 Nokia Corporation
# Contact: Pekka Pessi <pekka.pessi@nokia.com>
# Licensed under LGPL. See file COPYING.
AUTOMAKE_OPTIONS = foreign 1.7
SUBDIRS = libsofia-sip-ua $(GLIB_SUBDIRS) utils packages tests
DIST_SUBDIRS = libsofia-sip-ua libsofia-sip-ua-glib utils packages \
tests win32 open_c
# note: when glib devel files are not available, make should not
# enter the libsofia-sip-ua-glib subdir at all
if HAVE_GLIB
GLIB_SUBDIRS = libsofia-sip-ua-glib
endif
PACKAGE = @PACKAGE@
VERSION = @VERSION@
EXTRA_DIST = AUTHORS COPYING COPYRIGHTS ChangeLog.ext-trees \
README README.developers RELEASE TODO
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST += m4/sac-general.m4 m4/sac-coverage.m4 \
m4/sac-su2.m4 m4/sac-tport.m4 m4/sac-openssl.m4
EXTRA_DIST += docs/build_system.txt \
docs/devel_platform_notes.txt \
docs/release_management.txt
EXTRA_DIST += scripts/lcov-report scripts/uncovered \
scripts/hide_emails.sh
dist_man_MANS = man/man1/sip-date.1 man/man1/sip-options.1 \
man/man1/localinfo.1 man/man1/addrinfo.1 \
man/man1/stunc.1 man/man1/sip-dig.1
$(dist_man_MANS): manpages
manpages:
-mkdir -p man man/man1 2> /dev/null
if HAVE_DOXYGEN
$(MAKE) $(AM_MAKEFLAGS) -C libsofia-sip-ua/docs built-sources
@echo 'cd utils && $(DOXYGEN)'
@cd utils && \
{ exec 3>&1 1>&2; { $(DOXYGEN) 2>&1; echo $$? >& 3 ;} | \
fgrep -v 'Warning: explicit' ;} | { read x; exit $$x ;}
@rm -f man/man1/_*.1
else
-touch $(dist_man_MANS)
endif
CLEANFILES = $(dist_man_MANS)
built-sources clean-built-sources valcheck doxygen:
@failcom='exit 1'; for f in x $$MAKEFLAGS; do \
case $$f in *=* | --[!k]*);; *k*) failcom='fail=yes';; esac; done; \
for i in libsofia-sip-ua $(GLIB_SUBDIRS) ; do \
(cd $$i && $(MAKE) $(AM_MAKEFLAGS) $@) || eval $$failcom; \
done ; \
test -z "$$fail"
PHONY = built-sources clean-built-sources valcheck doxygen manpages
if HAVE_LCOV
include $(top_srcdir)/rules/lcov.am
lcov-upload: lcov
rsync -rvz -e ssh --delete lcov/* sofia-sip.org:/var/www/coverage/lcov/
endif
.PHONY: $(PHONY)

View File

@ -1,882 +0,0 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#
# Makefile.am for sofia-sip package
#
# Copyright (C) 2005,2006 Nokia Corporation
# Contact: Pekka Pessi <pekka.pessi@nokia.com>
# Licensed under LGPL. See file COPYING.
#
# Generate lcov output
#
#
# Copyright (C) 2007 Nokia Corporation
# Contact: Pekka Pessi <pekka.pessi@nokia.com>
# Licensed under LGPL. See file COPYING.
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = README $(am__configure_deps) $(dist_man_MANS) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(top_srcdir)/configure \
$(top_srcdir)/libsofia-sip-ua/features/sofia-sip/sofia_features.h.in \
$(top_srcdir)/libsofia-sip-ua/su/sofia-sip/su_configure.h.in \
$(top_srcdir)/rules/lcov.am AUTHORS COPYING ChangeLog TODO \
compile config.guess config.sub depcomp install-sh ltmain.sh \
missing
@HAVE_GENPNG_TRUE@@HAVE_LCOV_TRUE@am__append_1 = --frames
@HAVE_LCOV_TRUE@am__append_2 = lcov lcov-report lcov-rerun clean-lcov covcheck uncovered
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/sac-coverage.m4 \
$(top_srcdir)/m4/sac-general.m4 \
$(top_srcdir)/m4/sac-openssl.m4 $(top_srcdir)/m4/sac-su2.m4 \
$(top_srcdir)/m4/sac-tport.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h \
$(top_builddir)/libsofia-sip-ua/su/sofia-sip/su_configure.h
CONFIG_CLEAN_FILES = \
libsofia-sip-ua/features/sofia-sip/sofia_features.h
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)"
NROFF = nroff
MANS = $(dist_man_MANS)
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ACLOCAL_AMFLAGS = -I m4
ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHECK_CFLAGS = @CHECK_CFLAGS@
CHECK_LIBS = @CHECK_LIBS@
COREFOUNDATION_FALSE = @COREFOUNDATION_FALSE@
COREFOUNDATION_TRUE = @COREFOUNDATION_TRUE@
COVERAGE_FLAGS = @COVERAGE_FLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWFLAG = @CWFLAG@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DOXYGEN = @DOXYGEN@
DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_COVERAGE_FALSE = @ENABLE_COVERAGE_FALSE@
ENABLE_COVERAGE_TRUE = @ENABLE_COVERAGE_TRUE@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
EXPENSIVE_CHECKS_FALSE = @EXPENSIVE_CHECKS_FALSE@
EXPENSIVE_CHECKS_TRUE = @EXPENSIVE_CHECKS_TRUE@
F77 = @F77@
FFLAGS = @FFLAGS@
GCOV = @GCOV@
GENHTML = @GENHTML@
GENPNG = @GENPNG@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_VERSION = @GLIB_VERSION@
GREP = @GREP@
HAVE_CHECK_FALSE = @HAVE_CHECK_FALSE@
HAVE_CHECK_TRUE = @HAVE_CHECK_TRUE@
HAVE_DOXYGEN_FALSE = @HAVE_DOXYGEN_FALSE@
HAVE_DOXYGEN_TRUE = @HAVE_DOXYGEN_TRUE@
HAVE_GENPNG_FALSE = @HAVE_GENPNG_FALSE@
HAVE_GENPNG_TRUE = @HAVE_GENPNG_TRUE@
HAVE_GLIB_FALSE = @HAVE_GLIB_FALSE@
HAVE_GLIB_TRUE = @HAVE_GLIB_TRUE@
HAVE_LCOV_FALSE = @HAVE_LCOV_FALSE@
HAVE_LCOV_TRUE = @HAVE_LCOV_TRUE@
HAVE_MINGW32_FALSE = @HAVE_MINGW32_FALSE@
HAVE_MINGW32_TRUE = @HAVE_MINGW32_TRUE@
HAVE_NTH_FALSE = @HAVE_NTH_FALSE@
HAVE_NTH_TRUE = @HAVE_NTH_TRUE@
HAVE_NTLM_FALSE = @HAVE_NTLM_FALSE@
HAVE_NTLM_TRUE = @HAVE_NTLM_TRUE@
HAVE_STUN_FALSE = @HAVE_STUN_FALSE@
HAVE_STUN_TRUE = @HAVE_STUN_TRUE@
HAVE_TLS_FALSE = @HAVE_TLS_FALSE@
HAVE_TLS_TRUE = @HAVE_TLS_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCOV = @LCOV@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBVER_SOFIA_SIP_UA_AGE = @LIBVER_SOFIA_SIP_UA_AGE@
LIBVER_SOFIA_SIP_UA_CUR = @LIBVER_SOFIA_SIP_UA_CUR@
LIBVER_SOFIA_SIP_UA_GLIB_AGE = @LIBVER_SOFIA_SIP_UA_GLIB_AGE@
LIBVER_SOFIA_SIP_UA_GLIB_CUR = @LIBVER_SOFIA_SIP_UA_GLIB_CUR@
LIBVER_SOFIA_SIP_UA_GLIB_REV = @LIBVER_SOFIA_SIP_UA_GLIB_REV@
LIBVER_SOFIA_SIP_UA_GLIB_SOVER = @LIBVER_SOFIA_SIP_UA_GLIB_SOVER@
LIBVER_SOFIA_SIP_UA_REV = @LIBVER_SOFIA_SIP_UA_REV@
LIBVER_SOFIA_SIP_UA_SOVER = @LIBVER_SOFIA_SIP_UA_SOVER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MINGW_ENVIRONMENT = @MINGW_ENVIRONMENT@
MOSTLYCLEANFILES = @MOSTLYCLEANFILES@
NDEBUG_FALSE = @NDEBUG_FALSE@
NDEBUG_TRUE = @NDEBUG_TRUE@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
REPLACE_LIBADD = @REPLACE_LIBADD@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOFIA_CFLAGS = @SOFIA_CFLAGS@
SOFIA_GLIB_PKG_REQUIRES = @SOFIA_GLIB_PKG_REQUIRES@
STRIP = @STRIP@
TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
VERSION = @VERSION@
VER_LIBSOFIA_SIP_UA_MAJOR_MINOR = @VER_LIBSOFIA_SIP_UA_MAJOR_MINOR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
include_sofiadir = @include_sofiadir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
openssl_CFLAGS = @openssl_CFLAGS@
openssl_LIBS = @openssl_LIBS@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
AUTOMAKE_OPTIONS = foreign 1.7
SUBDIRS = libsofia-sip-ua $(GLIB_SUBDIRS) utils packages tests
DIST_SUBDIRS = libsofia-sip-ua libsofia-sip-ua-glib utils packages \
tests win32 open_c
# note: when glib devel files are not available, make should not
# enter the libsofia-sip-ua-glib subdir at all
@HAVE_GLIB_TRUE@GLIB_SUBDIRS = libsofia-sip-ua-glib
EXTRA_DIST = AUTHORS COPYING COPYRIGHTS ChangeLog.ext-trees README \
README.developers RELEASE TODO m4/sac-general.m4 \
m4/sac-coverage.m4 m4/sac-su2.m4 m4/sac-tport.m4 \
m4/sac-openssl.m4 docs/build_system.txt \
docs/devel_platform_notes.txt docs/release_management.txt \
scripts/lcov-report scripts/uncovered scripts/hide_emails.sh
dist_man_MANS = man/man1/sip-date.1 man/man1/sip-options.1 \
man/man1/localinfo.1 man/man1/addrinfo.1 \
man/man1/stunc.1 man/man1/sip-dig.1
CLEANFILES = $(dist_man_MANS)
PHONY = built-sources clean-built-sources valcheck doxygen manpages \
$(am__append_2)
# Scripts
@HAVE_LCOV_TRUE@LCOV_UNCOVERED = ${top_srcdir}/scripts/uncovered
@HAVE_LCOV_TRUE@LCOV_REPORT = ${top_srcdir}/scripts/lcov-report
# Report directory
@HAVE_LCOV_TRUE@lcovdir = ${top_builddir}/lcov
# Options
@HAVE_LCOV_TRUE@GENHTML_OPTIONS = --show-details --legend \
@HAVE_LCOV_TRUE@ $(am__append_1)
# Fancy shell command that expands to directory relative to top_builddir
@HAVE_LCOV_TRUE@expand_subdir = `pwd|sed "s'\`cd ${top_builddir};pwd\`''"`
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/lcov.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
libsofia-sip-ua/su/sofia-sip/su_configure.h: libsofia-sip-ua/su/sofia-sip/stamp-h2
@if test ! -f $@; then \
rm -f libsofia-sip-ua/su/sofia-sip/stamp-h2; \
$(MAKE) libsofia-sip-ua/su/sofia-sip/stamp-h2; \
else :; fi
libsofia-sip-ua/su/sofia-sip/stamp-h2: $(top_srcdir)/libsofia-sip-ua/su/sofia-sip/su_configure.h.in $(top_builddir)/config.status
@rm -f libsofia-sip-ua/su/sofia-sip/stamp-h2
cd $(top_builddir) && $(SHELL) ./config.status libsofia-sip-ua/su/sofia-sip/su_configure.h
distclean-hdr:
-rm -f config.h stamp-h1 libsofia-sip-ua/su/sofia-sip/su_configure.h libsofia-sip-ua/su/sofia-sip/stamp-h2
libsofia-sip-ua/features/sofia-sip/sofia_features.h: $(top_builddir)/config.status $(top_srcdir)/libsofia-sip-ua/features/sofia-sip/sofia_features.h.in
cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkdir_p) $(distdir)/docs $(distdir)/libsofia-sip-ua-glib/su-glib $(distdir)/libsofia-sip-ua/bnf $(distdir)/libsofia-sip-ua/docs $(distdir)/libsofia-sip-ua/features $(distdir)/libsofia-sip-ua/features/sofia-sip $(distdir)/libsofia-sip-ua/http $(distdir)/libsofia-sip-ua/ipt $(distdir)/libsofia-sip-ua/iptsec $(distdir)/libsofia-sip-ua/msg $(distdir)/libsofia-sip-ua/nea $(distdir)/libsofia-sip-ua/nta $(distdir)/libsofia-sip-ua/nth $(distdir)/libsofia-sip-ua/nua $(distdir)/libsofia-sip-ua/sdp $(distdir)/libsofia-sip-ua/sip $(distdir)/libsofia-sip-ua/soa $(distdir)/libsofia-sip-ua/sresolv $(distdir)/libsofia-sip-ua/stun $(distdir)/libsofia-sip-ua/su $(distdir)/libsofia-sip-ua/su/sofia-sip $(distdir)/libsofia-sip-ua/tport $(distdir)/libsofia-sip-ua/url $(distdir)/m4 $(distdir)/man/man1 $(distdir)/open_c $(distdir)/packages $(distdir)/rules $(distdir)/scripts $(distdir)/utils $(distdir)/win32
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(MANS) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(man1dir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
@HAVE_LCOV_FALSE@clean-local:
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-man
install-exec-am:
install-info: install-info-recursive
install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-man
uninstall-info: uninstall-info-recursive
uninstall-man: uninstall-man1
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-libtool clean-local \
clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-generic distclean-hdr distclean-libtool \
distclean-recursive distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-man1 install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-libtool \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am uninstall-man \
uninstall-man1
$(dist_man_MANS): manpages
manpages:
-mkdir -p man man/man1 2> /dev/null
@HAVE_DOXYGEN_TRUE@ $(MAKE) $(AM_MAKEFLAGS) -C libsofia-sip-ua/docs built-sources
@HAVE_DOXYGEN_TRUE@ @echo 'cd utils && $(DOXYGEN)'
@HAVE_DOXYGEN_TRUE@ @cd utils && \
@HAVE_DOXYGEN_TRUE@ { exec 3>&1 1>&2; { $(DOXYGEN) 2>&1; echo $$? >& 3 ;} | \
@HAVE_DOXYGEN_TRUE@ fgrep -v 'Warning: explicit' ;} | { read x; exit $$x ;}
@HAVE_DOXYGEN_TRUE@ @rm -f man/man1/_*.1
@HAVE_DOXYGEN_FALSE@ -touch $(dist_man_MANS)
built-sources clean-built-sources valcheck doxygen:
@failcom='exit 1'; for f in x $$MAKEFLAGS; do \
case $$f in *=* | --[!k]*);; *k*) failcom='fail=yes';; esac; done; \
for i in libsofia-sip-ua $(GLIB_SUBDIRS) ; do \
(cd $$i && $(MAKE) $(AM_MAKEFLAGS) $@) || eval $$failcom; \
done ; \
test -z "$$fail"
#
# Generate pretty coverage report (unless it has been already done)
#
@HAVE_LCOV_TRUE@lcov:
@HAVE_LCOV_TRUE@ @-test -r ${lcovdir}${expand_subdir}/lcov.info \
@HAVE_LCOV_TRUE@ || make lcov-report
# Generate pretty coverage report based on current coverage data
@HAVE_LCOV_TRUE@lcov-report:
@HAVE_LCOV_TRUE@ sub=${expand_subdir} odir=${lcovdir}$$sub ; \
@HAVE_LCOV_TRUE@ rm -rf $$odir ; mkdir -p $$odir && \
@HAVE_LCOV_TRUE@ ${LCOV_REPORT} ${GENHTML_OPTIONS} \
@HAVE_LCOV_TRUE@ --title "${PACKAGE_NAME}-${PACKAGE_VERSION}$$sub" \
@HAVE_LCOV_TRUE@ --srcdir=${srcdir} -o $$odir
# Rerun checks before generating report
@HAVE_LCOV_TRUE@lcov-rerun: clean-lcov
@HAVE_LCOV_TRUE@ $(MAKE) $(AM_MAKEFLAGS) check
@HAVE_LCOV_TRUE@ $(MAKE) $(AM_MAKEFLAGS) lcov-report
# Show all uncovered lines as errors
@HAVE_LCOV_TRUE@uncovered:
@HAVE_LCOV_TRUE@ ${LCOV_UNCOVERED} --lcov-dir=${lcovdir} --srcdir=${srcdir}
# Run check in current dir and show all uncovered lines as errors
@HAVE_LCOV_TRUE@covcheck:
@HAVE_LCOV_TRUE@ -find . -name "*.gcda" | xargs rm -rf
@HAVE_LCOV_TRUE@ $(MAKE) $(AM_MAKEFLAGS) check
@HAVE_LCOV_TRUE@ ${LCOV_UNCOVERED} --lcov-dir=${lcovdir} --srcdir=${srcdir}
@HAVE_LCOV_TRUE@clean-local::
@HAVE_LCOV_TRUE@ -rm -rf ${lcovdir}`pwd|sed "s'\`cd ${top_builddir};pwd\`''"`
@HAVE_LCOV_TRUE@ find . -name "*.gcda" | xargs rm -f || true
@HAVE_LCOV_TRUE@clean-lcov:
@HAVE_LCOV_TRUE@ -rm -rf ${lcovdir}`pwd|sed "s'\`cd ${top_builddir};pwd\`''"`
@HAVE_LCOV_TRUE@ find . -name "*.gcda" | xargs rm -f || true
@HAVE_LCOV_TRUE@lcov-upload: lcov
@HAVE_LCOV_TRUE@ rsync -rvz -e ssh --delete lcov/* sofia-sip.org:/var/www/coverage/lcov/
.PHONY: $(PHONY)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,66 +0,0 @@
=============================================================
README / Sofia-SIP - RFC3261 compliant SIP User-Agent library
=============================================================
Introduction
------------
Sofia-SIP is an open-source SIP User-Agent library, compliant
with the IETF RFC3261 specification. It can be used as
a building block for SIP client software for uses such as VoIP,
IM, and many other real-time and person-to-person communication
services. The primary target platform for Sofia-SIP is
GNU/Linux. Sofia-SIP is based on a SIP stack developed at
the Nokia Research Center. Sofia-SIP is licensed under the LGPL.
Quick start
-----------
Sofia-SIP uses the GNU autotools, so building procedure
is the usual:
sh> sh autogen.sh (if building from darcs)
sh> ./configure
sh> make
sh> make install
See also 'docs/devel_platform_notes.txt' for notes on compiling
Sofia-SIP in different environments.
See the "options-client-example" (available using darcs at
http://sofia-sip.org/repos/options-client-example/ or with CVS as
a module in Sofia-SIP CVS tree) for an example of a small app that
is utilizing Sofia-SIP, and specifically the libsofia-sip-ua
library component.
There are also multiple example clients under
the "sofia-sip/utils" directory:
- sip-options, query using SIP OPTIONS method
- sip-date, SIP date printer/parser
The Sofia-SIP su submodule also provides some small utilities:
- addrinfo (libsofia-sip-ua/su), resolve host names
- localinfo (libsofia-sip-ua/su), prints information about
local network interfaces
References
----------
Project website:
- http://sofia-sip.sourceforge.net
- http://www.sourceforge.net/projects/sofia-sip
Mailing list:
- http://sourceforge.net/mail/?group_id=143636
Version control repositories:
- see the project website (link above)
Licensing
---------
Sofia-SIP is licensed under terms of the GNU LGPL.
See the file "COPYING" for more information.

View File

@ -1,134 +0,0 @@
===============================================================
README.developers - Sofia-SIP development practices
===============================================================
Introduction
============
This file is a collection of practices and rules for Sofia-SIP
development. If you have questions, or would like to make
changes, raise the issue on sofia-sip-devel (see
http://lists.sourceforge.net/lists/listinfo/sofia-sip-devel ).
Important files for developers
==============================
AUTHORS
List of contributors. When contributing new code, add
yourself to AUTHORS, and also remember to update the
per source file copyright statements.
COPYRIGHTS
List of licenses and related copyright statements. While
majority of Sofia-SIP is licensed under LGPL, there are
a few files with different, but LGPL compatible, licensing
terms.
README.developers
This file.
TODO
Not in active use yet.
<dir>/ChangeLog files
All non-trivial changes to the source code should
be documented in the ChangeLog files. See also the
top-level ChangeLog.
Version numbering
=================
Package version
---------------
For public releases, the package version is:
vMAJOR.MINOR.REVISION, where MINOR is even
For development releases and snaphots the version is one of:
vMAJOR.MINOR.REVISION, where minor is odd
vMAJOR.MINOR.REVISION.YEAR.MONTH.DAY, where minor is odd
For all releases, the version should be changed in configure.ac
and committed to Darcs/CVS before making the release package. The person
doing the release is responsible for updating the version number.
Library interface versions
--------------------------
Sofia-SIP libraries utilize libtool interface versioning. See
- http://www.gnu.org/software/libtool/manual.html#Versioning
- http://www.gnu.org/software/libtool/manual.html#Using-Automake
The interface versions are set in top-level 'configure.ac' file.
Additionally, the SONAME version (CURRENT-AGE) is set in the
same place. These version numbers are available for use as autoconf
variables (see the library 'Makefile.am' files and
'packages/sofia-sip.spec.in').
All changes to the library versions should be marked to the
appropriate library 'ChangeLog' file. The library version should
be changed at the same time as the first interface change is
committed since the previous release. The interface version is
frozen (should be marked to the 'ChangeLog' file) at the time
the next release is tagged (in other words, intra-release changes
need not be tracked with libtool versions).
The goal should always be to avoid breaking the API/ABIs until
absolutely necessary. Interfaces clearly marked as private can
be changed without change to library interface version, but
otherwise all public functions, types, variables and definitions
fall under interface change control.
Version control tags
====================
Tagging releases and snapshots
------------------------------
- source repository (*)
- master Darcs tree at:
http://sofia-sip.org/repos/sofia-sip
- CVS tree (only used to track major releases) at:
http://sourceforge.net/cvs/?group_id=143636
- tags: rel-sofia-sip-x_y_z
- stable and development releases (matches release
version sofia-sip-x.y.z)
- tags: snapshot_rel_YEARMMDD
- snapshot releases at
http://sofia-sip.sourceforge.net/snapshots/
Notes (*):
- Information about Darcs:
http://abridgegame.org/darcs/
http://lwn.net/Articles/110516/
Sending patches
===============
People without Darcs access
---------------------------
Send your patches to sofia-sip-devel. Someone from the
development team (see AUTHORS) will handle the patch.
People with Darcs access
------------------------
Trivial changes can be committed without review. For non-trivial
changes, you should first send a proposal to sofia-sip-devel and
wait for comments. There are no strict approval rules so use of
common sense is recommended. ;)
Tips for making patches
-----------------------
- test your patch on a clean checkout from version control system
- remember to check for updates before pushing your changes
to the master repository

View File

@ -1,71 +0,0 @@
===================================
Release notes for Sofia-SIP 1.12.10
===================================
Changes since release 1.12.9
----------------------------
Numerous bugs has been fixed. The SDP parser has been updated to accept
syntax according to RFC 4566. The TLS certificate verfication can now be
controlled through offical API.
API/ABI changes and versioning
------------------------------
libsofia-sip-ua:
New tags added:
- TPTAG_TLS_VERIFY_PEER()
- NUTAG_REFRESH_WITHOUT_SDP()
Tag behavour updated:
- NTATAG_SERVER_RPORT(2) now includes and uses rport even if client does not
- This release is ABI/API compatible with applications linked against
any 1.12.x release. However, applications built against this release won't
work against an older library. The ABI has been tested with the nua module
unit test (test_nua) built against original 1.12.0 release.
libsofia-sip-ua-glib:
- No ABI/API changes, compatible with 1.12.0. Note, libsofia-sip-ua-glib
interface is not considered stable and may change in a future 1.12.x
release.
Contributors to this release
----------------------------
Tiago Katcipis <katcipis AT inf DOT ufcs DOT br>
Mikhail Zabaluev
Paulo Pizarro <paulo -dot pizarro -at gmail -dot com>
Filippo Della Betta
Jarod Neuner <janeuner@networkharbor.com>
Fabio Ferrari <fabioferrari AT gmail DOT com>
Jeff Lenk <jlenk at frontiernet dot net>
Brian Czapiga <rys at evool dot com>
Stefano Sabatini
Fabio Margarido <fabiomargarido AT gmail DOT com>
See the AUTHORS file in the distribution package.
Bugs fixed in this release
--------------------------
- Configure script options --enable-ndebug and enable-expensive-checks fixed.
Patch by Fabio Margarido
- When using session-timers, expire session only at the end of negotiated
expiration time.
- Fixed #1930055: Unregister when a new public binding is detected.
Patch by Mikhail Zabaluev.
- Use SIPS scheme in Contact URI if registering with SIPS. Patch by Jarod
Neuner.
- Using lower-case "udptl" transport name in SDP. Be bug-compatible.
Report by Timo Bruhn.
- Fixed mutex handle leak on Windows. Patch by Jeff Lenk.
- Accept requests with invalid Supported header. Patch by Brian Czapiga.
- When doing event fetch (SUBSCRIBE with Expires: 0) Wait until NOTIFY is
received.
- Fixed memory leak when destroying incomplete INVITE transactions in nua.
- Not using OPTIONS keepalive on TCP.
- Fixed bug with To-tags in response to CANCEL.
- Fixed #2041747: crash when using SIPTAG_ORGANIZATION_TAG_STR
- Fixed #1904805: build with Vista PlatformSDK
- Fixed #2037585: crash when call terminated

View File

@ -1,29 +0,0 @@
===============================================================
TODO / Sofia-SIP
===============================================================
version: 20060907-2
Release roadmap
---------------
1.11/1.12 series
- first version of the new nua+soa API
- nua_respond_nit() (non-INVITEs)
- nua_set_hparams()/nua_get_hparams() [DONE]
- session object ownership changes [DONE]
- allow multiple registrations (lines) and selecting
service route, outbound proxy, and transport independently
for each handle; NUTAG_IDENTITY
- doxygen documentation updates [DONE]
- rpm and dpkg packaging [DONE]
- NAT work: STUN fixes (DNS support) [DONE]
not roadmapped:
- expand the call-state-change mechanism
- update http headers TE, Cookie, Set-Cookie
2.0 serias
- a verified stable API (1.12 is the current stable candidate)
See README.developers for information about versioning.

File diff suppressed because it is too large Load Diff

View File

@ -1,142 +0,0 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2005-02-03.08
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

File diff suppressed because it is too large Load Diff

View File

@ -1,476 +0,0 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
/* Define to the random number source name. */
#undef DEV_URANDOM
/* Define to 1 if you have addrinfo structure. */
#undef HAVE_ADDRINFO
/* Define to 1 if you have the `alarm' function. */
#undef HAVE_ALARM
/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* Define to 1 if printf supports C99 size specifiers */
#undef HAVE_C99_FORMAT
/* Define to 1 if you have the `clock_getcpuclockid' function. */
#undef HAVE_CLOCK_GETCPUCLOCKID
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
/* Define to 1 if you have CLOCK_MONOTONIC */
#undef HAVE_CLOCK_MONOTONIC
/* Defined when gcov is enabled to force by changing config.h */
#undef HAVE_COVERAGE
/* Define to 1 if you have /dev/urandom. */
#undef HAVE_DEV_URANDOM
/* Define to 1 if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have epoll interface. */
#undef HAVE_EPOLL
/* Define to 1 if you have the `epoll_create' function. */
#undef HAVE_EPOLL_CREATE
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have WIN32 FILETIME type and GetSystemTimeAsFileTime().
*/
#undef HAVE_FILETIME
/* Define to 1 if you have the `flock' function. */
#undef HAVE_FLOCK
/* Define to 1 if you have the <fnmatch.h> header file. */
#undef HAVE_FNMATCH_H
/* Define to 1 if you have the `freeaddrinfo' function. */
#undef HAVE_FREEADDRINFO
/* Define this as 1 if your c library does not crash with free(0) */
#undef HAVE_FREE_NULL
/* Define to 1 if the C compiler supports __func__ */
#undef HAVE_FUNC
/* Define to 1 if the C compiler supports __FUNCTION__ */
#undef HAVE_FUNCTION
/* Define to 1 if you have the `gai_strerror' function. */
#undef HAVE_GAI_STRERROR
/* Define to 1 if you have the `getaddrinfo' function. */
#undef HAVE_GETADDRINFO
/* Define to 1 if you have the `getdelim' function. */
#undef HAVE_GETDELIM
/* Define to 1 if you have the `gethostbyname' function. */
#undef HAVE_GETHOSTBYNAME
/* Define to 1 if you have the `gethostname' function. */
#undef HAVE_GETHOSTNAME
/* Define to 1 if you have the `getifaddrs' function. */
#undef HAVE_GETIFADDRS
/* Define to 1 if you have the `getipnodebyname' function. */
#undef HAVE_GETIPNODEBYNAME
/* Define to 1 if you have the `getline' function. */
#undef HAVE_GETLINE
/* Define to 1 if you have the `getnameinfo' function. */
#undef HAVE_GETNAMEINFO
/* Define to 1 if you have the `getpass' function. */
#undef HAVE_GETPASS
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the <ifaddr.h> header file. */
#undef HAVE_IFADDR_H
/* Define to 1 if you have SIOCGIFCONF */
#undef HAVE_IFCONF
/* Define to 1 if you have SIOCGIFNUM ioctl */
#undef HAVE_IFNUM
/* Define to 1 if you have ifr_ifindex in <net/if.h> */
#undef HAVE_IFR_IFINDEX
/* Define to 1 if you have ifr_index in <net/if.h> */
#undef HAVE_IFR_INDEX
/* Define to 1 if you have the `if_nameindex' function. */
#undef HAVE_IF_NAMEINDEX
/* Define to 1 if you have the `inet_ntop' function. */
#undef HAVE_INET_NTOP
/* Define to 1 if you have the `inet_pton' function. */
#undef HAVE_INET_PTON
/* Define to 1 if you have the `initstate' function. */
#undef HAVE_INITSTATE
/* Define to 1 if you have inlining compiler */
#undef HAVE_INLINE
/* Define to 1 if you have WIN32 INTERFACE_INFO_EX type. */
#undef HAVE_INTERFACE_INFO_EX
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <iphlpapi.h> header file. */
#undef HAVE_IPHLPAPI_H
/* Define to 1 if you have IPV6_RECVERR in <netinet/in6.h> */
#undef HAVE_IPV6_RECVERR
/* Define to 1 if you have IP_ADD_MEMBERSHIP */
#undef HAVE_IP_ADD_MEMBERSHIP
/* Define to 1 if you have IP_MTU_DISCOVER */
#undef HAVE_IP_MTU_DISCOVER
/* Define to 1 if you have IP_MULTICAST_LOOP */
#undef HAVE_IP_MULTICAST_LOOP
/* Define to 1 if you have IP_RECVERR in <netinet/in.h> */
#undef HAVE_IP_RECVERR
/* Define to 1 if you have the `kqueue' function. */
#undef HAVE_KQUEUE
/* Define to 1 if you have the `crypto' library (-lcrypto). */
#undef HAVE_LIBCRYPTO
/* Define to 1 if you have the `gcov' library (-lgcov). */
#undef HAVE_LIBGCOV
/* Define to 1 if you have the `pthread' library (-lpthread). */
#undef HAVE_LIBPTHREAD
/* Define to 1 if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define to 1 if you have the `ssl' library (-lssl). */
#undef HAVE_LIBSSL
/* Define to 1 if you have the `memccpy' function. */
#undef HAVE_MEMCCPY
/* Define to 1 if you have the `memcspn' function. */
#undef HAVE_MEMCSPN
/* Define to 1 for memory-leak-related logging */
#undef HAVE_MEMLEAK_LOG
/* Define to 1 if you have the `memmem' function. */
#undef HAVE_MEMMEM
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `memspn' function. */
#undef HAVE_MEMSPN
/* Define to 1 if you are compiling in MinGW environment */
#undef HAVE_MINGW
/* Define to 1 if you have MSG_TRUNC flag */
#undef HAVE_MSG_TRUNC
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H
/* Define to 1 if you have the <netinet/sctp.h> header file. */
#undef HAVE_NETINET_SCTP_H
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#undef HAVE_NETINET_TCP_H
/* Define to 1 if you have the <netpacket/packet.h> header file. */
#undef HAVE_NETPACKET_PACKET_H
/* Define to 1 if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
/* Define to 1 if you have the <net/if_types.h> header file. */
#undef HAVE_NET_IF_TYPES_H
/* Define to 1 if you have OpenSSL */
#undef HAVE_OPENSSL
/* Define to 1 if you have the <openssl/tls1.h> header file. */
#undef HAVE_OPENSSL_TLS1_H
/* Define to 1 if you have the `poll' function. */
#undef HAVE_POLL
/* Define to 1 if you use poll in su_port. */
#undef HAVE_POLL_PORT
/* Define to 1 if you have /proc/net/if_inet6 control file */
#undef HAVE_PROC_NET_IF_INET6
/* Define to 1 if you have working pthread_rwlock_t implementation. A thread
may hold multiple concurrent read locks on rwlock - that is, successfully
call the pthread_rwlock_rdlock() function n times. If so, the application
shall ensure that the thread performs matching unlocks - that is, it calls
the pthread_rwlock_unlock() function n times. */
#undef HAVE_PTHREAD_RWLOCK
/* Define to 1 if you have the `random' function. */
#undef HAVE_RANDOM
/* Define to 1 if you have sa_len in struct sockaddr */
#undef HAVE_SA_LEN
/* Define to 1 if you have SCTP */
#undef HAVE_SCTP
/* Define to 1 if you have the `select' function. */
#undef HAVE_SELECT
/* Define to 1 if you have Sofia sigcomp >= 2.5 */
#undef HAVE_SIGCOMP
/* Define to 1 if you have the <sigcomp.h> header file. */
#undef HAVE_SIGCOMP_H
/* Define to 1 if you have the `signal' function. */
#undef HAVE_SIGNAL
/* Define to 1 if you have SIGPIPE */
#undef HAVE_SIGPIPE
/* Define to 1 if you have IPv6 structures and constants */
#undef HAVE_SIN6
/* Define to 1 if you have WIN32 WSAIoctl SIO_ADDRESS_LIST_QUERY. */
#undef HAVE_SIO_ADDRESS_LIST_QUERY
/* Define to 1 if you have the `socketpair' function. */
#undef HAVE_SOCKETPAIR
/* Define to 1 if we use HTTP parser library */
#undef HAVE_SOFIA_HTTP
/* Define to 1 if we use NTH library */
#undef HAVE_SOFIA_NTH
/* Define to 1 if we use NTLM library */
#undef HAVE_SOFIA_NTLM
/* Define to 1 if you have Sofia sigcomp >= 2.5 */
#undef HAVE_SOFIA_SIGCOMP
/* Define to 1 always */
#undef HAVE_SOFIA_SIP
/* Define to 1 if we use S/MIME library */
#undef HAVE_SOFIA_SMIME
/* Define to 1 if we use DNS library */
#undef HAVE_SOFIA_SRESOLV
/* Define to 1 if we use STUN library */
#undef HAVE_SOFIA_STUN
/* Define to 1 if you have socket option SO_RCVBUFFORCE */
#undef HAVE_SO_RCVBUFFORCE
/* Define to 1 if you have socket option SO_SNDBUFFORCE */
#undef HAVE_SO_SNDBUFFORCE
/* Define to 1 if we use SRTP */
#undef HAVE_SRTP
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strcasestr' function. */
#undef HAVE_STRCASESTR
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strtoull' function. */
#undef HAVE_STRTOULL
/* Define to 1 if your CC supports C99 struct initialization */
#undef HAVE_STRUCT_KEYWORDS
/* Define to 1 if you have the <sys/devpoll.h> header file. */
#undef HAVE_SYS_DEVPOLL_H
/* Define to 1 if you have the <sys/epoll.h> header file. */
#undef HAVE_SYS_EPOLL_H
/* Define to 1 if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define to 1 if you have the <sys/sockio.h> header file. */
#undef HAVE_SYS_SOCKIO_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the `tcsetattr' function. */
#undef HAVE_TCSETATTR
/* Define to 1 if you have TLS */
#undef HAVE_TLS
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if we use UPnP */
#undef HAVE_UPNP
/* Define to 1 you have WIN32 */
#undef HAVE_WIN32
/* Define to 1 if you have the <windef.h> header file. */
#undef HAVE_WINDEF_H
/* Define to 1 if you have the <winsock2.h> header file. */
#undef HAVE_WINSOCK2_H
/* Define to 1 if you have the <ws2tcpip.h> header file. */
#undef HAVE_WS2TCPIP_H
/* Format (%lli) for long long */
#undef LLI
/* Format (%llu) for unsigned long long */
#undef LLU
/* Format (%llx) for long long hex */
#undef LLX
/* Define printf() modifier for ssize_t */
#undef MOD_ZD
/* Define printf() modifier for size_t */
#undef MOD_ZU
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Version number of package */
#undef VERSION
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define to a at least 64-bit int type */
#undef longlong
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More