1 // NAME
2 // $RCSfile: varbind.java,v $
3 // DESCRIPTION
4 // [given below in javadoc format]
5 // DELTA
6 // $Revision: 3.10 $
7 // CREATED
8 // $Date: 2007/10/17 10:47:47 $
9 // COPYRIGHT
10 // Westhawk Ltd
11 // TO DO
12 //
13
14 /*
15 * Copyright (C) 1995, 1996 by West Consulting BV
16 *
17 * Permission to use, copy, modify, and distribute this software
18 * for any purpose and without fee is hereby granted, provided
19 * that the above copyright notices appear in all copies and that
20 * both the copyright notice and this permission notice appear in
21 * supporting documentation.
22 * This software is provided "as is" without express or implied
23 * warranty.
24 * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
25 */
26
27 /*
28 * Copyright (C) 1996 - 2006 by Westhawk Ltd
29 * <a href="www.westhawk.co.uk">www.westhawk.co.uk</a>
30 *
31 * Permission to use, copy, modify, and distribute this software
32 * for any purpose and without fee is hereby granted, provided
33 * that the above copyright notices appear in all copies and that
34 * both the copyright notice and this permission notice appear in
35 * supporting documentation.
36 * This software is provided "as is" without express or implied
37 * warranty.
38 * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
39 */
40
41 package uk.co.westhawk.snmp.stack;
42
43 /*-
44 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
45 * SNMP Java Client
46 * ჻჻჻჻჻჻
47 * Copyright 2023 MetricsHub, Westhawk
48 * ჻჻჻჻჻჻
49 * This program is free software: you can redistribute it and/or modify
50 * it under the terms of the GNU Lesser General Public License as
51 * published by the Free Software Foundation, either version 3 of the
52 * License, or (at your option) any later version.
53 *
54 * This program is distributed in the hope that it will be useful,
55 * but WITHOUT ANY WARRANTY; without even the implied warranty of
56 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57 * GNU General Lesser Public License for more details.
58 *
59 * You should have received a copy of the GNU General Lesser Public
60 * License along with this program. If not, see
61 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
62 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
63 */
64
65 /**
66 * <p>
67 * This class represents the variable bindings to a PDU.
68 * A variable consists of a name (an AsnObjectId) and a value (an
69 * AsnObject)
70 * </p>
71 *
72 * <p>
73 * The varbind is usually passed to the Observers of the PDU when
74 * notifying them.
75 * </p>
76 *
77 * @see Pdu#addOid(varbind)
78 * @see Pdu#addOid(String, AsnObject)
79 * @author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
80 * @version $Revision: 3.10 $ $Date: 2007/10/17 10:47:47 $
81 */
82 public class varbind extends Object {
83 private static final String version_id = "@(#)$Id: varbind.java,v 3.10 2007/10/17 10:47:47 birgita Exp $ Copyright Westhawk Ltd";
84
85 private AsnObjectId name;
86 private AsnObject value;
87
88 /**
89 * Constructor.
90 * It will clone the varbind given as parameter.
91 *
92 * @param var The varbind
93 */
94 public varbind(varbind var) {
95 name = var.name;
96 value = var.value;
97 }
98
99 /**
100 * Constructor.
101 * The name will be set to the Oid, the value will be set to
102 * AsnNull. This is usually used in Get or GetNext requests.
103 *
104 * @param Oid The oid
105 * @see AsnNull
106 */
107 public varbind(String Oid) {
108 this(new AsnObjectId(Oid), new AsnNull());
109 }
110
111 /**
112 * Constructor.
113 * The name will be set to the Oid, the value will be set to
114 * AsnNull. This is usually used in Get or GetNext requests.
115 *
116 * @param Oid The oid
117 * @see AsnNull
118 */
119 public varbind(AsnObjectId Oid) {
120 this(Oid, new AsnNull());
121 }
122
123 /**
124 * Constructor.
125 * The name and value will be set.
126 * This is usually used in Set requests.
127 *
128 * @param Oid The oid
129 * @param val The value for the varbind
130 */
131 public varbind(String Oid, AsnObject val) {
132 this(new AsnObjectId(Oid), val);
133 }
134
135 /**
136 * Constructor.
137 * The name and value will be set.
138 * This is usually used in Set requests.
139 *
140 * @param Oid The oid
141 * @param val The value for the varbind
142 * @since 4_12
143 */
144 public varbind(AsnObjectId Oid, AsnObject val) {
145 name = Oid;
146 value = val;
147 }
148
149 varbind(AsnSequence vb)
150 throws IllegalArgumentException {
151 Object obj = vb.getObj(0);
152 if (obj instanceof AsnObjectId) {
153 name = (AsnObjectId) obj;
154 value = vb.getObj(1);
155 } else {
156 String msg = "First object should be AsnObjectId, but is ";
157 if (obj != null) {
158 msg += obj.getClass().getName();
159 } else {
160 msg += "null";
161 }
162 throw new IllegalArgumentException(msg);
163 }
164 }
165
166 /**
167 * Returns the oid, this is the name of the varbind.
168 *
169 * @return the name as an AsnObjectId
170 */
171 public AsnObjectId getOid() {
172 return name;
173 }
174
175 /**
176 * Returns the value of the varbind.
177 *
178 * @return the value as AsnObject
179 */
180 public AsnObject getValue() {
181 return value;
182 }
183
184 Object setValue(AsnSequence vb)
185 throws IllegalArgumentException {
186 varbind tmp = new varbind(vb);
187 name = tmp.name;
188 value = tmp.value;
189 return value;
190 }
191
192 /**
193 * Returns the string representation of the varbind.
194 *
195 * @return The string of the varbind
196 */
197 public String toString() {
198 return (name.toString() + ": " + value.toString());
199 }
200 }