View Javadoc
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   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
20   * 2531371    2009-02-10  raman_arora  Upgrade client to JDK 1.5 (Phase 2) 
21   */
22  
23  package org.metricshub.wbem.sblim.slp.internal.msg;
24  
25  /*-
26   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27   * WBEM Java Client
28   * ჻჻჻჻჻჻
29   * Copyright 2023 - 2025 MetricsHub
30   * ჻჻჻჻჻჻
31   * Licensed under the Apache License, Version 2.0 (the "License");
32   * you may not use this file except in compliance with the License.
33   * You may obtain a copy of the License at
34   *
35   *      http://www.apache.org/licenses/LICENSE-2.0
36   *
37   * Unless required by applicable law or agreed to in writing, software
38   * distributed under the License is distributed on an "AS IS" BASIS,
39   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40   * See the License for the specific language governing permissions and
41   * limitations under the License.
42   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43   */
44  
45  import java.io.IOException;
46  import java.util.List;
47  import org.metricshub.wbem.sblim.slp.ServiceLocationAttribute;
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 = SrvReg = 3) |
55   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
56   * <URL-Entry> \
57   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | length of
58   * service type string | <service-type> \
59   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | length of
60   * <scope-list> | <scope-list> \
61   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | length of
62   * attr-list string | <attr-list> \
63   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |# of
64   * AttrAuths |(if present) Attribute Authentication Blocks...\
65   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
66   */
67  /**
68   * ServiceRegistration message
69   *
70   */
71  public class ServiceRegistration extends SLPMessage {
72  	private ServiceURL iServURL;
73  
74  	private List<String> iScopeList;
75  
76  	private List<ServiceLocationAttribute> iAttrList;
77  
78  	private List<?> iAuthBlockList;
79  
80  	/**
81  	 * parse
82  	 *
83  	 * @param pHdr
84  	 * @param pInStr
85  	 * @return SLPMessage
86  	 * @throws ServiceLocationException
87  	 * @throws IOException
88  	 */
89  	public static SLPMessage parse(MsgHeader pHdr, SLPInputStream pInStr) throws ServiceLocationException, IOException {
90  		ServiceURL url = pInStr.readURL();
91  		pInStr.readServiceType(); // FIXME reading dummy SrvType. Correct?
92  		return new ServiceRegistration(
93  			pHdr,
94  			url,
95  			pInStr.readStringList(),
96  			pInStr.readAttributeList(),
97  			pInStr.readAuthBlockList()
98  		);
99  	}
100 
101 	/**
102 	 * Ctor.
103 	 *
104 	 * @param pServURL
105 	 * @param pScopeList
106 	 *            - list of scope strings
107 	 * @param pAttrList
108 	 *            - list of ServiceLocationAttributes
109 	 * @param pAuthBlockList
110 	 */
111 	public ServiceRegistration(
112 		ServiceURL pServURL,
113 		List<String> pScopeList,
114 		List<ServiceLocationAttribute> pAttrList,
115 		List<?> pAuthBlockList
116 	) {
117 		super(SRV_REG);
118 		init(pServURL, pScopeList, pAttrList, pAuthBlockList);
119 	}
120 
121 	/**
122 	 * Ctor.
123 	 *
124 	 * @param pLangTag
125 	 * @param pServURL
126 	 * @param pScopeList
127 	 *            - list of scope strings
128 	 * @param pAttrList
129 	 *            - list of ServiceLocationAttributes
130 	 * @param pAuthBlockList
131 	 */
132 	public ServiceRegistration(
133 		String pLangTag,
134 		ServiceURL pServURL,
135 		List<String> pScopeList,
136 		List<ServiceLocationAttribute> pAttrList,
137 		List<?> pAuthBlockList
138 	) {
139 		super(SRV_REG, pLangTag);
140 		init(pServURL, pScopeList, pAttrList, pAuthBlockList);
141 	}
142 
143 	/**
144 	 * Ctor.
145 	 *
146 	 * @param pHeader
147 	 * @param pServURL
148 	 * @param pScopeList
149 	 *            - list of scope strings
150 	 * @param pAttrList
151 	 *            - list of ServiceLocationAttributes
152 	 * @param pAuthBlockList
153 	 */
154 	public ServiceRegistration(
155 		MsgHeader pHeader,
156 		ServiceURL pServURL,
157 		List<String> pScopeList,
158 		List<ServiceLocationAttribute> pAttrList,
159 		List<?> pAuthBlockList
160 	) {
161 		super(pHeader);
162 		init(pServURL, pScopeList, pAttrList, pAuthBlockList);
163 	}
164 
165 	/**
166 	 * getServiceURL
167 	 *
168 	 * @return ServiceURL
169 	 */
170 	public ServiceURL getServiceURL() {
171 		return this.iServURL;
172 	}
173 
174 	/**
175 	 * getScopeList
176 	 *
177 	 * @return List
178 	 */
179 	public List<String> getScopeList() {
180 		return this.iScopeList;
181 	}
182 
183 	/**
184 	 * getAttributeList
185 	 *
186 	 * @return List
187 	 */
188 	public List<ServiceLocationAttribute> getAttributeList() {
189 		return this.iAttrList;
190 	}
191 
192 	/**
193 	 * @param pOption
194 	 */
195 	@Override
196 	protected boolean serializeBody(SLPOutputStream pOutStr, SerializeOption pOption) {
197 		return (
198 			pOutStr.write(this.iServURL) &&
199 			pOutStr.write(this.iServURL.getServiceType()) &&
200 			pOutStr.writeStringList(this.iScopeList) &&
201 			pOutStr.writeAttributeList(this.iAttrList) &&
202 			pOutStr.writeAuthBlockList(this.iAuthBlockList)
203 		);
204 	}
205 
206 	private void init(
207 		ServiceURL pServURL,
208 		List<String> pScopeList,
209 		List<ServiceLocationAttribute> pAttrList,
210 		List<?> pAuthBlockList
211 	) {
212 		this.iServURL = pServURL;
213 		this.iScopeList = pScopeList;
214 		this.iAttrList = pAttrList;
215 		this.iAuthBlockList = pAuthBlockList;
216 	}
217 }