/** * Constructs a message given a destination and source address and the payload object * @param dest The Address of the receiver. If it is null, then the message is sent to the group. Otherwise, it is * sent to a single member. * @param obj The object that will be marshalled into the byte buffer. Has to be serializable (e.g. implementing * Serializable, Externalizable or Streamable, or be a basic type (e.g. Integer, Short etc)). */ public Message(Address dest, Object obj) { this(dest); setObject(obj); }
private void sendMessages() throws Exception { System.out.println("Start sending messages..."); String address = jChannel.getAddressAsString(); List<Address> mbrs = jChannel.getView().getMembers(); start = System.nanoTime(); for (int i = 0; i < numberOfMessages; ++i) { AnycastAddress dst = getDestinations(mbrs); Message message = new Message().dest(dst); DataMessage dataMessage = new DataMessage(); dataMessage.type = DataMessage.DATA; dataMessage.data = address + ":" + i; message.setObject(dataMessage); jChannel.send(message); sentBytes += (dataMessage.data.getBytes().length + 1); sentMessages++; } stop = System.nanoTime(); System.out.println("Finish sending messages..."); }
private Message createJGMessage(byte[] msgBytes, Address src, Address dest, short version) { Message msg = new Message(); msg.setDest(dest); msg.setSrc(src); msg.setObject(msgBytes); msg.setFlag(Message.Flag.NO_RELIABILITY); msg.setFlag(Message.Flag.NO_FC); msg.setFlag(Message.Flag.DONT_BUNDLE); msg.setFlag(Message.Flag.OOB); return msg; }
/** * {@inheritDoc} */ protected void setObject(Message m, Object o) { m.setObject(o); } }
/** * Constructs a message given a destination and source address and the payload object * @param dest The Address of the receiver. If it is null, then the message is sent to the group. Otherwise, it is * sent to a single member. * @param obj The object that will be marshalled into the byte buffer. Has to be serializable (e.g. implementing * Serializable, Externalizable or Streamable, or be a basic type (e.g. Integer, Short etc)). */ public Message(Address dest, Object obj) { this(dest); setObject(obj); }
/** Public constructor * @param dest Address of receiver. If it is <em>null</em> then the message sent to the group. * Otherwise, it contains a single destination and is sent to that member.<p> * @param src Address of sender * @param obj The object will be serialized into the byte buffer. <em>Object * has to be serializable </em>! The resulting buffer must not be modified * (e.g. buf[0]=0 is not allowed), since we don't copy the contents on clopy() or clone().<p/> * Note that this is a convenience method and JGroups will use default Java serialization to * serialize <code>obj</code> into a byte buffer. */ public Message(Address dest, Address src, Serializable obj) { this(dest); setSrc(src); setObject(obj); }
@Override public void broadcast(ResponseMessage response) throws IOException { Message message = new Message(); message.setObject(response); send(message); }
public void advertise() { if (channel == null || !channel.isConnected()) { return; } Message msg = new Message(); msg.setObject(localServices.keySet().toArray(new DistributedServiceDescription[0])); try { sendMessage(msg); } catch (Exception e) { Log.error(this, "Error sending advertise message", e); } }
@Override public Collection<ResponseMessage> broadcast(RequestMessage request) throws IOException { if (log.isDebugEnabled()) log.debug("Sending operation request: " + request); Message message = new Message(); message.setObject(request); Future<Collection<ResponseMessage>> responseFuture = multiplexRecevier .receiveFor(request); send(message); log.debug("Operation request sent"); try { Collection<ResponseMessage> responseMessages = responseFuture.get( multicastTimeOut, TimeUnit.MILLISECONDS); if (log.isDebugEnabled()) log.debug("Response messages received: " + responseMessages); List<ResponseMessage> results = new ArrayList<ResponseMessage>(); for (ResponseMessage responseMessage : responseMessages) { results.add(responseMessage); } return results; } catch (Exception ex) { throw new IOException("Failed to request help for operation: " + request, ex); } }
public boolean postEvent(Event event) { Message msg = new Message(); msg.setObject(event); try { sendMessage(msg); return true; } catch (Exception e) { logger.error("Failed to send event " + event, e); return false; } }
private void sendMessages() throws Exception { System.out.println("Start sending messages..."); String address = jChannel.getAddressAsString(); List<Address> mbrs = jChannel.getView().getMembers(); start = System.nanoTime(); for (int i = 0; i < numberOfMessages; ++i) { AnycastAddress dst = getDestinations(mbrs); Message message = new Message().dest(dst); DataMessage dataMessage = new DataMessage(); dataMessage.type = DataMessage.DATA; dataMessage.data = address + ":" + i; message.setObject(dataMessage); jChannel.send(message); sentBytes += (dataMessage.data.getBytes().length + 1); sentMessages++; } stop = System.nanoTime(); System.out.println("Finish sending messages..."); }
private SubmitTaskResponse submitBroadcastTask(Task task, ProcessingResponseReceiver receiver) { DistributedServiceDescription sd = task.getTargetService(); SubmitTaskResponse resp = new SubmitTaskResponse(); resp.setSuccessfull(true); List<Address> servAddresses = globalServices.get(sd); if (servAddresses != null) { long taskId = task.getTaskId(); BroadcastTaskProcessingResponse btpr = new BroadcastTaskProcessingResponse(taskId, servAddresses.size()); pendingRequests.put(taskId, receiver); pendigBroadcastRequests.put(taskId, btpr); /* submit the task to every node that has the service active */ for (Address adr : servAddresses) { Message msg = new Message(); msg.setDest(adr); msg.setObject(task); try { sendMessage(msg); } catch (Exception e) { resp.setError(e); resp.setSuccessfull(false); } } } else { resp.setSuccessfull(false); resp.setError(new Exception("No address registered for service " + sd)); } return resp; }
update.putHeader(CausalNewViewHeader.NAME , new CausalNewViewHeader(newView.getViewId(), newView.getLocalTime(), complete)); update.setObject(new MissingIndexesMessage(newView.getMissingTimes(), newView.getMissingCompletions()));
private Message createJGMessage(byte[] msgBytes, Address src, Address dest, short version) { Message msg = new Message(); msg.setDest(dest); msg.setSrc(src); msg.setObject(msgBytes); msg.setFlag(Message.Flag.NO_RELIABILITY); msg.setFlag(Message.Flag.NO_FC); msg.setFlag(Message.Flag.DONT_BUNDLE); msg.setFlag(Message.Flag.OOB); return msg; }
/** * Sends the response back to the client after the task was processed on the local node * * @param input * @param output */ private void sendResponse(Task input, TaskProcessingResponse output) { Message respMessage = new Message(); /* get the client address */ Address clientAddress = pendingResponses.remove(input); respMessage.setDest(clientAddress); respMessage.setObject(new TaskProcessingResponse(output.getTaskId(), output.getResult(), output.getException(), this.getLocalNodeAddress())); try { sendMessage(respMessage); } catch (Exception e) { Log.error(this, "Error sending response for task " + input.getTaskId(), e); } }
private SubmitTaskResponse submitSimpleTask(Task task, ProcessingResponseReceiver receiver) { DistributedServiceDescription sd = task.getTargetService(); SubmitTaskResponse resp = new SubmitTaskResponse(); Address adr = getProcessingAddressForService(sd); if (adr != null) { Message msg = new Message(); msg.setDest(adr); long taskId = task.getTaskId(); msg.setObject(task); try { pendingRequests.put(taskId, receiver); sendMessage(msg); resp.setSuccessfull(true); } catch (Exception e) { resp.setError(e); resp.setSuccessfull(false); } } else { resp.setSuccessfull(false); resp.setError(new Exception("No address registered for service " + sd)); } return resp; }
update.putHeader(CausalNewViewHeader.NAME , new CausalNewViewHeader(currentView.getView().getViewId(), 0, true)); // It has the time already update.setObject(new MissingIndexesMessage(Collections.EMPTY_LIST, Collections.EMPTY_LIST));