package com.dappervision.wearscript.events;
import com.dappervision.wearscript.Log;
import org.msgpack.MessagePack;
import org.msgpack.type.Value;
import org.msgpack.type.ValueFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class SendEvent {
private static final String TAG = "SendEvent";
private String channel;
private Object[] data;
private byte[] dataMsgpack;
private MessagePack msgpack;
public SendEvent(String channel, byte[] data) {
this.channel = channel;
this.dataMsgpack = data;
}
public SendEvent(String channel, Object... data) {
this.channel = channel;
this.data = data;
this.msgpack = new MessagePack();
}
public byte[] getData() {
if (dataMsgpack == null) {
List<Value> data = new ArrayList<Value>();
data.add(ValueFactory.createRawValue(channel));
for (Object i : this.data) {
Class c = i.getClass();
if (c.equals(String.class))
data.add(ValueFactory.createRawValue((String) i));
else if (c.equals(Double.class))
data.add(ValueFactory.createFloatValue((Double) i));
else if (c.equals(Integer.class))
data.add(ValueFactory.createIntegerValue((Integer) i));
else if (Value.class.isAssignableFrom(c))
data.add((Value) i);
else {
Log.e(TAG, "Unhandled class: " + c);
return null;
}
}
try {
this.dataMsgpack = msgpack.write(data);
} catch (IOException e) {
// TODO(brandyn): Handle
}
}
return dataMsgpack;
}
public String getChannel() {
return channel;
}
}