У меня есть API currentFuelPrice () , и этот API поддерживается singleton .
В своем коде я сделал синглтон. Допустим, два вызывающих абонента А1 и А2 добавлены в качестве наблюдателя.
Теперь, когда A1 вызывает CurrentFuelPrice (). oncurrentFuelPrice () получено.
Поскольку он одноэлементный, он отправит NotifyFuelCurrentPrice как вызывающему, так и А2.
Как я могу не узнать фактического абонента то есть. A1 только.
Ниже мой код.
//single ton
FuelService* FuelService::Create() {
return (!m_instanceSingleton) ?
m_instanceSingleton = new FuelService() :
m_instanceSingleton;
}
//Register to service
FuelService::FuelService()
: FuelProxy(),
Listener(Listener_path)
{
registerListener((IOnFuel*)this);
fuel_obj = FuelProxy::getInstance();
}
FuelService::~FuelService() {}
// adding observer
void FuelService::AddObserver(
FuelProxy::FuelNotification* observer) {
observer.push_back(observer);
}
// calling the API
void FuelService::CurrentFuelPrice(const uint32_t& sessionId) {
fuel_obj->currentFuelPrice(sessionId);
}
// Getting response send back to caller
void FuelService::oncurrentFuelPrice(const uint32_t& sessionId,const uint32_t&price) {
std::vector<FuelNotification*>::iterator it = observer.begin();
for (; it != observer.end(); ++it)
(*it)->NotifyFuelCurrentPrice(price);
}