Пример #1
0
void ProcessModel::ResetDirty(int puid)
{
    int index = GetProcessIndex(puid);
    Lock();
    _processes[index].dirty = false;
    Unlock();
}
Пример #2
0
void ProcessModel::HideProcess(int puid)
{
    // Modify the Model
    int index = GetProcessIndex(puid);
    Lock();
    if (index != -1)
    {
        _processes[index].hidden = true;
    }
    Unlock();

    if (index != -1)
    {
        // Update View
        if (!ProcessView::IsHidden())
        {
            ProcessView::Update(false, true);
        }
        else
        {
            ProcessView::Update(true);
        }

        // Update Profile
        std::vector<int> hiddenProcesses;
        ExportHiddenProcesses(hiddenProcesses);
        g_profile.SetHiddenProcesses(hiddenProcesses);
    }
}
Пример #3
0
bool ProcessModel::GetProcessRate(int puid, int *txRate, int *rxRate)
{
    int index = GetProcessIndex(puid);

    if( index == -1 )
    {
        return false;
    }
    else
    {
        Lock();
        *txRate = _processes[index].prevTxRate;
        *rxRate = _processes[index].prevRxRate;
        Unlock();
        return true;
    }
}
Пример #4
0
void ProcessModel::ShowProcess(int puid)
{
    // Modify the Model
    int index = GetProcessIndex(puid);
    Lock();
    if (index != -1)
    {
        _processes[index].hidden = false;
    }
    Unlock();

    if (index != -1)
    {
        // Update View
        ProcessView::Update(false, true);

        // Update Profile
        std::vector<int> hiddenProcesses;
        ExportHiddenProcesses(hiddenProcesses);
        g_profile.SetValue(TEXT("HiddenProcess"), new ProfileIntListItem(hiddenProcesses));
    }
}
Пример #5
0
// Event handlers
void ProcessModel::OnPacket(PacketInfoEx *pi)
{
    int index = GetProcessIndex(pi->puid);

    if( index == -1 ) // A new process
    {
        // Insert a ProcessItem
        ProcessItem item;

        RtlZeroMemory(&item, sizeof(item));

        item.active = true;
        item.dirty = false;
        item.pid = pi->pid; // The first pid is logged
        item.puid = pi->puid;

        _tcscpy_s(item.name, MAX_PATH, pi->name);
        _tcscpy_s(item.fullPath, MAX_PATH, pi->fullPath);

        item.hidden = false;

        item.txRate = 0;
        item.rxRate = 0;
        item.prevTxRate = 0;
        item.prevRxRate = 0;

        // Add to process list
        Lock();
        _processes.push_back(item);
        Unlock();
    }
    else
    {
        Lock();

        // Update the ProcessItem that already Exists
        ProcessItem &item = _processes[index];

        if( !item.active )
        {
            item.active = true;
            item.pid = pi->pid; // The first pid is logged

            _tcscpy_s(item.fullPath, MAX_PATH, pi->fullPath);

            item.txRate = 0;
            item.rxRate = 0;
            item.prevTxRate = 0;
            item.prevRxRate = 0;
        }

        if( pi->dir == DIR_UP )
        {
            item.txRate += pi->size;
        }
        else if( pi->dir == DIR_DOWN )
        {
            item.rxRate += pi->size;
        }
        item.dirty = true;

        Unlock();
    }
}