use of com.google.samples.apps.iosched.server.gcm.db.models.Device in project iosched by google.
the class MessageSender method multicastSend.
public void multicastSend(List<Device> devices, String action, String extraData) {
Queue queue = QueueFactory.getQueue("MulticastMessagesQueue");
// Split messages into batches for multicast
// GCM limits maximum devices per multicast request. AppEngine also limits the size of
// lists stored in the datastore.
int total = devices.size();
List<String> partialDevices = new ArrayList<>(total);
int counter = 0;
for (Device device : devices) {
counter++;
partialDevices.add(device.getDeviceId());
int partialSize = partialDevices.size();
if (partialSize == MAX_DEVICES || counter == total) {
// Send multicast message
Long multicastKey = MessageStore.createMulticast(partialDevices, action, extraData);
mLogger.fine("Queuing " + partialSize + " devices on multicast " + multicastKey);
TaskOptions taskOptions = TaskOptions.Builder.withUrl("/queue/send").param("multicastKey", Long.toString(multicastKey)).method(TaskOptions.Method.POST);
queue.add(taskOptions);
partialDevices.clear();
}
}
mLogger.fine("Queued message to " + total + " devices");
}
Aggregations