00001 /* 00002 * Inter Asterisk Exchange 2 00003 * 00004 * The entity which receives all manages weirdo iax2 packets that are 00005 * sent outside of a regular call. 00006 * 00007 * Open Phone Abstraction Library (OPAL) 00008 * 00009 * Copyright (c) 2006 Stephen Cook 00010 * 00011 * The contents of this file are subject to the Mozilla Public License 00012 * Version 1.0 (the "License"); you may not use this file except in 00013 * compliance with the License. You may obtain a copy of the License at 00014 * http://www.mozilla.org/MPL/ 00015 * 00016 * Software distributed under the License is distributed on an "AS IS" 00017 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 00018 * the License for the specific language governing rights and limitations 00019 * under the License. 00020 * 00021 * The Original Code is Open Phone Abstraction Library. 00022 * 00023 * The Initial Developer of the Original Code is Indranet Technologies Ltd 00024 * 00025 * The author of this code is Stephen Cook 00026 * 00027 * $Revision: 21293 $ 00028 * $Author: rjongbloed $ 00029 * $Date: 2008-10-12 18:24:41 -0500 (Sun, 12 Oct 2008) $ 00030 */ 00031 00032 #ifndef OPAL_IAX2_SPECIALPROCESSOR_H 00033 #define OPAL_IAX2_SPECIALPROCESSOR_H 00034 00035 #ifndef _PTLIB_H 00036 #include <ptlib.h> 00037 #endif 00038 00039 #include <opal/buildopts.h> 00040 00041 #if OPAL_IAX2 00042 00043 #include <opal/connection.h> 00044 00045 #include <iax2/processor.h> 00046 #include <iax2/frame.h> 00047 #include <iax2/iedata.h> 00048 #include <iax2/remote.h> 00049 #include <iax2/safestrings.h> 00050 #include <iax2/sound.h> 00051 00056 class IAX2SpecialProcessor : public IAX2Processor 00057 { 00058 PCLASSINFO(IAX2SpecialProcessor, IAX2Processor); 00059 00060 public: 00062 IAX2SpecialProcessor(IAX2EndPoint & ep); 00063 00065 virtual ~IAX2SpecialProcessor(); 00066 00067 protected: 00069 virtual void ProcessLists(); 00070 00072 virtual void ProcessFullFrame(IAX2FullFrame & fullFrame); 00073 00075 virtual void ProcessNetworkFrame(IAX2MiniFrame * src); 00076 00078 virtual void PrintOn(ostream & strm) const; 00079 00081 virtual void OnNoResponseTimeout(); 00082 00085 virtual PBoolean ProcessNetworkFrame(IAX2FullFrameProtocol * src); 00086 00088 void ProcessIaxCmdPoke(IAX2FullFrameProtocol * src); 00089 00096 virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *) 00097 { return PFalse; } 00098 00099 00100 }; 00101 00102 00103 #endif // OPAL_IAX2 00104 00105 #endif // OPAL_IAX2_SPECIALPROCESSOR_H