4 * Class DomainApp provides methods for work with the ORTE application domain.
6 * @author Lukas Pokorny (lukas_pokorny@centrum.cz)
7 * @author CTU FEE Prague - Department of Control Engineering (dce.felk.cvut.cz)
8 * @author Project ORTE - OCERA Real Time Ethernet (www.ocera.org)
9 * @author dedication to Kj
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
24 package org.ocera.orte;
25 import org.ocera.orte.types.*;
28 public class DomainApp extends Domain
32 * Default constructor. Creates an Application Domain with default parameters.
33 * (domain = ORTE_DEFAULT_DOMAIN, suspended thread = false)
38 // this.handle =jORTEDomainDefaultAppCreate(ORTEConstant.ORTE_DEFAULT_DOMAIN,true); - uspane vlakno po startu
39 this.handle = jORTEDomainDefaultAppCreate(ORTEConstant.ORTE_DEFAULT_DOMAIN,false);
40 if(this.handle == 0) System.out.println(":j!: zero domain handle! ..");
41 else System.out.println(":j: application domain created..");
46 * User defined constructor. For creating an Application Domain with your parameters.
48 /** TODO dodelat objekty 'props', 'events' */
49 public DomainApp(int domain, DomainProp ps, DomainEvents ev, boolean suspend)
51 super(); // set Default Domain Properties
53 this.props = DomainProp.defaultPropsCreate();
65 this.handle = jORTEDomainAppCreate(domain,ps.handle,ev.getHandle(),ev,suspend);
66 /* TODO osetrit neuspesne vytvoreni domeny */
67 if(this.handle == 0) System.out.println(":j!: zero domain handle! ..");
68 else System.out.println(":j: application domain created..");
73 * Destructor. Before it destroy Application Domain, destroy all registered
76 protected void finalize()
78 if(!destroyAllRegTypes()) System.out.println(":j!: destroyAllRegTypes fault!");
79 if(!destroy()) System.out.println(":j!: ORTEDomainADestroy fault!");
84 * Destroy the Application Domain.
86 public boolean destroy()
88 if (jORTEDomainAppDestroy(this.handle)) return true;
94 * Register new data type.
95 * @param Name of the new type.
96 * @param Max length of the input buffer.
97 * @return True - registration Ok, False - registration fault.
100 boolean regNewDataType(String name,
103 int b = jORTETypeRegisterAdd(this.handle,
106 if (b == ORTEConstant.ORTE_BAD_HANDLE)
108 System.out.println(":!j: regNewDataType() failed! [bad domain handle]");
111 if (b == ORTEConstant.ORTE_OK)
113 System.out.println(":j: type: '" + name + "' successfully registered..");
121 * Destroys all previous registered data types.
122 * @return True - registration Ok, False - destroying fault.
125 boolean destroyAllRegTypes()
127 if (jORTETypeRegisterDestroyAll(this.handle)) return true;
133 * Creates a new Subscription.
135 * @param Subscription properties.
136 * @param Length of output buffer.
137 * @param Callback instance.
138 * @return Handle to the new created Subscription.
141 Subscription createSubscription(SubsProp subsProp,
142 MessageData instance,
143 SubscriptionCallback subsCallback)
145 Subscription s = new Subscription(this,
154 * Creates a new Publication.
156 * @param Instance of MessageData (which data will be send).
157 * @param Time parameter, which defines how long are publicated data valid.
158 * @param The importance of this Publication (its rating).
159 * @return Handle to the new created Publication.
162 Publication createPublication(PublProp publProp,
163 MessageData instance)
165 //System.out.println(":j: vytvarim publikaci pro DataType: " + instance.getType());
166 Publication p = new Publication(this,
173 /* ****************************************************************** *
177 * ****************************************************************** */
180 * jORTEDomainAppCreate - creates an default application object within given
181 * domain, returns handle to created object (from C environment),
182 * NULL in case of any error.
185 * @param domain given domain
186 * @return addres value (from C environment) of the created domain
188 private static native long jORTEDomainDefaultAppCreate(int domain,boolean suspend);
192 * jORTEDomainAppCreate - creates an application object within given
193 * domain, returns handle to created object (from C environment),
194 * NULL in case of any error.
197 * @param domain given domain
198 * @param handler for C pointer to ORTEDomainProps
199 * @param handler for C pointer to ORTEDomainEvents
200 * @param suspended specifies whether threads of this application should be started as well (False) or stay suspended (True)
201 * @return addres value (from C environment) of the created domain
204 private static native
205 long jORTEDomainAppCreate(int domain,
213 * jORTEDomainADestroy - destroys all application objects in specified
214 * domain, returns False if some error occures otherwise returns True.
217 * @param jp_domhandle handler to domain
218 * @return boolean value, False when some error occures, otherwise True
220 private static native
221 boolean jORTEDomainAppDestroy(long dhandle);
225 * jORTETypeRegisterAdd - register new data type.
228 * @param dhandle handler to domain
234 private static native
235 int jORTETypeRegisterAdd(long dhandle,
241 * jORTETypeRegisterDestroyAll - destroys all previous registered data types.
244 * @param dhandle handler to domain
245 * @return boolean value, False when some error occures, otherwise True
247 private static native
248 boolean jORTETypeRegisterDestroyAll(long dhandle);