1 /* 2 (C) Copyright IBM Corp. 2007, 2009 3 4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE 5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE 6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. 7 8 You can obtain a current copy of the Eclipse Public License from 9 http://www.opensource.org/licenses/eclipse-1.0.php 10 11 @author : Endre Bak, IBM, ebak@de.ibm.com 12 * 13 * Change History 14 * Flag Date Prog Description 15 *------------------------------------------------------------------------------- 16 * 1804402 2007-09-28 ebak IPv6 ready SLP 17 * 1892103 2008-02-12 ebak SLP improvements 18 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL 19 * 2204488 2008-10-28 raman_arora Fix code to remove compiler warnings 20 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1) 21 * 2531371 2009-02-10 raman_arora Upgrade client to JDK 1.5 (Phase 2) 22 */ 23 24 package org.metricshub.wbem.sblim.slp.internal.msg; 25 26 /*- 27 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲ 28 * WBEM Java Client 29 * ჻჻჻჻჻჻ 30 * Copyright 2023 - 2025 MetricsHub 31 * ჻჻჻჻჻჻ 32 * Licensed under the Apache License, Version 2.0 (the "License"); 33 * you may not use this file except in compliance with the License. 34 * You may obtain a copy of the License at 35 * 36 * http://www.apache.org/licenses/LICENSE-2.0 37 * 38 * Unless required by applicable law or agreed to in writing, software 39 * distributed under the License is distributed on an "AS IS" BASIS, 40 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 41 * See the License for the specific language governing permissions and 42 * limitations under the License. 43 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱ 44 */ 45 46 import java.io.IOException; 47 import java.util.List; 48 import org.metricshub.wbem.sblim.slp.ServiceLocationException; 49 import org.metricshub.wbem.sblim.slp.ServiceURL; 50 51 /* 52 * 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 53 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service 54 * Location header (function = SrvDeReg = 4) | 55 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length of 56 * <scope-list> | <scope-list> \ 57 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | URL Entry \ 58 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length of 59 * <tag-list> | <tag-list> \ 60 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The 61 * <tag-list> is a <string-list> of attribute tags to deregister as defined in 62 * Section 9.4. If no <tag-list> is present, the SrvDeReg deregisters the 63 * service in all languages it has been registered in. If the <tag-list> is 64 * present, the SrvDeReg deregisters the attributes whose tags are listed in the 65 * tag spec. Services registered with Authentication Blocks MUST NOT include a 66 * <tag-list> in a SrvDeReg message: A DA will respond with an 67 * AUTHENTICATION_FAILED error in this case. 68 */ 69 70 /** 71 * ServiceDeregistration message 72 * 73 */ 74 public class ServiceDeregistration extends SLPMessage { 75 private List<String> iScopeList; 76 77 private ServiceURL iURL; 78 79 private List<String> iTagList; 80 81 /** 82 * parse 83 * 84 * @param pHdr 85 * @param pInStr 86 * @return SLPMessage 87 * @throws ServiceLocationException 88 * @throws IOException 89 */ 90 public static SLPMessage parse(MsgHeader pHdr, SLPInputStream pInStr) throws ServiceLocationException, IOException { 91 return new ServiceDeregistration(pHdr, pInStr.readStringList(), pInStr.readURL(), pInStr.readStringList()); 92 } 93 94 /** 95 * Ctor. 96 * 97 * @param pScopeList 98 * - list of scope strings 99 * @param pURL 100 * @param pTagList 101 */ 102 public ServiceDeregistration(List<String> pScopeList, ServiceURL pURL, List<String> pTagList) { 103 super(SRV_DEREG); 104 init(pScopeList, pURL, pTagList); 105 } 106 107 /** 108 * Ctor. 109 * 110 * @param pLangTag 111 * @param pScopeList 112 * - list of scope strings 113 * @param pURL 114 * @param pTagList 115 */ 116 public ServiceDeregistration(String pLangTag, List<String> pScopeList, ServiceURL pURL, List<String> pTagList) { 117 super(SRV_DEREG, pLangTag); 118 init(pScopeList, pURL, pTagList); 119 } 120 121 /** 122 * Ctor. 123 * 124 * @param pHeader 125 * @param pScopeList 126 * - list of scope strings 127 * @param pURL 128 * @param pTagList 129 */ 130 public ServiceDeregistration(MsgHeader pHeader, List<String> pScopeList, ServiceURL pURL, List<String> pTagList) { 131 super(pHeader); 132 init(pScopeList, pURL, pTagList); 133 } 134 135 /** 136 * getServiceURL 137 * 138 * @return ServiceURL 139 */ 140 public ServiceURL getServiceURL() { 141 return this.iURL; 142 } 143 144 /** 145 * @param pOption 146 */ 147 @Override 148 protected boolean serializeBody(SLPOutputStream pOutStr, SerializeOption pOption) { 149 return ( 150 pOutStr.writeStringList(this.iScopeList) && pOutStr.write(this.iURL) && pOutStr.writeStringList(this.iTagList) 151 ); 152 } 153 154 private void init(List<String> pScopeList, ServiceURL pURL, List<String> pTagList) { 155 this.iScopeList = pScopeList; 156 this.iURL = pURL; 157 this.iTagList = pTagList; 158 } 159 }