public void set(String timeAndValues) throws RrdException {
		StringTokenizer tokenizer = new StringTokenizer(timeAndValues, ":", false);
		int n = tokenizer.countTokens();
		if(n > values.length + 1) {
			throw new RrdException("Invalid number of values specified (found " +
				values.length +	", " + dsNames.length + " allowed)");
		}
		String timeToken = tokenizer.nextToken();
		try {
			time = Long.parseLong(timeToken);
		}
		catch(NumberFormatException nfe) {
			if(timeToken.equalsIgnoreCase("N") || timeToken.equalsIgnoreCase("NOW")) {
				time = Util.getTime();
			}
			else {
				throw new RrdException("Invalid sample timestamp: " + timeToken);
			}
		}
		for(int i = 0; tokenizer.hasMoreTokens(); i++) {
			try {
				values[i] = Double.parseDouble(tokenizer.nextToken());
			}
			catch (NumberFormatException nfe) {
				// NOP, value is already set to NaN
			}
		}
	}