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 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 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 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 f, ScriptInstance si, Stack locals) 103 { 104 String nick = locals.pop().toString(); 105 String 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 f, ScriptInstance si, Stack locals) 114 { 115 String 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f, ScriptInstance si, Stack locals) 296 { 297 GenericDCC temp = (GenericDCC)BridgeUtilities.getObject(locals); 298 return temp.getState() == ProtocolDCC.STATE_OPEN; 299 } 300 } 301 302 306 private class S_getAcknowledgedSize implements Function 307 { 308 public Scalar evaluate(String 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 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 328 private class R_getExpectedSize implements Function 329 { 330 public Scalar evaluate(String 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 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 350 private class B_getStartOffset implements Function 351 { 352 public Scalar evaluate(String 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 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 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 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 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 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 |