source: branches/FACT++_lidctrl_usb/dim/README_v14.txt

Last change on this file was 11071, checked in by tbretz, 13 years ago
Replaced v19r21 by a version extracted with 'unzip -a' to get proper unix text format.
File size: 10.4 KB
Line 
1
2 DIM version 14.07 Release Notes
3
4Notes 1 and 2 for Unix Users only
5NOTE 1: In order to "make" DIM two environment variables should be set:
6 OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
7 DIMDIR = the path name of DIM's top level directory
8 The user should then go to DIM's top level directory and do:
9 > source .setup
10 > gmake all
11 Or, if there is no support for C++ on the machine:
12 > gmake CPP=no all
13
14NOTE 2: The Name Server (Dns), DID, servers and clients (if running in
15 background) should be started whith the output redirected to a
16 logfile ex:
17 Dns </dev/null >& dns.log &
18
19NOTE 3: The Version Number service provided by servers is now set to 1407
20 (version 14.07).
21
2207/04/2004
23Changes for version 14.0:
24 - Spring Cleanup
25 Cleaned up inline methods out of include files.
26 Fixed some virtual destructors
27 Removed some unnecessary system include files
28 Fixed ctime_r to work on all platforms (Solaris, LynxOS too)
29
3021/04/2004
31Changes for version 14.1:
32 - Now if a server declares an exit handler (DimServer::addExitHandler
33 or dis_add_exit_handler) the user is responsible for exiting.
34 DIM will not exit by itself anymore.
35 - The windows version now also distributes MSVCRTD.DLL.
36 - Fixed a bug where servers could get confused if similar longish
37 service names were used in different servers.
38
3918/05/2004
40Changes for version 14.2:
41 - Cleaned up some "C" warnings
42 - Linux Did didn't display RPC formats properly - fixed.
43 - RPC structures were not transfered correctly back to the client,
44 the format of the structure was currupted - fixed.
45 - Added a New constructor and updateService method for the Java class
46 DimService. These allow the creation and update of a DimService by
47 passing another DimService. The data and format of the DimService
48 will be copied to the new one. Usefull for structured data.
49
5002/06/2004
51Changes for version 14.2-1:
52 - Fixed a bug in the java version that would make DIP crash when
53 extracting data items (file format.java)
54
5512/06/2004
56Changes for version 14.3:
57
58 - DIM Server Exit_handler: A server can specify an exit handler
59 by using:
60 dis_add_exit_handler(exitHandler) or
61 DimServer::addExitHandler()/virtual void exitHandler()
62 The exitHandler will be called in the following conditions:
63 - DNS node undefined
64 - Services already declared in DNS
65 - DNS doesn't accept connections from this machine
66 - An EXIT command from a client
67 If the user doesn't declare an exit handler, the DIM server will
68 exit, otherwise it is up to the user.
69
70 - DIM Error_handler: A server or a client can specify an error_handler
71 by using:
72 dis_add_error_handler(errorHandler)
73 dic_add_error_handler(errorHandler)
74 DimServer::addErrorHandler()/virtual void errorHandler(...)
75 DimClient::addErrorHandler()/virtual void errorHandler(...)
76 The error_handler will be called whenever DIM wants to report an
77 error (in this case all stdout/stderr prints will be suppressed).
78 The errorHandler is called with the following parameters:
79 int severity:
80 0: info
81 1: warning
82 2: error
83 3: fatal
84 int error_code
85 possible codes listed in dim_common.h
86 char *msg
87 If the user declared an error handler for a server and an error with
88 severity = fatal is received the exit handler will also be called.
89 For a client if an error with severity = fatal is received and there
90 is no error handler declared the process will exit.
91
92 - Java DIM: the same functionality is available in the form of a
93 DimErrorHandler class and a DimExitHandler class which can be used as
94 in the example:
95 public static void main(String[] args) {
96 DimErrorHandler erid = new DimErrorHandler()
97 {
98 public void errorHandler(int severity, int code, String msg)
99 {
100 System.out.println("Error: "+msg+" sev: "+
101 severity);
102 }
103 };
104 DimExitHandler exid = new DimExitHandler()
105 {
106 public void exitHandler(int code)
107 {
108 System.out.println("Exit: "+code);
109 }
110 };
111 ...
112
113 - Getting and Setting the DIM_DNS_NODE from a program:
114 The calls:
115 dim_set_dns_node
116 dim_get_dns_node
117 and the corresponding C++ calls:
118 DimServer::setDnsNode and DimServer::getDnsNode,
119 DimClient::setDnsNode and DimClient::getDnsNode
120 already existed,
121 they have now been complemented with:
122 dim_set_dns_port
123 dim_get_dns_port
124 and the static C++ calls:
125 DimServer::setDnsNode(node, port),DimServer::getDnsPort(),
126 DimClient::setDnsNode(node, port), DimClient::getDnsPort()
127
128 - In Java the folowing methods have been added to the classes DimServer
129 and DimClient:
130 public static void setDnsNode(String nodes);
131 public static void setDnsNode(String nodes, int port);
132 public static String getDnsNode();
133 public static int getDnsPort();
134
135 - the Java method DimService.getName() has been added.
136
137 - In C++ the creation of a new DimService could fail, for example, if
138 the service already existed in this server, this was not reported, since
139 a constructor can't return a value.
140 With the new error handling mechanisms, a user can declare an error_handler,
141 check if the error code is DIMSVCDUPLC and generate an exception which
142 will be thrown withing the DimService creation.
143 - Dim used to pass timestamps between servers and clients as an integer
144 for seconds since January 1970 and a short for milliseconds.
145 Now it will be one integer also for the milliseconds. By default DIM
146 still uses milliseconds, but if a server passes nanoseconds to
147 dis_set_timestamp the client will receive nanoseconds when doing
148 dic_get_timestamp.
149
15008/07/2004
151Changes for version 14.4:
152
153 - Java DIM: In order to allow a different error handler to be called for the
154 server and the client (if both in the same process) The calls:
155 DimServer.addErrorHandler(DimErrorHandler handler) and
156 DimClient.addErrorHandler(DimErrorHandler handler)
157 Should be called respectively by the server or the client in order to install
158 the Error Handler. For compatibitlity, the call:
159 DimServer.addExitHandler(DimErrorHandler handler)
160 was also added.
161
162 They can now be used as in the example (for a server):
163 public static void main(String[] args) {
164 DimErrorHandler erid = new DimErrorHandler()
165 {
166 public void errorHandler(int severity, int code, String msg)
167 {
168 System.out.println("Error: "+msg+" sev: "+
169 severity);
170 }
171 };
172 DimServer.addErrorHandler(erid);
173 DimExitHandler exid = new DimExitHandler()
174 {
175 public void exitHandler(int code)
176 {
177 System.out.println("Exit: "+code);
178 }
179 };
180 DimServer.addExitHandler(exit);
181 ...
182
183 - In a server it was already possible to find out inside a callback (for example
184 when a command was received):
185 - from which client id the message came:
186 int dis_get_conn_id()
187 - The name of this client in the form <pid>@<node_name>
188 int dis_get_client(char *name)
189 The equivalent C++ calls:
190 int DimServer::getClientId();
191 char *DimServer::getClientName();
192 And Java calls:
193 int DimServer.getClientId();
194 String DimServer.getClientName();
195 Where also available.
196
197 These calls were now complemented in 3 ways:
198 1 - They can be done also by clients to find out which server is providing a service
199 inside a callback (for example when a service is received).
200 For this purpose the following "C" calls where added:
201 - from which server id the message came:
202 int dic_get_conn_id()
203 - The name of this server in the form <server_name>@<node_name>
204 int dic_get_server(char *name)
205 And The equivalent C++ calls:
206 int DimClient::getServerId();
207 char *DimClient::getServerName();
208 And Java calls:
209 int DimClient.getServerId();
210 String DimClient.getServerName();
211 2 - These calls are also available inside the errorHandler callbacks.
212 Can be used to find out if the error originated from a specific connection,
213 in which case conn_id (or clientID or ServerId) != 0.
214 Or if it is a generic error, afecting all connections in which case conn_id = 0.
215 3 - A new type of calls has been added which allows to find out:
216 For a server - which services are being used by the current client (i.e. the
217 client that triggered the execution of this callback)
218 For a client - Which services are being provided by the current server (i.e
219 the server that triggered the execution of this callback)
220
221 This calls are the following in "C":
222 - char *dis_get_client_services(conn_id)
223 - char *dic_get_server_services(conn_id)
224 They return a list of services separated by '\n'
225 In C++:
226 - char **DimServer::getClientServices();
227 - char **DimClient::getServerServices();
228 They return an array of pointers to service names. The array is terminated by
229 a null pointer.
230 In Java:
231 - String[] DimServer.getClientServices();
232 - String[] DimClient.getServerServices();
233
234 An example in C++ of the usage of the new calls in an ErrorHandler:
235
236 class ErrorHandler : public DimErrorHandler
237 {
238 void errorHandler(int severity, int code, char *msg)
239 {
240 int index = 0;
241 char **services;
242 cout << severity << " " << msg << endl;
243 services = DimClient::getServerServices();
244 cout<< "from "<< DimClient::getServerName() << " services:" << endl;
245 while(services[index])
246 {
247 cout << services[index] << endl;
248 index++;
249 }
250 }
251 public:
252 ErrorHandler() {DimClient::addErrorHandler(this);}
253 };
254
255 And in Java:
256
257 ...
258 DimErrorHandler eid = new DimErrorHandler()
259 {
260 public void errorHandler(int severity, int code, String msg)
261 {
262 System.out.println("Error: "+msg+" sev: "+severity);
263 String[] list = DimClient.getServerServices();
264 System.out.println("Services: ");
265 for(int i = 0; i < list.length; i++)
266 System.out.println(list[i]);
267 }
268 };
269 DimClient.addErrorHandler(eid);
270
27102/08/2004
272Changes for version 14.5:
273 - Fixed a bug in dic.c - related to commands terminating after a connection was closed,
274 affected in particular DimBrowser "RPC" calls.
275
27602/08/2004
277Changes for version 14.6:
278 - Noticed that since the changes of version v14r4 the Dns was not printing any error
279 messages anymore - Fixed.
280 - In Windows SO_REUSEADDR doesn't work properly, so two DNSs could be running at the
281 same time using the same port number on the same PC - Fixed, now like in Linux, the
282 second one exits (printing an error message).
283
28410/08/2004
285Changes for version 14.7:
286 - The TCPIP error "Host Unknown" was not treated or reported properly. A client could
287 report DNS found when the DNS node was set to be an unexisting machine - fixed.
288
289Please check the Manual for more information at:
290 http://www.cern.ch/dim
Note: See TracBrowser for help on using the repository browser.