Search in sources :

Example 11 with Device

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");
}
Also used : TaskOptions(com.google.appengine.api.taskqueue.TaskOptions) Device(com.google.samples.apps.iosched.server.gcm.db.models.Device) ArrayList(java.util.ArrayList) Queue(com.google.appengine.api.taskqueue.Queue)

Aggregations

Device (com.google.samples.apps.iosched.server.gcm.db.models.Device)11 ApiMethod (com.google.api.server.spi.config.ApiMethod)6 MessageSender (com.google.samples.apps.iosched.server.gcm.device.MessageSender)6 UnauthorizedException (com.google.api.server.spi.response.UnauthorizedException)3 BadRequestException (com.google.api.server.spi.response.BadRequestException)1 ForbiddenException (com.google.api.server.spi.response.ForbiddenException)1 NotFoundException (com.google.api.server.spi.response.NotFoundException)1 Queue (com.google.appengine.api.taskqueue.Queue)1 TaskOptions (com.google.appengine.api.taskqueue.TaskOptions)1 AuthInfo (com.google.samples.apps.iosched.server.gcm.AuthHelper.AuthInfo)1 NotFoundException (com.googlecode.objectify.NotFoundException)1 ArrayList (java.util.ArrayList)1