Форум программистов, компьютерный форум CyberForum.ru

Задача дизайна - прокинуть детали низкоуровневой реализации на более высокий уровень и вернуть обратно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли открыть проект написанный на С++ Builder в Visual Studio 2015? http://www.cyberforum.ru/cpp/thread1856932.html
Как это сделать напишите пожалуйста, срочно надо.
C++ Удаление файла, использующегося в данный момент Я пишу антивирус, передо мной настала задача: Как удалить файл, который используется в данный момент? Конечно, я знаю, что сперва нужно удалить процесс, а потом удалить этот файл, но вот вопрос - А как это реализовать? Помогите) http://www.cyberforum.ru/cpp/thread1855015.html
Большая погрешность в вычислении длины кривой C++
Есть задание: вычислить длину контура эллипса. Входные данные - коэффициенты a и b из канонического уравнения и n - количество точек для таблицы значений функции. Количество точек к сожалению только 20 программа осиливает. Я набираю в вольфраме команду "arc length y = 5*sqrt(1-x^2/16), x=-4,4" которая высчитывает длину кривой. Но моя программа высчитывает длину кривой с довольно сильной...
C++ Запрет на запуск нескольких копий
Возможно ли сделать так, что может быть запущена только одна копия программы (копий несколько по всему диску, они имеют разное название)?
C++ Поместить *.exe в ресурсы программы http://www.cyberforum.ru/cpp/thread1852629.html
Моя прога использует стороннюю. Необходимо как-то засунуть стороннюю программу в ресурсы моей, чтобы оттуда её вызывать. У меня Visual c++ 2010 express, в нём отключено редактирование ресурсов. Можно ли средствами, к примеру, ресхакера или чего-то подобного реализовать это?
C++ Обработка изображение стандартами С++ Добрый день, нужно обработать изображение средствами С++ без сторонних библиотек: Разработка методов пороговой фильтрации Разработка методов геометрической фильтрации и распознание объекта на изображении кадры из веб камеры я получил средствами qt QCamera формат bmp. можно ли средствами С++ обработать изображение? и как это сделать в какую сторону копать подскажите пожалуйста подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,223
Записей в блоге: 1
Завершенные тесты: 1
24.11.2016, 07:34  [ТС]     Задача дизайна - прокинуть детали низкоуровневой реализации на более высокий уровень и вернуть обратно
Цитата Сообщение от vxg Посмотреть сообщение
Kastaneda, то есть:
-пришло сообщение из космоса на 1-й уровень (мы добавили к сообщению какие-то свои пометки)
-сообщение пересылается с 1-го на 2-й уровень
-ответ посылается со 2-го на 1-й уровень
-ответ уходит с 1-го уровня в космос (мы добавили к ответу какие-то свои пометки которые были добавлены к сообщению когда оно пришло)
так?
Sorry, если не понятно объяснил. Реально происходит следующее:
1. На AMQP сервер приходит сообщение. Сообщение содержит в том числе поля replyTo и correlationID, которые нужны для формирования ответа на это сообщение.
2. Сообщение нужно отдать на верх (уровень RPC).
3. RPC должен его обработать и ответить. На уровне RPC ответ - это просто string
4/ AMQP должен упаковать этот ответ (string) в свой формат сообщения. Для этого ему нужны replyTo и correlationID,

Цитата Сообщение от IGPIGP Посмотреть сообщение
Кроме того, что ему придётся знать, что экстру надо перекинуть в ответ.
Да, что не есть хорошо. Плюс зачем ему (2-му уровню) приходят какие-то непонятные данные, которые ему даже не нужны.

Менять по идее можно все, что угодно. Чтоб было понятно, у нас тут были предолжены например такие варианты:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// AMQP
void AmqpServer::mainLoop()
{
    // что-то делаем, в итоге получаем сообщение
   // при этом есть некий ID, который нужно знать при отправке ответа
   
   auto sendResponse = std::bind(&AmqpServer::sendResponse, this, replyTo, correlationId, _1);
    _messageHandler->onMessageReceived(message, sendResponse);
}
 
void AmqpServer::sendResponse (std::string replyTo, std::string correlationId, std::string response)
{
    // отправляем сообщение
}
 
// RPC
void RpcChannel::onMessageReceived (std::string message, std::function<void(std::string) sendResponse)
{
    // обработали сообщение, сформировали ответ
    sendResponse(response);
}
Либо тоже самое, но через паттерн "Команда". Либо создать класс Request, который имеет метод createResponse(), этот Request передать в RPC, а там дернуть createResponse(), и в этом response будут невидимые для RPC replyTo и correlationID. Этот response отдаем в AMQP и он уже может прочитать нужные ему поля (как вариант через френдов можно разрулить доступ к полям).

Это более менее адекватные предложения (были совсем не адекватные), но мне лично ни один из этих подходов не нравится. Интуитивно чувствуется какая-то костыльность, есть ощущение, что можно сделать лучше/проще, но решение в голову не лезет.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru