You might be able to hack it, but I am not sure that you need to ...
Why not just have callback1 call a hello_response method of the user who triggered the event? If you want to keep it as event based it seems like the Hello_Response event should belong to user1, user1 should listen for this event, and user3 should trigger the event.
I am thinking something like
classdef user < handle
properties
name
helloRequestListener
end
events
Hello_Request
Hello_Response
end
methods
function obj = user(name)
obj.name = name;
obj.helloRequestListener = addlistener(obj, 'Hello_Response', @helloResponse);
end
function helloRequest(obj, src, evt)
disp(['Hello request by ', src.name, ' recieved by ', obj.name]);
notify(src, 'Hello_Response')
end
function helloResponse(src, evt)
disp(['Hello response by ', src.name]);
end
end
end
called by
user1 = user('user1'); user2 = user('user2'); user3 = user('user3');
addlistener([user1, user2], 'Hello_Request', @user3.helloRequest);
notify(user1, 'Hello_Request');
which returns
Hello request by user1 recieved by user3
Hello response by user1
Note that user2 does not give a response.
Best Answer