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)
54 this.handle = jORTEDomainAppCreate(domain,
55 ps==null ? 0 : this.props.getHandle(),
56 ev==null ? 0 : this.events.getHandle(),
59 /* TODO osetrit neuspesne vytvoreni domeny */
60 if(this.handle == 0) System.out.println(":j!: zero domain handle! ..");
61 else System.out.println(":j: application domain created..");
65 * Destroy the Application Domain.
68 public boolean destroy()
70 if(destroyAllRegTypes() && jORTEDomainAppDestroy(this.handle)
71 && (this.props == null || this.props.destroy())
72 && (this.events == null || this.events.destroy())) return true;
73 System.out.println(":j!: ORTEDomainAppDestroy() fault..");
79 * Register new data type.
80 * @param Name of the new type.
81 * @param Max length of the input buffer.
82 * @return True - registration Ok, False - registration fault.
85 boolean regNewDataType(String name,
88 int b = jORTETypeRegisterAdd(this.handle,
91 if (b == ORTEConstant.ORTE_BAD_HANDLE)
93 System.out.println(":!j: regNewDataType() failed! [bad domain handle]");
96 if (b == ORTEConstant.ORTE_OK)
98 System.out.println(":j: type: '" + name + "' successfully registered..");
106 * Destroys all previous registered data types.
107 * @return True - registration Ok, False - destroying fault.
110 boolean destroyAllRegTypes()
112 if (jORTETypeRegisterDestroyAll(this.handle)) return true;
118 * Creates a new Subscription.
120 * @param Subscription properties.
121 * @param Length of output buffer.
122 * @param Callback instance.
123 * @return Handle to the new created Subscription.
126 Subscription createSubscription(SubsProp subsProp,
127 MessageData instance,
128 SubscriptionCallback subsCallback)
130 Subscription s = new Subscription(this,
139 * Creates a new Publication.
141 * @param Instance of MessageData (which data will be send).
142 * @param Time parameter, which defines how long are publicated data valid.
143 * @param The importance of this Publication (its rating).
144 * @return Handle to the new created Publication.
147 Publication createPublication(PublProp publProp,
148 MessageData instance)
150 //System.out.println(":j: vytvarim publikaci pro DataType: " + instance.getType());
151 Publication p = new Publication(this,
158 /* ****************************************************************** *
162 * ****************************************************************** */
165 * jORTEDomainAppCreate - creates an default application object within given
166 * domain, returns handle to created object (from C environment),
167 * NULL in case of any error.
170 * @param domain given domain
171 * @return addres value (from C environment) of the created domain
173 private native long jORTEDomainDefaultAppCreate(int domain,boolean suspend);
177 * jORTEDomainAppCreate - creates an application object within given
178 * domain, returns handle to created object (from C environment),
179 * NULL in case of any error.
182 * @param domain given domain
183 * @param handler for C pointer to ORTEDomainProps
184 * @param handler for C pointer to ORTEDomainEvents
185 * @param suspended specifies whether threads of this application should be started as well (False) or stay suspended (True)
186 * @return addres value (from C environment) of the created domain
190 long jORTEDomainAppCreate(int domain,
198 * jORTEDomainADestroy - destroys all application objects in specified
199 * domain, returns False if some error occures otherwise returns True.
202 * @param jp_domhandle handler to domain
203 * @return boolean value, False when some error occures, otherwise True
206 boolean jORTEDomainAppDestroy(long dhandle);
210 * jORTETypeRegisterAdd - register new data type.
213 * @param dhandle handler to domain
220 int jORTETypeRegisterAdd(long dhandle,
226 * jORTETypeRegisterDestroyAll - destroys all previous registered data types.
229 * @param dhandle handler to domain
230 * @return boolean value, False when some error occures, otherwise True
233 boolean jORTETypeRegisterDestroyAll(long dhandle);