52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(event_registry,
							 | 
						||
| 
								 | 
							
									implements(event_registryp)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- info([
							 | 
						||
| 
								 | 
							
										version is 1.0,
							 | 
						||
| 
								 | 
							
										authors is 'Paulo Moura',
							 | 
						||
| 
								 | 
							
										date is 2000/7/24,
							 | 
						||
| 
								 | 
							
										comment is 'Before and after events registry predicates.']).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									monitors(Monitors) :-
							 | 
						||
| 
								 | 
							
										findall(
							 | 
						||
| 
								 | 
							
											Monitor,
							 | 
						||
| 
								 | 
							
											(current_event(before, _, _, _, Monitor),
							 | 
						||
| 
								 | 
							
											 current_event(after, _, _, _, Monitor)),
							 | 
						||
| 
								 | 
							
											List),
							 | 
						||
| 
								 | 
							
										{sort(List, Monitors)}.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									monitored(Objects) :-
							 | 
						||
| 
								 | 
							
										findall(
							 | 
						||
| 
								 | 
							
											Object,
							 | 
						||
| 
								 | 
							
											(current_event(before, Object, _, _, _),
							 | 
						||
| 
								 | 
							
											 current_event(after, Object, _, _, _)),
							 | 
						||
| 
								 | 
							
											List),
							 | 
						||
| 
								 | 
							
										{sort(List, Objects)}.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									monitor(Object, Message, Sender, Monitor) :-
							 | 
						||
| 
								 | 
							
										current_event(before, Object, Message, Sender, Monitor),
							 | 
						||
| 
								 | 
							
										current_event(after, Object, Message, Sender, Monitor).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									set_monitor(Object, Message, Sender, Monitor) :-
							 | 
						||
| 
								 | 
							
										define_events(before, Object, Message, Sender, Monitor),
							 | 
						||
| 
								 | 
							
										define_events(after, Object, Message, Sender, Monitor).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									del_monitors(Object, Message, Sender, Monitor) :-
							 | 
						||
| 
								 | 
							
										abolish_events(before, Object, Message, Sender, Monitor),
							 | 
						||
| 
								 | 
							
										abolish_events(after, Object, Message, Sender, Monitor).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									del_monitors :-
							 | 
						||
| 
								 | 
							
										abolish_events(before, _, _, _, _),
							 | 
						||
| 
								 | 
							
										abolish_events(after, _, _, _, _).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 |