// Path: src/main/java/org/rakam/cache/hazelcast/hyperloglog/operations/UnionOperation.java
// public class UnionOperation extends HyperLogLogBackupAwareOperation {
// 
//     private HLLWrapper hll;
// 
//     public UnionOperation() {
//     }
// 
//     public UnionOperation(String name, HLLWrapper hll) {
//         super(name);
//         this.hll = hll;
//     }
// 
//     @Override
//     public void run() throws Exception {
//         HLLWrapper number = getHLL();
//         number.union(hll);
//     }
// 
//     @Override
//     public int getId() {
//         return HyperLogLogSerializerFactory.UNION;
//     }
// 
//     @Override
//     protected void writeInternal(ObjectDataOutput out) throws IOException {
//         super.writeInternal(out);
//         byte[] bytes = hll.bytes();
//         out.writeInt(bytes.length);
//         out.write(bytes);
//     }
// 
//     @Override
//     protected void readInternal(ObjectDataInput in) throws IOException {
//         super.readInternal(in);
//         int size = in.readInt();
//         byte[] rawHll = new byte[size];
//         in.readFully(rawHll);
//         hll = new HLLWrapper(rawHll);
//     }
// 
//     @Override
//     public Operation getBackupOperation() {
//         return new UnionBackupOperation(name, hll);
//     }
// }
// 
// Path: src/main/java/org/rakam/util/HLLWrapper.java
// public class HLLWrapper {
//     final private static int SEED = 123456;
//     private HLL hll;
// 
//     public HLLWrapper() {
//         hll = new HLL(13/*log2m*/, 5/*registerWidth*/);
//     }
// 
//     public HLLWrapper(byte[] bytes) {
//         hll = HLL.fromBytes(bytes);
//     }
// 
//     public long cardinality() {
//         return hll.cardinality();
//     }
// 
//     public void union(HLLWrapper hll) {
//         this.hll.union(hll.hll);
//     }
// 
//     public void addAll(Collection<String> coll) {
//         for (String a : coll) {
//             byte[] s = a.getBytes();
//             hll.addRaw(MurmurHash3.murmurhash3x8632(s, 0, s.length, SEED));
//         }
//     }
// 
//     public void add(String obj) {
//         if (obj == null)
//             throw new IllegalArgumentException();
//         byte[] s = obj.getBytes();
// 
//         hll.addRaw(MurmurHash3.murmurhash3x8632(s, 0, s.length, SEED));
//     }
// 
//     public void set(byte[] bytes) {
//         hll = HLL.fromBytes(bytes);
//     }
// 
//     public byte[] bytes() {
//         return hll.toBytes();
//     }
// 
//     public void reset() {
//         hll = new HLL(13/*log2m*/, 5/*registerWidth*/);
//     }
// }


import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.PortableReader;
import com.hazelcast.nio.serialization.PortableWriter;
import com.hazelcast.spi.Operation;
import org.rakam.cache.hazelcast.hyperloglog.operations.UnionOperation;
import org.rakam.util.HLLWrapper;
import java.io.IOException;
/**
 * Created by buremba <Burak Emre Kabakcı> on 10/07/14.
 */

package org.rakam.cache.hazelcast.hyperloglog.client;



/**
 * Created by buremba on 10/07/14.
 */
public class UnionRequest extends WriteRequest {
    HLLWrapper hll;

    public UnionRequest(String name, HLLWrapper hll) {
        super(name);
        this.hll = hll;
    }

    public UnionRequest() {

    }

    @Override
    protected Operation prepareOperation() {
// Path: src/main/java/org/rakam/cache/hazelcast/hyperloglog/operations/UnionOperation.java
// public class UnionOperation extends HyperLogLogBackupAwareOperation {
// 
//     private HLLWrapper hll;
// 
//     public UnionOperation() {
//     }
// 
//     public UnionOperation(String name, HLLWrapper hll) {
//         super(name);
//         this.hll = hll;
//     }
// 
//     @Override
//     public void run() throws Exception {
//         HLLWrapper number = getHLL();
//         number.union(hll);
//     }
// 
//     @Override
//     public int getId() {
//         return HyperLogLogSerializerFactory.UNION;
//     }
// 
//     @Override
//     protected void writeInternal(ObjectDataOutput out) throws IOException {
//         super.writeInternal(out);
//         byte[] bytes = hll.bytes();
//         out.writeInt(bytes.length);
//         out.write(bytes);
//     }
// 
//     @Override
//     protected void readInternal(ObjectDataInput in) throws IOException {
//         super.readInternal(in);
//         int size = in.readInt();
//         byte[] rawHll = new byte[size];
//         in.readFully(rawHll);
//         hll = new HLLWrapper(rawHll);
//     }
// 
//     @Override
//     public Operation getBackupOperation() {
//         return new UnionBackupOperation(name, hll);
//     }
// }
// 
// Path: src/main/java/org/rakam/util/HLLWrapper.java
// public class HLLWrapper {
//     final private static int SEED = 123456;
//     private HLL hll;
// 
//     public HLLWrapper() {
//         hll = new HLL(13/*log2m*/, 5/*registerWidth*/);
//     }
// 
//     public HLLWrapper(byte[] bytes) {
//         hll = HLL.fromBytes(bytes);
//     }
// 
//     public long cardinality() {
//         return hll.cardinality();
//     }
// 
//     public void union(HLLWrapper hll) {
//         this.hll.union(hll.hll);
//     }
// 
//     public void addAll(Collection<String> coll) {
//         for (String a : coll) {
//             byte[] s = a.getBytes();
//             hll.addRaw(MurmurHash3.murmurhash3x8632(s, 0, s.length, SEED));
//         }
//     }
// 
//     public void add(String obj) {
//         if (obj == null)
//             throw new IllegalArgumentException();
//         byte[] s = obj.getBytes();
// 
//         hll.addRaw(MurmurHash3.murmurhash3x8632(s, 0, s.length, SEED));
//     }
// 
//     public void set(byte[] bytes) {
//         hll = HLL.fromBytes(bytes);
//     }
// 
//     public byte[] bytes() {
//         return hll.toBytes();
//     }
// 
//     public void reset() {
//         hll = new HLL(13/*log2m*/, 5/*registerWidth*/);
//     }
// }


// Path: src/main/java/org/rakam/cache/hazelcast/hyperloglog/client/UnionRequest.java
import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.PortableReader;
import com.hazelcast.nio.serialization.PortableWriter;
import com.hazelcast.spi.Operation;
import org.rakam.cache.hazelcast.hyperloglog.operations.UnionOperation;
import org.rakam.util.HLLWrapper;
import java.io.IOException;

/**
 * Created by buremba <Burak Emre Kabakcı> on 10/07/14.
 */

package org.rakam.cache.hazelcast.hyperloglog.client;



/**
 * Created by buremba on 10/07/14.
 */
public class UnionRequest extends WriteRequest {
    HLLWrapper hll;

    public UnionRequest(String name, HLLWrapper hll) {
        super(name);
        this.hll = hll;
    }

    public UnionRequest() {

    }

    @Override
    protected Operation prepareOperation() {
        return new UnionOperation(name, hll);