LINUX.ORG.RU

Сообщения rusproger

 

Посчитать число инстанцирований шаблона с++

Исходная задача сгенерить уникальное число соответствующее типу шаблонного параметра. Что то типа:

size_t getId();

Причем id не должен повторяться в разных единицах трансляции (например попал в разные dll). Возможно ли это?

 

rusproger
()

PAM определить группу пользователя

Доброго времени суток. Возможно ли используя libpam определить группу к которой относится учетная запись пользователя?

В настоящее использую функцию pam_authenticate для определения существования и проверки пароля пользователя, нужно в зависимости от группы (степени привелегированности пользователя) определить доступный пользователю функционал в программе.

 

rusproger
()

отличие адреса структуры в статически инициализированном массиве

Доброго времени суток.

Есть глобальная структура c вложенными структурами конфигурации. Для удобства обращения сложил указатели в статический массив:

static void *cfg_table[DEV_CNT] =
{
    &sys_cntl.ethernet.cfg_cntl,
    &sys_cntl.device[0].cfg_cntl,
    &sys_cntl.device[1].cfg_cntl,
    &sys_cntl.mdev.cfg_cntl
};

Столкнулся с тем, что адрес фактический адрес sys_cntl.ethernet.cfg_cntl, который показывает gdb, отличается от записанного в массиве (сдвинут на несколько байт). Поскольку внутри cfg_cntl есть адреса функций, это заканчивается SIGILL. Архитектура sparc64. Кто-нибудь с этим сталкивался?

 , ,

rusproger
()

Статический виджет Qt с родителем

Есть диалоговое окно (наследование от QDialog) которое потребовалось реализовать как синглтон. Родителя потребовалось указать при создании чтобы диалог был поверх главного окна (главное окно имеет атрибут stayontop чтобы отображать поверх всех). При завершении приложения главное окно удаляет все дочерние и на этом приложение аварийно завершается, т.к. с синглтоном так поступать нельзя. Как выйти из этой ситуации?

 

rusproger
()

Окно авторизации

Проект на Qt 4.8.7. Есть главное окно приложения, оно должно быть развернуто поверх рабочего стола и всех окон системы, не должно быть возможности закрыть его или переключится на другой рабочий стол. При использовании приложения поверх него могут появляться диалоги QMessageBox подтверждения действий и выбора.

При запуске приложения поверх главного окна и всех диалогов должно появляться окно авторизации содержащее логин и пароль для входа в приложение. Как задать такие свойства окнам средствами Qt?

 stayontop

rusproger
()

Как посчитать число функций в проекте.

Доброго времени суток.

Есть проект на Qt 4.8.7 с большим объемом файлов с исходным текстом. На основе исходного ПО было создано ПО для обучения представителей заказчика. Руководство поставило задачу посчитать коэффициент заимствования кода который определяется как число функций общих в обоих проектах к числу функций в исходном проекте.

Возможно ли автоматизировано посчитать число функций в проекте (в том числе методов классов C++) с помощью средств QtCreator или другой IDE ?

Пробовал через Visual Studio создавать .MAP файл, но туда попадают и библиотечные вызовы Qt.. Разбор превращается почти в ручной подсчет.

Кто нибудь сталкивался?

 

rusproger
()

Ifdef не понимает значение из enum

Добрый день. Столкнулся со следующей проблемой:

Есть:

enum { Value1, Value2, ValueCnt }

Он находится в общем заголовочном файле проекта. Код надо настроить таким образом чтобы если значение Value2 не определено то нужно исключить при сборке несколько include и определенный кусок кода.

При этом код: #ifdef Value2 // Тут какой то код #endif

Или

#if Value2 // Тут какой то код #endif

Не видит константы , хотя она объявлена в enum… Как это реализовать и почему с константами из enum данный код не работает?

 

rusproger
()

udp Определить пропажу пакета

Добрый день. Требуется передать сообщения размером до 10 мб между ПК. Данные разделяются на блоки по 1кб. Не требуется установка соединения, отправка идёт широковещательно.

На приемной стороне нужно понять что пакеты потерялись или перемешались, не предпринимая мер к повторной отправке (просто отбросить). Попробовал табличный crc32 однако для сообщений ~10мб время расчета составляет около 400 мс что для задачи недопустимо долго.

По идее датаграмы udp уже имеют контрольную сумму и нужно лишь определить факт потери или перемешивания. Не хочется добавлять в килобайтные блоки дополнительный заголовок. Может кто сталкивался?

 

rusproger
()

udp socket для широковещательной отправки и приема сообщений

Подскажите возможно ли обойтись одним сокетом для широковещательной отправки и приема сообщений по udp.

Как правильно его инициализировать ?

 

rusproger
()

Запись в неблокируемый udp сокет

Доброго времени суток

Сталкиваюсь с переполнением очереди при отправке данных по udp.

сокет неблокируемый:

#ifdef WIN_API __uint32 iMode = 0; ioctlsocket(socket[i], FIONBIO, &iMode); #else __uint32 flag = fcntl(socket[i], F_GETFL, NULL); fcntl(socket, F_SETFL, flag & ~O_NONBLOCK); #endif

в бесконечном цикле вызываю // Проверка готовности дескрипторов сокетов if((nready = select(maxfd, &rset, &wset, NULL, &tv)) > 0) { цикл по всем используемым сокетам отправки

					// Возможна запись в сокет
					if(FD_ISSET(socket[i], &wset))
					{

цикл по элементам очереди,пытаюсь отправлять данные пока не кончатся данные в очереди и нет ошибки записи в сокет if sendto(connection->socket, data, (int)size, 0, (struct sockaddr *)&connection->their_addr, (int) sizeof (struct sockaddr))) == SOCKET_ERROR) break; }

Последнее решение вызывает сомнение: можно ли так забивать сокет или нужно заново дергать select и FD_ISSET после каждого sendto???

 

rusproger
()

sctp узнать номер потока до чтения данных

Подскажите возможно ли в случае sctp соединения прочитать номер потока а в идеале ещё и размер принятых данных, до фактического чтения данных (в моем случае необходимо распределить данные в несколько кольцевых очередей в зависимости от номера потока и хочется избежать лишнего копирования через промежуточный буфер)?

Функция sctp_recvmsg одновременно заполнит буфер и вернёт структуру с номером потока, что как раз ведет к двойному копированию (сама функция заполнит буфер а затем придется копировать в очередь в зависимости от номера потока)….

 

rusproger
()

RSS подписка на новые темы