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
00033
00034 #ifndef __PANA_EGRESS_H__
00035 #define __PANA_EGRESS_H__
00036
00037 #include "pana_session.h"
00038 #include "pana_io.h"
00039 #include "framework.h"
00040
00041 class PANA_EXPORT PANA_EgressJob : public AAA_Job
00042 {
00043 public:
00044 PANA_EgressJob(AAA_GroupedJob &g,
00045 PANA_IO &t,
00046 PANA_Message &m,
00047 PANA_Session *s,
00048 const char *name = "") :
00049 m_Group(g),
00050 m_IO(t),
00051 m_Msg(m),
00052 m_Session(s),
00053 m_Name(name) {
00054 }
00055 virtual bool ExistBacklog() {
00056 return (false);
00057 }
00058 virtual int Schedule(AAA_Job*job, size_t backlogSize=1) {
00059 return m_Group.Schedule(job);
00060 }
00061
00062 protected:
00063 AAA_GroupedJob &m_Group;
00064 PANA_IO &m_IO;
00065 PANA_Message &m_Msg;
00066 PANA_Session *m_Session;
00067 std::string m_Name;
00068 };
00069
00070 class PANA_EXPORT PANA_EgressDeliveryJob : public PANA_EgressJob
00071 {
00072 public:
00073 PANA_EgressDeliveryJob(const PANA_EgressJob ©) :
00074 PANA_EgressDeliveryJob::PANA_EgressJob(copy) { }
00075 virtual int Serve();
00076 };
00077
00078 class PANA_EXPORT PANA_EgressMacGenerationJob : public PANA_EgressDeliveryJob
00079 {
00080 public:
00081 PANA_EgressMacGenerationJob(const PANA_EgressJob ©) :
00082 PANA_EgressDeliveryJob(copy) { }
00083 virtual int Serve();
00084 };
00085
00086 class PANA_EXPORT PANA_EgressSender : public PANA_EgressJob
00087 {
00088 public:
00089 PANA_EgressSender(AAA_GroupedJob &g,
00090 PANA_IO &t,
00091 PANA_Message &m,
00092 PANA_Session *s = NULL,
00093 const char *name = "") :
00094 PANA_EgressJob(g, t, m, s, name) { }
00095 virtual int Serve() { return (0); };
00096 virtual void Schedule();
00097 protected:
00098 static int m_MacGenExclusionTable[2];
00099 };
00100
00101 #endif // __PANA_EGRESS_H__