|
SASC
DVBSoftCAM
|
Inheritance diagram for cHookManager:Public Member Functions | |
| cHookManager (cDevice *Device, const char *DevId) | |
| virtual | ~cHookManager () |
| void | AddHook (cLogHook *hook) |
| bool | TriggerHook (int id) |
| void | Down (void) |
| cHookManager (cDevice *Device, const char *DevId) | |
| virtual | ~cHookManager () |
| void | AddHook (cLogHook *hook) |
| bool | TriggerHook (int id) |
| void | Down (void) |
Protected Member Functions | |
| virtual void | Process (cPidFilter *filter, unsigned char *data, int len) |
| virtual void | Process (cPidFilter *filter, unsigned char *data, int len) |
| cHookManager::cHookManager | ( | cDevice * | Device, |
| const char * | DevId | ||
| ) |
Definition at line 182 of file cam.c.
References cAction::Priority().
| cHookManager::~cHookManager | ( | ) | [virtual] |
| cHookManager::cHookManager | ( | cDevice * | Device, |
| const char * | DevId | ||
| ) |
| virtual cHookManager::~cHookManager | ( | ) | [virtual] |
| void cHookManager::AddHook | ( | cLogHook * | hook | ) |
Definition at line 215 of file cam.c.
References cSimpleListBase::Add(), CHAIN_HOLD, cSimpleList< T >::First(), L_CORE_HOOK, cThread::Lock(), cSimpleList< T >::Next(), pid::pid, cLogHook::pids, PRINTF, cTimeMs::Set(), cThread::Unlock(), and cPidFilter::userData.
Referenced by cCam::AddHook().
{
Lock();
PRINTF(L_CORE_HOOK,"%s: starting hook '%s' (%04x)",devId,hook->name,hook->id);
hook->delay.Set(CHAIN_HOLD);
hooks.Add(hook);
for(cPid *pid=hook->pids.First(); pid; pid=hook->pids.Next(pid)) {
cPidFilter *filter=AddFilter(pid->pid,pid->sct,pid->mask,CHAIN_HOLD/8);
if(filter) {
filter->userData=(void *)hook;
pid->filter=filter;
}
}
Unlock();
}
| void cHookManager::AddHook | ( | cLogHook * | hook | ) |
| void cHookManager::Down | ( | void | ) |
Definition at line 194 of file cam.c.
References cAction::DelAllFilter(), cSimpleList< T >::First(), cThread::Lock(), and cThread::Unlock().
Referenced by cCam::Stop(), and ~cHookManager().
{
Lock();
while(cLogHook *hook=hooks.First()) DelHook(hook);
DelAllFilter();
Unlock();
}
| void cHookManager::Down | ( | void | ) |
| virtual void cHookManager::Process | ( | cPidFilter * | filter, |
| unsigned char * | data, | ||
| int | len | ||
| ) | [protected, virtual] |
Implements cAction.
| void cHookManager::Process | ( | cPidFilter * | filter, |
| unsigned char * | data, | ||
| int | len | ||
| ) | [protected, virtual] |
Implements cAction.
Definition at line 256 of file cam.c.
References data, HEXDUMP, L_CORE_HOOK, L_HEX_HOOK, cPidFilter::Pid(), PRINTF, cLogHook::Process(), SCT_LEN, cTimeMs::TimedOut(), and cPidFilter::userData.
{
if(data && len>0) {
HEXDUMP(L_HEX_HOOK,data,len,"HOOK pid 0x%04x",filter->Pid());
if(SCT_LEN(data)==len) {
cLogHook *hook=(cLogHook *)(filter->userData);
if(hook) {
hook->Process(filter->Pid(),data);
if(hook->bailOut || hook->delay.TimedOut()) DelHook(hook);
}
}
else PRINTF(L_CORE_HOOK,"%s: incomplete section %d != %d",devId,len,SCT_LEN(data));
}
else {
cLogHook *hook=(cLogHook *)(filter->userData);
if(hook && (hook->bailOut || hook->delay.TimedOut())) DelHook(hook);
}
}
| bool cHookManager::TriggerHook | ( | int | id | ) |
| bool cHookManager::TriggerHook | ( | int | id | ) |
Definition at line 202 of file cam.c.
References CHAIN_HOLD, cSimpleList< T >::First(), cThread::Lock(), cSimpleList< T >::Next(), and cThread::Unlock().
Referenced by cCam::TriggerHook().