org.jgroups.Message.getRawBuffer()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(12.7k)|赞(0)|评价(0)|浏览(198)

本文整理了Java中org.jgroups.Message.getRawBuffer()方法的一些代码示例,展示了Message.getRawBuffer()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Message.getRawBuffer()方法的具体详情如下:
包路径:org.jgroups.Message
类名称:Message
方法名:getRawBuffer

Message.getRawBuffer介绍

[英]Returns a reference to the payload (byte buffer). Note that this buffer should not be modified as we do not copy the buffer on copy() or clone(): the buffer of the copied message is simply a reference to the old buffer.
Even if offset and length are used: we return the entire buffer, not a subset.
[中]返回对有效负载(字节缓冲区)的引用。请注意,不应修改此缓冲区,因为我们不会在copy()或clone()上复制缓冲区:复制消息的缓冲区只是对旧缓冲区的引用。
即使使用了偏移量和长度:我们返回整个缓冲区,而不是子集。

代码示例

代码示例来源:origin: wildfly/wildfly

protected static String printPayload(Message msg, final StringBuilder sb) {
    byte[] payload=msg.getRawBuffer();
    int print_max=Math.min(msg.getLength(), 50);
    for(int i=msg.getOffset(); i < print_max; i++) {
      byte ch=payload[i];
      sb.append((char)ch);
    }
    return null;
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  byte type=msg.getRawBuffer()[msg.getOffset()];
  switch(type) {
    case PING:
      final Message rsp=new Message(msg.getSrc(), PONG_RSP);
      rsp.setFlag(Message.Flag.DONT_BUNDLE, Message.Flag.NO_FC);
      try {
        ch.send(rsp);
      }
      catch(Exception e) {
        e.printStackTrace();
      }
      break;
    case PONG:
      long rtt=System.nanoTime() - start;
      double ms=rtt / 1000.0 / 1000.0;
      System.out.printf("RTT for %s: %.2f ms\n", msg.src(), ms);
      break;
  }
}

代码示例来源:origin: wildfly/wildfly

protected Message _decrypt(final Cipher cipher, Message msg) throws Exception {
  if(msg.getLength() == 0)
    return msg;
  byte[] decrypted_msg;
  if(cipher == null)
    decrypted_msg=code(msg.getRawBuffer(), msg.getOffset(), msg.getLength(), true);
  else
    try {
      decrypted_msg=cipher.doFinal(msg.getRawBuffer(), msg.getOffset(), msg.getLength());
    }
    catch(BadPaddingException | IllegalBlockSizeException e) {
      //  if any exception is thrown, this cipher object may need to be reset before it can be used again.
      cipher.init(Cipher.DECRYPT_MODE, secret_key);
      throw e;
    }
  return msg.setBuffer(decrypted_msg);
}

代码示例来源:origin: wildfly/wildfly

