package org.drools.grid.service.directory.impl; import static org.drools.grid.service.directory.impl.WhitePagesClient.sendMessage; import java.net.InetSocketAddress; import java.util.Arrays; import org.drools.grid.GridServiceDescription; import org.drools.grid.io.ConversationManager; import org.drools.grid.io.impl.CommandImpl; import org.drools.grid.service.directory.Address; public class AddressClient implements Address { private Address detachedLocal; private GridServiceDescription whitePagesGsd; private ConversationManager conversationManager; public AddressClient(Address detachedLocal, GridServiceDescription gsd, ConversationManager conversationManager) { this.detachedLocal = detachedLocal; this.whitePagesGsd = gsd; this.conversationManager = conversationManager; } public GridServiceDescription getGridServiceDescription() { return new GridServiceDescriptionClient( this.detachedLocal.getGridServiceDescription(), this.whitePagesGsd, this.conversationManager ); } public Object getObject() { return this.detachedLocal.getObject(); } public String getTransport() { return this.detachedLocal.getTransport(); } public void setObject(Object object) { InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject(); CommandImpl cmd = new CommandImpl( "Address.setObject", Arrays.asList( new Object[]{ this.detachedLocal.getGridServiceDescription().getId(), this.detachedLocal.getTransport(), object } ) ); sendMessage( this.conversationManager, sockets, this.whitePagesGsd.getId(), cmd ); this.detachedLocal.setObject( object ); } }