public Object lock_write(int id, Client_itf client) throws java.rmi.RemoteException { mutex.lock(); ServerObject object = objects.get(id); mutex.unlock(); object.lock_write(client); return object.getObj(); }
public LookupResponse lookup(String name) throws java.rmi.RemoteException { log.info(String.format("lookup \"%s\"", name)); mutex.lock(); ServerObject so = name_mapping.get(name); mutex.unlock(); if (so == null) return new LookupResponse(); else return new LookupResponse(so.getId(), so.getObj().getClass()); }
public ServerObject serverFor(Object o) { ServerObject server = serving.get(o); if (server == null) { server = new ServerObject(objectsId.getAndIncrement(), o); serving.put(o, server); servingById.put(server.getId(), server); } return server; }
private void processRequest(DataInputStream in) throws IOException { long serverId = in.readLong(); ServerObject server = servingById.get(serverId); long requestId = in.readLong(); Request r = new Request(this, server.getObject()); r.deserialize(in); r.invoke(); if (requestId != -1) { sendResponse(requestId, r.getResult(), r.getResultDeclaredType()); } }