protected void handleUpEvent(final Message msg, FcHeader hdr) {
  switch(hdr.type) {
    case FcHeader.REPLENISH:
      num_credit_responses_received++;
      handleCredit(msg.getSrc(), bufferToLong(msg.getRawBuffer(), msg.getOffset()));
      break;
    case FcHeader.CREDIT_REQUEST:
      num_credit_requests_received++;
      Address sender=msg.getSrc();
      Long requested_credits=bufferToLong(msg.getRawBuffer(), msg.getOffset());
      if(requested_credits != null)
        handleCreditRequest(received, sender,requested_credits);
      break;
    default:
      log.error(Util.getMessage("HeaderTypeNotKnown"), local_addr, hdr.type);
      break;
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  try {
    TotOrderRequest req=new TotOrderRequest();
    ByteBuffer buf=ByteBuffer.wrap(msg.getRawBuffer(), msg.getOffset(), msg.getLength());
    req.init(buf);
    processRequest(req);
  }
  catch(Exception e) {
    System.err.println(e);
  }
}

代码示例来源:origin: org.jboss.eap/wildfly-client-all

public void receive(Message msg) {
  byte type=msg.getRawBuffer()[msg.getOffset()];
  switch(type) {
    case PING:
      final Message rsp=new Message(msg.getSrc(), PONG_RSP);
      rsp.setFlag(Message.Flag.DONT_BUNDLE, Message.Flag.NO_FC);
      try {
        ch.send(rsp);
      }
      catch(Exception e) {
        e.printStackTrace();
      }
      break;
    case PONG:
      long rtt=System.nanoTime() - start;
      double ms=rtt / 1000.0 / 1000.0;
      System.out.printf("RTT for %s: %.2f ms\n", msg.src(), ms);
      break;
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  byte[] buf=msg.getRawBuffer();
  byte   type=buf[msg.getOffset()];
  switch(type) {
    case START:
      ByteBuffer tmp=ByteBuffer.wrap(buf, 1+msg.getOffset(), Global.LONG_SIZE);
      num_msgs=(int)tmp.getLong();
      print=num_msgs / 10;
      current_value.set(0);
      total_bytes.set(0);
      start=System.currentTimeMillis();
      break;
    case DATA:
      long new_val=current_value.incrementAndGet();
      total_bytes.addAndGet(msg.getLength() - Global.INT_SIZE);
      if(print > 0 && new_val % print == 0)
        System.out.println("received " + new_val);
      if(new_val >= num_msgs) {
        long time=System.currentTimeMillis() - start;
        double msgs_sec=(current_value.get() / (time / 1000.0));
        double throughput=total_bytes.get() / (time / 1000.0);
        System.out.println(String.format("\nreceived %d messages in %d ms (%.2f msgs/sec), throughput=%s",
                         current_value.get(), time, msgs_sec, Util.printBytes(throughput)));
        break;
      }
      break;
    default:
      System.err.println("Type " + type + " is invalid");
  }
}

代码示例来源:origin: org.jboss.eap/wildfly-client-all

protected void handleUpEvent(final Message msg, FcHeader hdr) {
  switch(hdr.type) {
    case FcHeader.REPLENISH:
      num_credit_responses_received++;
      handleCredit(msg.getSrc(), bufferToLong(msg.getRawBuffer(), msg.getOffset()));
      break;
    case FcHeader.CREDIT_REQUEST:
      num_credit_requests_received++;
      Address sender=msg.getSrc();
      Long requested_credits=bufferToLong(msg.getRawBuffer(), msg.getOffset());
      if(requested_credits != null)
        handleCreditRequest(received, sender,requested_credits);
      break;
    default:
      log.error(Util.getMessage("HeaderTypeNotKnown"), local_addr, hdr.type);
      break;
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  byte[] buf=msg.getRawBuffer();
  byte   type=buf[msg.getOffset()];
  switch(type) {
    case START:
      ByteBuffer tmp=ByteBuffer.wrap(buf, 1+msg.getOffset(), Global.LONG_SIZE);
      num_msgs=(int)tmp.getLong();
      print=num_msgs / 10;
      current_value.set(0);
      total_bytes.set(0);
      start=System.currentTimeMillis();
      break;
    case DATA:
      long new_val=current_value.incrementAndGet();
      total_bytes.addAndGet(msg.getLength() - Global.INT_SIZE);
      if(print > 0 && new_val % print == 0)
        System.out.println("received " + new_val);
      if(new_val >= num_msgs) {
        long time=System.currentTimeMillis() - start;
        double msgs_sec=(current_value.get() / (time / 1000.0));
        double throughput=total_bytes.get() / (time / 1000.0);
        System.out.println(String.format("\nreceived %d messages in %d ms (%.2f msgs/sec), throughput=%s",
                         current_value.get(), time, msgs_sec, Util.printBytes(throughput)));
        break;
      }
      break;
    default:
      System.err.println("Type " + type + " is invalid");
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  byte[] buf=msg.getRawBuffer();
  byte   type=buf[msg.getOffset()];
  switch(type) {
    case START:
      ByteBuffer tmp=ByteBuffer.wrap(buf, 1+msg.getOffset(), Global.LONG_SIZE);
      num_msgs=(int)tmp.getLong();
      print=num_msgs / 10;
      current_value.set(0);
      total_bytes.set(0);
      start=System.currentTimeMillis();
      break;
    case DATA:
      long new_val=current_value.incrementAndGet();
      total_bytes.addAndGet(msg.getLength() - Global.INT_SIZE);
      if(print > 0 && new_val % print == 0)
        System.out.println("received " + new_val);
      if(new_val >= num_msgs) {
        long time=System.currentTimeMillis() - start;
        double msgs_sec=(current_value.get() / (time / 1000.0));
        double throughput=total_bytes.get() / (time / 1000.0);
        System.out.println(String.format("\nreceived %d messages in %d ms (%.2f msgs/sec), throughput=%s",
                         current_value.get(), time, msgs_sec, Util.printBytes(throughput)));
        break;
      }
      break;
    default:
      System.err.println("Type " + type + " is invalid");
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
  if(receiver == null)
    return;
  try {
    receiver.receive(msg.src(), msg.getRawBuffer(), msg.getOffset(), msg.getLength());
  }
  catch(Throwable t) {
    log.error("failed delivering message", t);
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(MessageBatch batch) {
  if(receiver == null)
    return;
  for(Message msg: batch) {
    try {
      receiver.receive(msg.src(), msg.getRawBuffer(), msg.getOffset(), msg.getLength());
    }
    catch(Throwable t) {
      log.error("failed delivering message from batch", t);
    }
  }
}

代码示例来源:origin: wildfly/wildfly

public void receive(Message msg) {
    if(msg == null || msg.getLength() == 0) {
      log.error("DrawApplet.run(): msg or msg.buffer is null !");
      return;
    }
    instream=new DataInputStream(new ByteArrayInputStream(msg.getRawBuffer(), msg.getOffset(), msg.getLength()));
    int r=0;
    try {
      r=instream.readInt();
      if(r == -13) {
        clearPanel();
        return;
      }
      int g=instream.readInt();
      int b=instream.readInt();
      int my_x=instream.readInt();
      int my_y=instream.readInt();
      if(graphics != null) {
        graphics.setColor(new Color(r, g, b));
        graphics.fillOval(my_x, my_y, 10, 10);
        graphics.setColor(default_color);
      }
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }
});

代码示例来源:origin: wildfly/wildfly

/**
 * Assembles all the fragments into one buffer. Takes all Messages, and combines their buffers into one
 * buffer.
 * This method does not check if the fragmentation is complete (use {@link #isComplete()} to verify
 * before calling this method)
 * @return the complete message in one buffer
 *
 */
protected Message assembleMessage() {
  Message retval;
  byte[]  combined_buffer, tmp;
  int     combined_length=0, length, offset;
  int     index=0;
  for(Message fragment: fragments)
    combined_length+=fragment.getLength();
  combined_buffer=new byte[combined_length];
  retval=fragments[0].copy(false); // doesn't copy the payload, but copies the headers
  for(int i=0; i < fragments.length; i++) {
    Message fragment=fragments[i];
    fragments[i]=null; // help garbage collection a bit
    tmp=fragment.getRawBuffer();
    length=fragment.getLength();
    offset=fragment.getOffset();
    System.arraycopy(tmp, offset, combined_buffer, index, length);
    index+=length;
  }
  retval.setBuffer(combined_buffer);
  return retval;
}

代码示例来源:origin: wildfly/wildfly

protected void encryptAndSend(Message msg) throws Exception {
  EncryptHeader hdr=new EncryptHeader(EncryptHeader.ENCRYPT, symVersion());
  // copy neeeded because same message (object) may be retransmitted -> prevent double encryption
  Message msgEncrypted=msg.copy(false).putHeader(this.id, hdr);
  if(msg.getLength() > 0)
    msgEncrypted.setBuffer(code(msg.getRawBuffer(),msg.getOffset(),msg.getLength(),false));
  else { // length is 0
    byte[] payload=msg.getRawBuffer();
    if(payload != null) // we don't encrypt empty buffers (https://issues.jboss.org/browse/JGRP-2153)
      msgEncrypted.setBuffer(payload, msg.getOffset(), msg.getLength());
  }
  down_prot.down(msgEncrypted);
}

代码示例来源:origin: wildfly/wildfly

protected Object handleUpEvent(Message msg, RelayHeader hdr) {
  switch(hdr.type) {
    case DISSEMINATE:
      Message copy=msg.copy();
      if(hdr.original_sender != null)
        copy.setSrc(hdr.original_sender);
      return up_prot.up(copy);
    case FORWARD:
      if(is_coord)
        forward(msg.getRawBuffer(), msg.getOffset(), msg.getLength());
      break;
    case VIEW:
      return installView(msg.getRawBuffer(), msg.getOffset(), msg.getLength());
    case BROADCAST_VIEW:
      break;
    default:
      throw new IllegalArgumentException(hdr.type + " is not a valid type");
  }
  return null;
}

代码示例来源:origin: wildfly/wildfly

/** Returns a new message as a result of uncompressing msg, or null if msg couldn't be uncompressed */
protected Message uncompress(Message msg, int original_size) {
  byte[] compressed_payload=msg.getRawBuffer();
  if(compressed_payload != null && compressed_payload.length > 0) {
    byte[] uncompressed_payload=new byte[original_size];
    Inflater inflater=null;
    try {
      inflater=inflater_pool.take();
      inflater.reset();
      inflater.setInput(compressed_payload, msg.getOffset(), msg.getLength());
      try {
        inflater.inflate(uncompressed_payload);
        // we need to copy: https://jira.jboss.org/jira/browse/JGRP-867
        return msg.copy(false).setBuffer(uncompressed_payload);
      }
      catch(DataFormatException e) {
        log.error(Util.getMessage("CompressionFailure"), e);
      }
    }
    catch(InterruptedException e) {
      Thread.currentThread().interrupt(); // set the interrupt bit again, so caller can handle it
    }
    finally {
      if(inflater != null)
        inflater_pool.offer(inflater);
    }
  }
  return null;
}

代码示例来源:origin: wildfly/wildfly

private Callable<Object> read(Message message) throws Exception {
  try (DataInputStream input = new DataInputStream(new ByteArrayInputStream(message.getRawBuffer(), message.getOffset(), message.getLength()))) {
    int version = IndexSerializer.VARIABLE.readInt(input);
    try (Unmarshaller unmarshaller = this.marshallingContext.createUnmarshaller(version)) {
      unmarshaller.start(Marshalling.createByteInput(input));
      Object clientId = unmarshaller.readObject();
      Optional<Object> context = this.contexts.get(clientId);
      if (context == null) return () -> NoSuchService.INSTANCE;
      @SuppressWarnings("unchecked")
      Command<Object, Object> command = (Command<Object, Object>) unmarshaller.readObject();
      // Wrap execution result in an Optional, since command execution might return null
      ExceptionSupplier<Optional<Object>, Exception> task = () -> Optional.ofNullable(command.execute(context.orElse(null)));
      return () -> this.executor.execute(task).orElse(Optional.of(NoSuchService.INSTANCE)).orElse(null);
    }
  }
}

代码示例来源:origin: wildfly/wildfly

/** Adds a fragment to the full message */
public Message set(Message frag_msg, Frag3Header hdr) {
  lock.lock();
  try {
    if(buffer == null)
      buffer=new byte[hdr.original_length];
    if(hdr.frag_id == 0) {
      // the first fragment creates the message, copy the headers but not the buffer
      msg=frag_msg.copy(false);
    }
    if(received.set(hdr.frag_id)) {
      // if not yet added: copy the fragment's buffer into msg.buffer at the correct offset
      int frag_length=frag_msg.getLength();
      int offset=hdr.offset;
      System.arraycopy(frag_msg.getRawBuffer(), frag_msg.getOffset(), buffer, offset, frag_length);
      if(isComplete())
        return assembleMessage();
    }
    return null;
  }
  finally {
    lock.unlock();
  }
}

代码示例来源:origin: wildfly/wildfly

protected void dispatch(final Message msg, final Header hdr) {
  switch(hdr.type) {
    case Header.REQ:
      handleRequest(msg, hdr);
      break;
    case Header.RSP:
    case Header.EXC_RSP:
      Request req=requests.get(hdr.req_id);
      if(req != null)
        handleResponse(req, msg.src(), msg.getRawBuffer(), msg.getOffset(), msg.getLength(), hdr.type == Header.EXC_RSP);
      break;
    default:
      log.error(Util.getMessage("HeaderSTypeIsNeitherREQNorRSP"));
      break;
  }
}

相关文章