00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
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