/*******************************************************************************
 * Copyright (c) 2013-2020 LAAS-CNRS (www.laas.fr)
 * 7 Colonel Roche 31077 Toulouse - France
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * Initial Contributors:
 *     Thierry Monteil : Project manager, technical co-manager
 *     Mahdi Ben Alaya : Technical co-manager
 *     Samir Medjiah : Technical co-manager
 *     Khalil Drira : Strategy expert
 *     Guillaume Garzone : Developer
 *     François Aïssaoui : Developer
 *
 * New contributors :
 *******************************************************************************/
package org.eclipse.om2m.commons.constants;

/**
 * Integer constants for Resource types
 *
 */
public class ResourceType {
	
	/** Private constructor */
	private ResourceType(){}
	
	public static final int ACCESS_CONTROL_POLICY = 1;
	public static final int AE = 2;
	public static final int CONTAINER = 3;
	public static final int CONTENT_INSTANCE = 4;
	public static final int CSE_BASE = 5;
	public static final int DELIVERY = 6;
	public static final int EVENT_CONFIG = 7;
	public static final int EXEC_INSTANCE = 8;
	public static final int GROUP = 9;
	public static final int LOCATION_POLICY = 10;
	public static final int M2M_SERVICE_SUBSCRIPTION_PROFILE = 11;
	public static final int MGMT_CMD = 12;
	public static final int MGMT_OBJ = 13;
	public static final int NODE = 14;
	public static final int POLLING_CHANNEL = 15;
	public static final int REMOTE_CSE = 16;
	public static final int REQUEST = 17;
	public static final int SCHEDULE = 18;
	public static final int SERVICE_SUBSCRIBED_APP_RULE = 19;
	public static final int SERVICE_SUBSCRIBED_NODE = 20;
	public static final int STATS_COLLECT = 21;
	public static final int STATS_CONFIG = 22;
	public static final int SUBSCRIPTION = 23;
	public static final int FLEXCONTAINER = 28;
	public static final int DYNAMIC_AUTHORIZATION_CONSULTATION = 34;
	
	public static final int ACCESS_CONTROL_POLICY_ANNC = 10001;
	public static final int AE_ANNC = 10002;
	public static final int CONTAINER_ANNC = 10003;
	public static final int CONTENT_INSTANCE_ANNC = 10004;
	public static final int GROUP_ANNC = 10009;
	public static final int LOCATION_POLICY_ANNC = 10010;
	public static final int MGMT_OBJ_ANNC = 10013;
	public static final int NODE_ANNC = 10014;
	public static final int REMOTE_CSE_ANNC = 10016;
	public static final int SCHEDULE_ANNC = 10018;
	public static final int FLEXCONTAINER_ANNC = 10028;
	
}
