1 /* 2 * Copyright (C) 2013 4th Line GmbH, Switzerland 3 * 4 * The contents of this file are subject to the terms of either the GNU 5 * Lesser General Public License Version 2 or later ("LGPL") or the 6 * Common Development and Distribution License Version 1 or later 7 * ("CDDL") (collectively, the "License"). You may not use this file 8 * except in compliance with the License. See LICENSE.txt for more 9 * information. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 */ 15 16 package org.fourthline.cling.protocol.async; 17 18 import org.fourthline.cling.UpnpService; 19 import org.fourthline.cling.model.meta.LocalDevice; 20 import org.fourthline.cling.model.types.NotificationSubtype; 21 import org.fourthline.cling.transport.RouterException; 22 23 import java.util.logging.Logger; 24 25 /** 26 * Sending <em>BYEBYE</em> notification messages for a registered local device. 27 * 28 * @author Christian Bauer 29 */ 30 public class SendingNotificationByebye extends SendingNotification { 31 32 final private static Logger log = Logger.getLogger(SendingNotification.class.getName()); 33 34 public SendingNotificationByebye(UpnpService upnpService, LocalDevice device) { 35 super(upnpService, device); 36 } 37 38 // The UDA 1.0 spec says "a message corresponding to /each/ of the ssd:alive messages" but 39 // it's not clear if that means the "required" messages according to the tables only or if 40 // it includes the triple (or whatever) repeated messages that have been sent to protect 41 // against networking problems. It also says, a little later, that "each of the messages should 42 // be send more than once". So we are also sending them three times - hell, why not pollute the 43 // network with useless stuff, that is going to make this more reliable for sure... 44 45 // In other words: The superclass method is fine even for byebye. 46 47 @Override 48 protected void execute() throws RouterException { 49 log.fine("Sending byebye messages ("+getBulkRepeat()+" times) for: " + getDevice()); 50 super.execute(); 51 } 52 53 protected NotificationSubtype getNotificationSubtype() { 54 return NotificationSubtype.BYEBYE; 55 } 56 57 }