示例#1
0
  public void broadcastEvent(AbstractEvent event) throws IOException, InterruptedException {
    for (int targetChannel = 0; targetChannel < numChannels; targetChannel++) {
      RecordSerializer<T> serializer = serializers[targetChannel];

      synchronized (serializer) {
        if (serializer.hasData()) {
          Buffer buffer = serializer.getCurrentBuffer();
          if (buffer == null) {
            throw new IllegalStateException("Serializer has data but no buffer.");
          }

          writeBuffer(buffer, targetChannel, serializer);

          writer.writeEvent(event, targetChannel);

          buffer = writer.getBufferProvider().requestBufferBlocking();
          serializer.setNextBuffer(buffer);
        } else {
          writer.writeEvent(event, targetChannel);
        }
      }
    }
  }