Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.flume.channel.file;
 
 import java.util.Map;
 
 
Represents a Put on disk
 
 class Put extends TransactionEventRecord {
   private FlumeEvent event;
   // Should we move this to a higher level to not make multiple instances?
   // Doing that might cause performance issues, since access to this would
   // need to be synchronized (the whole reset-update-getValue cycle would
   // need to be).
   private final Checksum checksum = new CRC32();
 
   Put(Long transactionIDLong logWriteOrderID) {
     this(transactionIDlogWriteOrderIDnull);
   }
 
   Put(Long transactionIDLong logWriteOrderIDFlumeEvent event) {
     super(transactionIDlogWriteOrderID);
     this. = event;
   }
 
     return ;
   }
 
   @Override
   public void readFields(DataInput inthrows IOException {
     super.readFields(in);
      = FlumeEvent.from(in);
   }
 
   @Override
   public void write(DataOutput outthrows IOException {
     super.write(out);
     .write(out);
   }
   @Override
   void writeProtos(OutputStream outthrows IOException {
     ProtosFactory.Put.Builder putBuilder = ProtosFactory.Put.newBuilder();
     ProtosFactory.FlumeEvent.Builder eventBuilder =
         ProtosFactory.FlumeEvent.newBuilder();
     Map<StringStringheaders = .getHeaders();
     ProtosFactory.FlumeEventHeader.Builder headerBuilder =
         ProtosFactory.FlumeEventHeader.newBuilder();
     if(headers != null) {
       for(String key : headers.keySet()) {
         String value = headers.get(key);
         headerBuilder.clear();
         eventBuilder.addHeaders(headerBuilder.setKey(key)
             .setValue(value).build());
       }
     }
     eventBuilder.setBody(ByteString.copyFrom(.getBody()));
     ProtosFactory.FlumeEvent protoEvent = eventBuilder.build();
     putBuilder.setEvent(protoEvent);
     putBuilder.setChecksum(calculateChecksum(.getBody()));
     putBuilder.build().writeDelimitedTo(out);
   }
   @Override
   void readProtos(InputStream inthrows IOException,
     ProtosFactory.Put put = Preconditions.checkNotNull(ProtosFactory.
         Put.parseDelimitedFrom(in), "Put cannot be null");
    Map<StringStringheaders = Maps.newHashMap();
    ProtosFactory.FlumeEvent protosEvent = put.getEvent();
    for(ProtosFactory.FlumeEventHeader header : protosEvent.getHeadersList()) {
      headers.put(header.getKey(), header.getValue());
    }
    byte[] eventBody = protosEvent.getBody().toByteArray();
    if (put.hasChecksum()) {
      long eventBodyChecksum = calculateChecksum(eventBody);
      if (eventBodyChecksum != put.getChecksum()) {
        throw new CorruptEventException("Expected checksum for event was " +
          eventBodyChecksum + " but the checksum of the event is " + put.getChecksum());
      }
    }
    // TODO when we remove v2, remove FlumeEvent and use EventBuilder here
     = new FlumeEvent(headerseventBody);
  }
  protected long calculateChecksum(byte[] body) {
    .reset();
    .update(body, 0, body.length);
    return .getValue();
  }
  public short getRecordType() {
    return ..get();
  }
  public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("Put [event=");
    builder.append();
    builder.append(", getLogWriteOrderID()=");
    builder.append(getLogWriteOrderID());
    builder.append(", getTransactionID()=");
    builder.append(getTransactionID());
    builder.append("]");
    return builder.toString();
  }
New to GrepCode? Check out our FAQ X