Skip to content
Snippets Groups Projects
Commit 1fbe29e7 authored by Ramin Yaghoubzadeh's avatar Ramin Yaghoubzadeh
Browse files

Merge portb:/homes/hbuschme/repo/ipaaca

parents cedaf7c2 e1a7fb8f
No related branches found
No related tags found
No related merge requests found
package ipaaca;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
/**
......@@ -63,10 +65,35 @@ public abstract class Buffer
// """
// handler = IUEventHandler(handler_function=handler_function, for_event_types=for_event_types, for_categories=for_categories)
// self._iu_event_handlers.append(handler)
public void registerHandler(IUEventHandler handler)
{
eventHandlers.add(handler);
}
public void registerHandler(HandlerFunctor func) {
IUEventHandler handler;
handler = new IUEventHandler(func);
registerHandler(handler);
}
public void registerHandler(HandlerFunctor func, Set<String> categories) {
IUEventHandler handler;
handler = new IUEventHandler(func, categories);
registerHandler(handler);
}
public void registerHandler(HandlerFunctor func, EnumSet<IUEventType> eventTypes) {
IUEventHandler handler;
handler = new IUEventHandler(func, eventTypes);
registerHandler(handler);
}
public void registerHandler(HandlerFunctor func, EnumSet<IUEventType> eventTypes, Set<String> categories) {
IUEventHandler handler;
handler = new IUEventHandler(func, eventTypes, categories);
registerHandler(handler);
}
// def call_iu_event_handlers(self, uid, local, event_type, category):
// """Call registered IU event handler functions registered for this event_type and category."""
......@@ -76,7 +103,7 @@ public abstract class Buffer
/**
* Call registered IU event handler functions registered for this event_type and category.
*/
public void callIuEventHandlers(String uid, boolean local, IUEventType type, String category)
protected void callIuEventHandlers(String uid, boolean local, IUEventType type, String category)
{
for (IUEventHandler h : eventHandlers)
{
......
package ipaaca;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
/**
......@@ -32,6 +33,27 @@ public class IUEventHandler
// self._for_categories = (
// None if for_categories is None else
// (for_categories[:] if hasattr(for_categories, '__iter__') else [for_categories]))
public IUEventHandler(HandlerFunctor func)
{
this.handleFunctor = func;
this.categories = new HashSet<String>();
this.eventTypes = EnumSet.allOf(IUEventType.class);
}
public IUEventHandler(HandlerFunctor func, Set<String> categories)
{
this.handleFunctor = func;
this.categories = categories;
this.eventTypes = EnumSet.allOf(IUEventType.class);
}
public IUEventHandler(HandlerFunctor func, EnumSet<IUEventType> eventTypes)
{
this.handleFunctor = func;
this.eventTypes = eventTypes;
this.categories = new HashSet<String>();
}
public IUEventHandler(HandlerFunctor func, EnumSet<IUEventType> eventTypes, Set<String> categories)
{
......@@ -57,7 +79,13 @@ public class IUEventHandler
*/
private boolean conditionMet(IUEventType type, String category)
{
return eventTypes.contains(type) && categories.contains(category);
if (this.categories.isEmpty()) { // match any category
return this.eventTypes.contains(type);
}
else
{
return this.eventTypes.contains(type) && this.categories.contains(category);
}
}
// def call(self, buffer, iu_uid, local, event_type, category):
......
......@@ -80,7 +80,7 @@ public class InputBuffer extends Buffer
// remote_server = rsb.createRemoteServer(rsb.Scope(str(iu.owner_name)))
// self._remote_server_store[iu.owner_name] = remote_server
// return remote_server
public RemoteServer getRemoteServer(AbstractIU iu)
protected RemoteServer getRemoteServer(AbstractIU iu)
{
if (remoteServerStore.containsKey(iu.getOwnerName()))
{
......
......@@ -38,6 +38,15 @@ public class LocalIU extends AbstractIU
payload = new Payload(this);
}
public LocalIU(String category)
{
super(UUID.randomUUID().toString());
this.category = category;
revision = 1;
payload = new Payload(this);
}
// def _set_buffer(self, buffer):
// if self._buffer is not None:
// raise Exception('The IU is already in a buffer, cannot move it.')
......@@ -45,7 +54,7 @@ public class LocalIU extends AbstractIU
// self.owner_name = buffer.unique_name
// self._payload.owner_name = buffer.unique_name
//
public void setBuffer(OutputBuffer buffer)
protected void setBuffer(OutputBuffer buffer)
{
if (outputBuffer != null)
{
......
package ipaaca;
/**
* Local IU of Message sub-type. Can be handled like a normal IU, but on the remote side it is only existent during the handler calls.
* @author hvanwelbergen
......@@ -7,4 +8,14 @@ package ipaaca;
public class LocalMessageIU extends LocalIU
{
public LocalMessageIU()
{
super();
}
public LocalMessageIU(String category)
{
super(category);
}
}
......@@ -327,7 +327,7 @@ public class OutputBuffer extends Buffer
// '''Publish an IU.'''
// informer = self._get_informer(iu._category)
// informer.publishData(iu)
public void publishIU(AbstractIU iu)
private void publishIU(AbstractIU iu)
{
Informer<Object> informer = getInformer(iu.getCategory());
try
......@@ -364,7 +364,7 @@ public class OutputBuffer extends Buffer
* to enable remote components to filter out updates that originated
* from their own operations
*/
public void sendIUCommission(AbstractIU iu, String writerName)
protected void sendIUCommission(AbstractIU iu, String writerName)
{
IUCommission iuc = Ipaaca.IUCommission.newBuilder().setUid(iu.getUid()).setRevision(iu.getRevision())
.setWriterName(iu.getOwnerName() != null ? iu.getOwnerName() : writerName).build();
......@@ -406,7 +406,7 @@ public class OutputBuffer extends Buffer
// informer = self._get_informer(iu._category)
// informer.publishData(payload_update)
public void sendIUPayloadUpdate(AbstractIU iu, IUPayloadUpdate update)
protected void sendIUPayloadUpdate(AbstractIU iu, IUPayloadUpdate update)
{
Informer<Object> informer = getInformer(iu.getCategory());
try
......@@ -419,7 +419,7 @@ public class OutputBuffer extends Buffer
}
}
public void sendIULinkUpdate(AbstractIU iu, IULinkUpdate update)
protected void sendIULinkUpdate(AbstractIU iu, IULinkUpdate update)
{
Informer<Object> informer = getInformer(iu.getCategory());
try
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment