KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > client > functions > DCCOperators


1 package rero.client.functions;
2
3 import sleep.engine.*;
4 import sleep.runtime.*;
5 import sleep.interfaces.*;
6 import sleep.bridges.BridgeUtilities;
7
8 import rero.client.*;
9 import rero.util.*;
10 import java.util.*;
11
12 import rero.dcc.*;
13 import rero.client.dcc.*;
14
15 public class DCCOperators extends Feature implements Loadable
16 {
17    protected DataDCC dccData;
18
19    public void init()
20    {
21       dccData = (DataDCC)getCapabilities().getDataStructure(DataStructures.DataDCC);
22       getCapabilities().getScriptCore().addBridge(this);
23    }
24
25    public boolean scriptLoaded(ScriptInstance script)
26    {
27       script.getScriptEnvironment().getEnvironment().put("&getActiveConnections", new getActiveConnections());
28       script.getScriptEnvironment().getEnvironment().put("&getWaitingConnections", new getWaitingConnections());
29       script.getScriptEnvironment().getEnvironment().put("&getInactiveConnections", new getInactiveConnections());
30
31       script.getScriptEnvironment().getEnvironment().put("&getSpecificConnection", new getSpecificConnection());
32       script.getScriptEnvironment().getEnvironment().put("&getAllConnections", new getAllConnections());
33       script.getScriptEnvironment().getEnvironment().put("&getDCCConnection", new getDCCConnection());
34
35       script.getScriptEnvironment().getEnvironment().put("&getConnectionType", new getConnectionType());
36       script.getScriptEnvironment().getEnvironment().put("&getConnectionState", new getConnectionState());
37
38       script.getScriptEnvironment().getEnvironment().put("&getLocalPort", new getLocalPort());
39       script.getScriptEnvironment().getEnvironment().put("&getRemotePort", new getRemotePort());
40
41       script.getScriptEnvironment().getEnvironment().put("&getDCCAddress", new getConnectionAddress());
42       script.getScriptEnvironment().getEnvironment().put("&getDCCNickname", new getConnectionNickname());
43       script.getScriptEnvironment().getEnvironment().put("&getDCCIdleTime", new getIdleTime());
44       script.getScriptEnvironment().getEnvironment().put("&getDCCStartTime", new getStartTime());
45       script.getScriptEnvironment().getEnvironment().put("&getDCCTotalTime", new getTotalTime());
46
47       script.getScriptEnvironment().getEnvironment().put("-isdccopen", new isOpen());
48
49       script.getScriptEnvironment().getEnvironment().put("&closeDCC", new closeDCC());
50
51       script.getScriptEnvironment().getEnvironment().put("&getFileSizeOffset", new B_getStartOffset());
52       script.getScriptEnvironment().getEnvironment().put("&getDCCFileName", new B_getFileName());
53       script.getScriptEnvironment().getEnvironment().put("&getDCCFilePath", new B_getFilePath());
54       script.getScriptEnvironment().getEnvironment().put("&getTransferRate", new B_getTransferRate());
55       script.getScriptEnvironment().getEnvironment().put("&getTimeRemaining", new B_getTimeRemaining());
56
57       script.getScriptEnvironment().getEnvironment().put("&getAcknowledgedSize", new S_getAcknowledgedSize());
58       script.getScriptEnvironment().getEnvironment().put("&getBytesSent", new S_getBytesSent());
59
60       script.getScriptEnvironment().getEnvironment().put("&getBytesReceived", new R_getBytesReceived());
61       script.getScriptEnvironment().getEnvironment().put("&getExpectedSize", new R_getExpectedSize());
62
63       script.getScriptEnvironment().getEnvironment().put("&localip", new localip());
64       script.getScriptEnvironment().getEnvironment().put("&getNextPort", new getNextPort());
65
66       return true;
67    }
68
69    public boolean scriptUnloaded(ScriptInstance script)
70    {
71       return true;
72    }
73
74    private class localip implements Function
75    {
76       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
77       {
78          LocalInfo linfo = (LocalInfo)getCapabilities().getDataStructure(DataStructures.LocalInfo);
79          return SleepUtils.getScalar(linfo.localip());
80       }
81    }
82
83    private static class getNextPort implements Function
84    {
85       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
86       {
87          return SleepUtils.getScalar(ListenDCC.getNextPort());
88       }
89    }
90
91
92    private class getActiveConnections implements Function
93    {
94       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
95       {
96          return SleepUtils.getArrayWrapper(dccData.getConnections(-1, ProtocolDCC.STATE_OPEN));
97       }
98    }
99
100    private class getSpecificConnection implements Function
101    {
102       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
103       {
104          String JavaDoc nick = locals.pop().toString();
105          String JavaDoc type = BridgeUtilities.getString(locals, "Unknown");
106
107          return SleepUtils.getScalar(dccData.getSpecificConnection(nick, getType(type)));
108       }
109    }
110
111    private class getDCCConnection implements Function
112    {
113       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
114       {
115          String JavaDoc nick = locals.pop().toString();
116          return SleepUtils.getScalar(dccData.getConnectionFromHash(nick));
117       }
118    }
119
120    private class closeDCC implements Function
121    {
122       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
123       {
124          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
125          temp.getImplementation().close();
126          return SleepUtils.getEmptyScalar();
127       }
128    }
129
130    public static int getType(String JavaDoc type)
131    {
132       type = type.toUpperCase();
133
134       if (type.equals("SEND"))
135          return ProtocolDCC.DCC_SEND;
136
137       if (type.equals("CHAT"))
138          return ProtocolDCC.DCC_CHAT;
139
140       if (type.equals("RECEIVE"))
141          return ProtocolDCC.DCC_RECEIVE;
142
143       return -1;
144    }
145
146    private static String JavaDoc getTypeString(int type)
147    {
148       if (type == ProtocolDCC.DCC_SEND)
149          return "SEND";
150
151       if (type == ProtocolDCC.DCC_CHAT)
152          return "CHAT";
153
154       if (type == ProtocolDCC.DCC_RECEIVE)
155          return "RECEIVE";
156
157       return "Unknown";
158    }
159
160    private static String JavaDoc getStateString(int type)
161    {
162       if (type == ProtocolDCC.STATE_OPEN)
163          return "OPEN";
164
165       if (type == ProtocolDCC.STATE_CLOSED)
166          return "CLOSED";
167
168       if (type == ProtocolDCC.STATE_WAIT)
169          return "WAIT";
170
171       return "Unknown";
172    }
173
174    private static int getState(String JavaDoc type)
175    {
176       if (type.equals("OPEN"))
177          return ProtocolDCC.STATE_OPEN;
178
179       if (type.equals("CLOSED"))
180          return ProtocolDCC.STATE_CLOSED;
181
182       if (type.equals("WAIT"))
183          return ProtocolDCC.STATE_WAIT;
184
185       return -1;
186    }
187
188    private class getWaitingConnections implements Function
189    {
190       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
191       {
192          return SleepUtils.getArrayWrapper(dccData.getConnections(-1, ProtocolDCC.STATE_WAIT));
193       }
194    }
195
196    private class getInactiveConnections implements Function
197    {
198       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
199       {
200          return SleepUtils.getArrayWrapper(dccData.getConnections(-1, ProtocolDCC.STATE_CLOSED));
201       }
202    }
203
204    private class getAllConnections implements Function
205    {
206       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
207       {
208          return SleepUtils.getArrayWrapper(dccData.getAllConnections());
209       }
210    }
211
212    private class getConnectionType implements Function
213    {
214       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
215       {
216          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
217          return SleepUtils.getScalar(getTypeString(temp.getTypeOfDCC()));
218       }
219    }
220
221    private class getConnectionState implements Function
222    {
223       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
224       {
225          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
226          return SleepUtils.getScalar(getStateString(temp.getState()));
227       }
228    }
229
230    private class getLocalPort implements Function
231    {
232       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
233       {
234          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
235          return SleepUtils.getScalar(temp.getImplementation().getLocalPort());
236       }
237    }
238
239    private class getRemotePort implements Function
240    {
241       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
242       {
243          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
244          return SleepUtils.getScalar(temp.getImplementation().getPort());
245       }
246    }
247
248    private class getConnectionAddress implements Function
249    {
250       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
251       {
252          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
253          return SleepUtils.getScalar(temp.getImplementation().getRemoteAddress());
254       }
255    }
256
257    private class getConnectionNickname implements Function
258    {
259       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
260       {
261          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
262          return SleepUtils.getScalar(temp.getImplementation().getNickname());
263       }
264    }
265
266    private class getIdleTime implements Function
267    {
268       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
269       {
270          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
271          return SleepUtils.getScalar(temp.getImplementation().getIdleTime());
272       }
273    }
274
275    private class getStartTime implements Function
276    {
277       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
278       {
279          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
280          return SleepUtils.getScalar(temp.getImplementation().getStartTime());
281       }
282    }
283
284    private class getTotalTime implements Function
285    {
286       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
287       {
288          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
289          return SleepUtils.getScalar(temp.getImplementation().getTotalTime());
290       }
291    }
292
293    private class isOpen implements Predicate
294    {
295       public boolean decide(String JavaDoc f, ScriptInstance si, Stack locals)
296       {
297          GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals);
298          return temp.getState() == ProtocolDCC.STATE_OPEN;
299       }
300    }
301
302    //
303
// SEND Specific Functions
304
//
305

306    private class S_getAcknowledgedSize implements Function
307    {
308       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
309       {
310          Send temp = (Send)(((GenericDCC)BridgeUtilities.getObject(locals)).getImplementation());
311          return SleepUtils.getScalar(temp.getAcknowledgedSize());
312       }
313    }
314
315    private class S_getBytesSent implements Function
316    {
317       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
318       {
319          Send temp = (Send)(((GenericDCC)BridgeUtilities.getObject(locals)).getImplementation());
320          return SleepUtils.getScalar(temp.getBytesSent());
321       }
322    }
323
324    //
325
// RECEIVE Specific Functions
326
//
327

328    private class R_getExpectedSize implements Function
329    {
330       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
331       {
332          Receive temp = (Receive)(((GenericDCC)BridgeUtilities.getObject(locals)).getImplementation());
333          return SleepUtils.getScalar(temp.getExpectedSize());
334       }
335    }
336
337    private class R_getBytesReceived implements Function
338    {
339       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
340       {
341          Receive temp = (Receive)(((GenericDCC)BridgeUtilities.getObject(locals)).getImplementation());
342          return SleepUtils.getScalar(temp.getBytesReceived());
343       }
344    }
345
346    //
347
// Common to both SEND and RECEIVE
348
//
349

350    private class B_getStartOffset implements Function
351    {
352       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
353       {
354          ProtocolDCC temp = ((GenericDCC)BridgeUtilities.getObject(locals)).getImplementation();
355
356          if (temp instanceof Send)
357             return SleepUtils.getScalar(((Send)temp).getStartOffset());
358
359          if (temp instanceof Receive)
360             return SleepUtils.getScalar(((Receive)temp).getStartOffset());
361  
362          return SleepUtils.getEmptyScalar();
363       }
364    }
365
366    private class B_getTransferRate implements Function
367    {
368       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
369       {
370          ProtocolDCC temp = deriveImplementation(BridgeUtilities.getObject(locals));
371
372          if (temp instanceof Send)
373             return SleepUtils.getScalar(((Send)temp).getTransferRate());
374
375          if (temp instanceof Receive)
376             return SleepUtils.getScalar(((Receive)temp).getTransferRate());
377  
378          return SleepUtils.getEmptyScalar();
379       }
380    }
381
382    private class B_getTimeRemaining implements Function
383    {
384       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
385       {
386          ProtocolDCC temp = deriveImplementation(BridgeUtilities.getObject(locals));
387
388          if (temp instanceof Send)
389             return SleepUtils.getScalar(((Send)temp).getTimeRemaining());
390
391          if (temp instanceof Receive)
392             return SleepUtils.getScalar(((Receive)temp).getTimeRemaining());
393  
394          return SleepUtils.getEmptyScalar();
395       }
396    }
397
398    private class B_getFileName implements Function
399    {
400       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
401       {
402          ProtocolDCC temp = deriveImplementation(BridgeUtilities.getObject(locals));
403
404          if (temp instanceof Send)
405             return SleepUtils.getScalar(((Send)temp).getFile().getName());
406
407          if (temp instanceof Receive)
408             return SleepUtils.getScalar(((Receive)temp).getFile().getName());
409  
410          return SleepUtils.getEmptyScalar();
411       }
412    }
413
414    private class B_getFilePath implements Function
415    {
416       public Scalar evaluate(String JavaDoc f, ScriptInstance si, Stack locals)
417       {
418          ProtocolDCC temp = deriveImplementation(BridgeUtilities.getObject(locals));
419
420          if (temp instanceof Send)
421             return SleepUtils.getScalar(((Send)temp).getFile().getAbsolutePath());
422
423          if (temp instanceof Receive)
424             return SleepUtils.getScalar(((Receive)temp).getFile().getAbsolutePath());
425  
426          return SleepUtils.getEmptyScalar();
427       }
428    }
429
430    private static ProtocolDCC deriveImplementation(Object JavaDoc temp)
431    {
432        if (temp instanceof GenericDCC)
433            return ((GenericDCC)temp).getImplementation();
434        
435        if (temp instanceof ProtocolDCC)
436            return (ProtocolDCC)temp;
437
438        return null;
439    }
440 }
441
Popular Tags