Full Code of fast-data-transfer/fdt for AI

master ddfcc041f478 cached
436 files
2.5 MB
687.8k tokens
3917 symbols
1 requests
Download .txt
Showing preview only (2,751K chars total). Download the full file or copy to clipboard to get everything.
Repository: fast-data-transfer/fdt
Branch: master
Commit: ddfcc041f478
Files: 436
Total size: 2.5 MB

Directory structure:
gitextract_j9cz1puc/

├── LICENSE.md
├── LICENSE_GANYMED_SSH2.txt
├── MANIFEST.MF
├── README
├── README.md
├── add-lib-to-local-maven.sh
├── build-all.sh
├── classpath
├── docs/
│   ├── _config.yml
│   ├── doc-examples.md
│   ├── doc-fdt-ddcopy.md
│   ├── doc-opentsdb.md
│   ├── doc-security.md
│   ├── doc-system-tuning.md
│   ├── doc-user-extensions.md
│   ├── index.md
│   ├── monitoring-opentsdb.txt
│   ├── perf-disk-to-disk.md
│   ├── perf-memory-to-memory.md
│   ├── perf-sc06.md
│   ├── perf-sc08.md
│   └── perf-sc09.md
├── lgtm.yml
├── lib/
│   ├── globus/
│   │   ├── axisg-2.2.0.jar
│   │   ├── bcprov-jdk15on-1.50.jar
│   │   ├── bouncycastle.LICENSE
│   │   ├── commons-codec-1.7.jar
│   │   ├── commons-io-2.4.jar
│   │   ├── commons-lang3-3.1.jar
│   │   ├── commons-logging.LICENSE
│   │   ├── commons-logging.jar
│   │   ├── cryptix.LICENSE
│   │   ├── gram-2.2.0.jar
│   │   ├── gridftp-2.2.0.jar
│   │   ├── gss-2.2.0.jar
│   │   ├── io-2.2.0.jar
│   │   ├── jsse-2.2.0.jar
│   │   ├── junit.LICENSE
│   │   ├── log4j.LICENSE
│   │   ├── myproxy-2.2.0.jar
│   │   ├── puretls.LICENSE
│   │   ├── ssl-proxies-2.2.0.jar
│   │   └── version.txt
│   ├── gsi-sshterm/
│   │   ├── BCGSS.jar
│   │   ├── SSHTerm-1.0.0.jar
│   │   ├── SSHVnc.jar
│   │   ├── SecureTunneling.jar
│   │   ├── ShiFT.jar
│   │   ├── TransferAPIClient.jar
│   │   ├── bcprov-jdk15on-1.50.jar
│   │   ├── commons-compress-1.2.jar
│   │   ├── filedrop.jar
│   │   ├── j2ssh-common-0.2.7.jar
│   │   ├── j2ssh-core-0.2.7.jar
│   │   ├── jglobus2/
│   │   │   ├── axisg-2.2.0.jar
│   │   │   ├── bcprov-jdk15on-1.50.jar
│   │   │   ├── commons-codec-1.7.jar
│   │   │   ├── commons-io-2.4.jar
│   │   │   ├── commons-lang3-3.1.jar
│   │   │   ├── commons-logging.jar
│   │   │   ├── gram-2.2.0.jar
│   │   │   ├── gridftp-2.2.0.jar
│   │   │   ├── gss-2.2.0.jar
│   │   │   ├── io-2.2.0.jar
│   │   │   ├── jsse-2.2.0.jar
│   │   │   ├── myproxy-2.2.0.jar
│   │   │   └── ssl-proxies-2.2.0.jar
│   │   ├── jlirc-unix-soc.jar
│   │   ├── libbrowser.jar
│   │   ├── log4j-1.2.6.jar
│   │   ├── ncsa-lcrypto-146.jar
│   │   ├── not-yet-commons-ssl-0.3.11.jar
│   │   ├── putty-pk-1.1.0.jar
│   │   ├── swing-layout-1.0.3.jar
│   │   └── voms-api-java-2.0.9.jar
│   └── opentsdb/
│       └── opentsdb-client-2.1.0.jar
├── open_direct.c
├── pom.xml
└── src/
    ├── apmon/
    │   ├── ApMon.java
    │   ├── ApMonException.java
    │   ├── ApMonMonitoringConstants.java
    │   ├── BkThread.java
    │   ├── MonitoredJob.java
    │   ├── XDRDataOutput.java
    │   ├── XDROutputStream.java
    │   └── host/
    │       ├── HostPropertiesMonitor.java
    │       ├── MacHostPropertiesMonitor.java
    │       ├── Parser.java
    │       ├── ProcReader.java
    │       └── cmdExec.java
    ├── ch/
    │   └── ethz/
    │       └── ssh2/
    │           ├── ChannelCondition.java
    │           ├── Connection.java
    │           ├── ConnectionInfo.java
    │           ├── ConnectionMonitor.java
    │           ├── DHGexParameters.java
    │           ├── HTTPProxyData.java
    │           ├── HTTPProxyException.java
    │           ├── InteractiveCallback.java
    │           ├── KnownHosts.java
    │           ├── LocalPortForwarder.java
    │           ├── LocalStreamForwarder.java
    │           ├── ProxyData.java
    │           ├── SCPClient.java
    │           ├── SFTPException.java
    │           ├── SFTPv3Client.java
    │           ├── SFTPv3DirectoryEntry.java
    │           ├── SFTPv3FileAttributes.java
    │           ├── SFTPv3FileHandle.java
    │           ├── ServerHostKeyVerifier.java
    │           ├── Session.java
    │           ├── StreamGobbler.java
    │           ├── auth/
    │           │   └── AuthenticationManager.java
    │           ├── channel/
    │           │   ├── Channel.java
    │           │   ├── ChannelInputStream.java
    │           │   ├── ChannelManager.java
    │           │   ├── ChannelOutputStream.java
    │           │   ├── IChannelWorkerThread.java
    │           │   ├── LocalAcceptThread.java
    │           │   ├── RemoteAcceptThread.java
    │           │   ├── RemoteForwardingData.java
    │           │   ├── RemoteX11AcceptThread.java
    │           │   ├── StreamForwarder.java
    │           │   └── X11ServerData.java
    │           ├── crypto/
    │           │   ├── Base64.java
    │           │   ├── CryptoWishList.java
    │           │   ├── KeyMaterial.java
    │           │   ├── PEMDecoder.java
    │           │   ├── PEMStructure.java
    │           │   ├── SimpleDERReader.java
    │           │   ├── cipher/
    │           │   │   ├── AES.java
    │           │   │   ├── BlockCipher.java
    │           │   │   ├── BlockCipherFactory.java
    │           │   │   ├── BlowFish.java
    │           │   │   ├── CBCMode.java
    │           │   │   ├── CTRMode.java
    │           │   │   ├── CipherInputStream.java
    │           │   │   ├── CipherOutputStream.java
    │           │   │   ├── DES.java
    │           │   │   ├── DESede.java
    │           │   │   └── NullCipher.java
    │           │   ├── dh/
    │           │   │   ├── DhExchange.java
    │           │   │   └── DhGroupExchange.java
    │           │   └── digest/
    │           │       ├── Digest.java
    │           │       ├── HMAC.java
    │           │       ├── HashForSSH2Types.java
    │           │       ├── MAC.java
    │           │       ├── MD5.java
    │           │       └── SHA1.java
    │           ├── log/
    │           │   └── Logger.java
    │           ├── packets/
    │           │   ├── PacketChannelOpenConfirmation.java
    │           │   ├── PacketChannelOpenFailure.java
    │           │   ├── PacketChannelWindowAdjust.java
    │           │   ├── PacketDisconnect.java
    │           │   ├── PacketGlobalCancelForwardRequest.java
    │           │   ├── PacketGlobalForwardRequest.java
    │           │   ├── PacketIgnore.java
    │           │   ├── PacketKexDHInit.java
    │           │   ├── PacketKexDHReply.java
    │           │   ├── PacketKexDhGexGroup.java
    │           │   ├── PacketKexDhGexInit.java
    │           │   ├── PacketKexDhGexReply.java
    │           │   ├── PacketKexDhGexRequest.java
    │           │   ├── PacketKexDhGexRequestOld.java
    │           │   ├── PacketKexInit.java
    │           │   ├── PacketNewKeys.java
    │           │   ├── PacketOpenDirectTCPIPChannel.java
    │           │   ├── PacketOpenSessionChannel.java
    │           │   ├── PacketServiceAccept.java
    │           │   ├── PacketServiceRequest.java
    │           │   ├── PacketSessionExecCommand.java
    │           │   ├── PacketSessionPtyRequest.java
    │           │   ├── PacketSessionStartShell.java
    │           │   ├── PacketSessionSubsystemRequest.java
    │           │   ├── PacketSessionX11Request.java
    │           │   ├── PacketUserauthBanner.java
    │           │   ├── PacketUserauthFailure.java
    │           │   ├── PacketUserauthInfoRequest.java
    │           │   ├── PacketUserauthInfoResponse.java
    │           │   ├── PacketUserauthRequestInteractive.java
    │           │   ├── PacketUserauthRequestNone.java
    │           │   ├── PacketUserauthRequestPassword.java
    │           │   ├── PacketUserauthRequestPublicKey.java
    │           │   ├── Packets.java
    │           │   ├── TypesReader.java
    │           │   └── TypesWriter.java
    │           ├── sftp/
    │           │   ├── AttrTextHints.java
    │           │   ├── AttribBits.java
    │           │   ├── AttribFlags.java
    │           │   ├── AttribPermissions.java
    │           │   ├── AttribTypes.java
    │           │   ├── ErrorCodes.java
    │           │   ├── OpenFlags.java
    │           │   └── Packet.java
    │           ├── signature/
    │           │   ├── DSAPrivateKey.java
    │           │   ├── DSAPublicKey.java
    │           │   ├── DSASHA1Verify.java
    │           │   ├── DSASignature.java
    │           │   ├── RSAPrivateKey.java
    │           │   ├── RSAPublicKey.java
    │           │   ├── RSASHA1Verify.java
    │           │   └── RSASignature.java
    │           ├── transport/
    │           │   ├── ClientServerHello.java
    │           │   ├── KexManager.java
    │           │   ├── KexParameters.java
    │           │   ├── KexState.java
    │           │   ├── MessageHandler.java
    │           │   ├── NegotiateException.java
    │           │   ├── NegotiatedParameters.java
    │           │   ├── TransportConnection.java
    │           │   └── TransportManager.java
    │           └── util/
    │               ├── PasswordField.java
    │               ├── PasswordReader.java
    │               ├── TimeoutService.java
    │               └── Tokenizer.java
    ├── edu/
    │   └── caltech/
    │       └── hep/
    │           └── dcapj/
    │               ├── Config.java
    │               ├── PnfsUtil.java
    │               ├── dCacheFile.java
    │               ├── dCacheFileChannelProviderFactory.java
    │               ├── dCapLayer.java
    │               ├── io/
    │               │   ├── dCacheFileInputStream.java
    │               │   └── dCacheFileOutputStream.java
    │               ├── nio/
    │               │   └── dCacheFileChannel.java
    │               ├── test/
    │               │   ├── Main.java
    │               │   ├── Main2.java
    │               │   └── Main3.java
    │               └── util/
    │                   ├── ControlCommandCallback.java
    │                   ├── ControlConnection.java
    │                   ├── DataConnectionCallback.java
    │                   ├── IOCallback.java
    │                   ├── InvalidConfigurationException.java
    │                   ├── Server.java
    │                   └── ServerNIO.java
    ├── lia/
    │   ├── gsi/
    │   │   ├── ClientTest.java
    │   │   ├── FDTGSIServer.java
    │   │   ├── GSIServer.java
    │   │   ├── authz/
    │   │   │   ├── GridMap.java
    │   │   │   ├── GridMapAuthorization.java
    │   │   │   └── LocalMappingAuthorization.java
    │   │   ├── net/
    │   │   │   ├── GSIBaseServer.java
    │   │   │   ├── GSIGssSocketFactory.java
    │   │   │   └── Peer.java
    │   │   └── ssh/
    │   │       ├── GSIAuthenticationClient.java
    │   │       └── TextSSHClient.java
    │   └── util/
    │       └── net/
    │           ├── common/
    │           │   ├── AbstractBPool.java
    │           │   ├── AbstractFDTCloseable.java
    │           │   ├── AbstractFDTIOEntity.java
    │           │   ├── AcceptableTask.java
    │           │   ├── Config.java
    │           │   ├── ControlStream.java
    │           │   ├── DDCopy.java
    │           │   ├── DirectByteBufferPool.java
    │           │   ├── FDTBuffer.java
    │           │   ├── FDTBufferPool.java
    │           │   ├── FDTCloseable.java
    │           │   ├── FDTCommandLine.java
    │           │   ├── FDTVersion.java
    │           │   ├── FileChannelProvider.java
    │           │   ├── FileChannelProviderFactory.java
    │           │   ├── GSISSHControlStream.java
    │           │   ├── HeaderBufferPool.java
    │           │   ├── InvalidFDTParameterException.java
    │           │   ├── KernelTest.java
    │           │   ├── LocalHost.java
    │           │   ├── MassStorage.java
    │           │   ├── MonitoringUtils.java
    │           │   ├── NetMatcher.java
    │           │   ├── NetloggerRecord.java
    │           │   ├── SSHControlStream.java
    │           │   ├── StoragePathDecoder.java
    │           │   ├── SystemLoadMonitor.java
    │           │   ├── Test.java
    │           │   ├── Test2MD5Sum.java
    │           │   ├── Utils.java
    │           │   └── usage
    │           ├── copy/
    │           │   ├── Accountable.java
    │           │   ├── AccountableEntity.java
    │           │   ├── FDT.java
    │           │   ├── FDT.manifest
    │           │   ├── FDTMain.java
    │           │   ├── FDTReaderSession.java
    │           │   ├── FDTServer.java
    │           │   ├── FDTSession.java
    │           │   ├── FDTSessionManager.java
    │           │   ├── FDTWriterSession.java
    │           │   ├── FileBlock.java
    │           │   ├── FileBlockConsumer.java
    │           │   ├── FileBlockProducer.java
    │           │   ├── FileReaderSession.java
    │           │   ├── FileSession.java
    │           │   ├── FileWriterSession.java
    │           │   ├── IOSession.java
    │           │   ├── PartitionMap.java
    │           │   ├── PosixFSFileChannelProviderFactory.java
    │           │   ├── disk/
    │           │   │   ├── DiskReaderManager.java
    │           │   │   ├── DiskReaderTask.java
    │           │   │   ├── DiskWriterManager.java
    │           │   │   ├── DiskWriterTask.java
    │           │   │   ├── GenericDiskManager.java
    │           │   │   ├── GenericDiskTask.java
    │           │   │   └── ResumeManager.java
    │           │   ├── filters/
    │           │   │   ├── Postprocessor.java
    │           │   │   ├── Preprocessor.java
    │           │   │   ├── ProcessorInfo.java
    │           │   │   └── examples/
    │           │   │       ├── FirewallFileExtension.java
    │           │   │       ├── FirewallFileNames.java
    │           │   │       ├── FixUserHome.java
    │           │   │       ├── PostRename.java
    │           │   │       ├── PostZipFilter.java
    │           │   │       ├── PreRename.java
    │           │   │       └── PreZipFilter.java
    │           │   ├── gui/
    │           │   │   ├── AboutDialog.java
    │           │   │   ├── ClientSessionManager.java
    │           │   │   ├── ConnectDialog.java
    │           │   │   ├── CustomLogHandler.java
    │           │   │   ├── CustomPrintStream.java
    │           │   │   ├── DummyRemoteSessionManager.java
    │           │   │   ├── EnhancedJPanel.java
    │           │   │   ├── FDTPropsDialog.java
    │           │   │   ├── FolderFrame.java
    │           │   │   ├── FolderTable.java
    │           │   │   ├── GUISSHControlStream.java
    │           │   │   ├── HelpDialog.java
    │           │   │   ├── PreferencesHandler.java
    │           │   │   ├── ProgressBarUI.java
    │           │   │   ├── RemoteSessionManager.java
    │           │   │   ├── StatusBar.java
    │           │   │   ├── TransferMonitor.java
    │           │   │   └── session/
    │           │   │       ├── LocalSession.java
    │           │   │       ├── RemoteSession.java
    │           │   │       └── Session.java
    │           │   ├── monitoring/
    │           │   │   ├── ApMonReportingTask.java
    │           │   │   ├── ClientTransportMonitorTask.java
    │           │   │   ├── ConsoleReportingTask.java
    │           │   │   ├── DiskReaderManagerMonitoringTask.java
    │           │   │   ├── DiskWriterManagerMonitoringTask.java
    │           │   │   ├── DiskWriterMonitoringTask.java
    │           │   │   ├── FDTInternalMonitoringTask.java
    │           │   │   ├── FDTReportingTask.java
    │           │   │   ├── FDTSessionMonitoringTask.java
    │           │   │   ├── NetSessionMonitoringTask.java
    │           │   │   ├── base/
    │           │   │   │   └── AbstractAccountableMonitoringTask.java
    │           │   │   ├── jmx/
    │           │   │   │   ├── DBPoolJMX.java
    │           │   │   │   └── DBPoolJMXMBean.java
    │           │   │   └── lisa/
    │           │   │       ├── CmdCheckerTask.java
    │           │   │       ├── HostPropertiesMonitor.java
    │           │   │       ├── LISAReportingTask.java
    │           │   │       ├── LisaCtrlNotifier.java
    │           │   │       ├── MacHostPropertiesMonitor.java
    │           │   │       ├── MonClient.java
    │           │   │       ├── ProcReader.java
    │           │   │       ├── cmdExec.java
    │           │   │       ├── net/
    │           │   │       │   ├── PatternUtil.java
    │           │   │       │   ├── Statistics.java
    │           │   │       │   ├── dev/
    │           │   │       │   │   ├── InterfaceHandler.java
    │           │   │       │   │   ├── InterfaceStatistics.java
    │           │   │       │   │   ├── InterfaceStatisticsStatic.java
    │           │   │       │   │   ├── MTUSet.java
    │           │   │       │   │   └── TXQueueLenSet.java
    │           │   │       │   ├── netstat/
    │           │   │       │   │   ├── Connection.java
    │           │   │       │   │   ├── Netstat.java
    │           │   │       │   │   └── NetstatHandler.java
    │           │   │       │   └── statistics/
    │           │   │       │       ├── IPStatistics.java
    │           │   │       │       ├── StatisticsHandler.java
    │           │   │       │       ├── TCPExtStatistics.java
    │           │   │       │       ├── TCPStatistics.java
    │           │   │       │       └── UDPStatistics.java
    │           │   │       └── xdr/
    │           │   │           ├── SocketFactory.java
    │           │   │           ├── XDRClient.java
    │           │   │           ├── XDRDataInput.java
    │           │   │           ├── XDRDataOutput.java
    │           │   │           ├── XDRGenericComm.java
    │           │   │           ├── XDRInputStream.java
    │           │   │           ├── XDRMLMappings.java
    │           │   │           ├── XDRMessage.java
    │           │   │           ├── XDRMessageNotifier.java
    │           │   │           ├── XDRNamedPipe.java
    │           │   │           ├── XDROutputStream.java
    │           │   │           ├── XDRRandomAccessFile.java
    │           │   │           ├── XDRSerializable.java
    │           │   │           └── XDRTcpSocket.java
    │           │   └── transport/
    │           │       ├── ControlChannel.java
    │           │       ├── ControlChannelNotifier.java
    │           │       ├── CtrlMsg.java
    │           │       ├── FDTKeyAttachement.java
    │           │       ├── FDTListFilesMsg.java
    │           │       ├── FDTProcolException.java
    │           │       ├── FDTReaderKeyAttachement.java
    │           │       ├── FDTSessionConfigMsg.java
    │           │       ├── FDTWriterKeyAttachement.java
    │           │       ├── FDTWriterKeyAttachementComparator.java
    │           │       ├── PingDaemon.java
    │           │       ├── SocketReaderTask.java
    │           │       ├── SocketTask.java
    │           │       ├── SocketWriterTask.java
    │           │       ├── SpeedLimitManager.java
    │           │       ├── SpeedLimiter.java
    │           │       ├── TCPSessionReader.java
    │           │       ├── TCPSessionWriter.java
    │           │       ├── TCPTransportProvider.java
    │           │       ├── gui/
    │           │       │   ├── FileHandler.java
    │           │       │   ├── GUIControlChannel.java
    │           │       │   ├── GUIControlChannelNotifier.java
    │           │       │   ├── GUIMessage.java
    │           │       │   └── ServerSessionManager.java
    │           │       └── internal/
    │           │           ├── FDTSelectionKey.java
    │           │           ├── SelectionHandler.java
    │           │           └── SelectionManager.java
    │           └── jiperf/
    │               ├── ByteBufferPool.java
    │               ├── JIperf.java
    │               ├── JIperfClient.java
    │               ├── JIperfServer.java
    │               ├── control/
    │               │   ├── ControlStream.java
    │               │   ├── StreamConsumer.java
    │               │   └── StreamPumper.java
    │               └── test/
    │                   └── FDTNetPerf.java
    └── org/
        └── apache/
            └── commons/
                ├── cli/
                │   ├── AlreadySelectedException.java
                │   ├── BasicParser.java
                │   ├── CommandLine.java
                │   ├── CommandLineParser.java
                │   ├── GnuParser.java
                │   ├── HelpFormatter.java
                │   ├── MissingArgumentException.java
                │   ├── MissingOptionException.java
                │   ├── Option.java
                │   ├── OptionBuilder.java
                │   ├── OptionGroup.java
                │   ├── Options.java
                │   ├── ParseException.java
                │   ├── Parser.java
                │   ├── PatternOptionBuilder.java
                │   ├── PosixParser.java
                │   ├── TypeHandler.java
                │   ├── UnrecognizedOptionException.java
                │   ├── overview.html
                │   └── package.html
                └── lang/
                    └── math/
                        └── NumberUtils.java

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE.md
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   Copyright 2017 California Institute of Technology

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


=======================================================================

FDT Libraries:

FDT project contains libraries with separate copyright notices
and license terms. Your use of the source code for the these
libraries is subject to the terms and conditions of the following
licenses.

========================================================================

Acknowledgement:

Copyright 2017 California Institute of Technology, based on research sponsored
and supported by the DOE Office of High Energy Physics, the DOE Office of Advanced
Scientific Computing, the NSF Mathematical and Physical Sciences and Directorate,
and the NSF Division of Advanced Cyberinfrastructure.


================================================
FILE: LICENSE_GANYMED_SSH2.txt
================================================
Copyright (c) 2005 - 2006 Swiss Federal Institute of Technology (ETH Zurich),
  Department of Computer Science (http://www.inf.ethz.ch),
  Christian Plattner. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

a.) Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
b.) Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
c.) Neither the name of ETH Zurich nor the names of its contributors may
    be used to endorse or promote products derived from this software
    without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.


The Java implementations of the AES, Blowfish and 3DES ciphers have been
taken (and slightly modified) from the cryptography package released by
"The Legion Of The Bouncy Castle".

Their license states the following:

Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
(http://www.bouncycastle.org)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. 



================================================
FILE: MANIFEST.MF
================================================
Manifest-Version: 1.0
Class-Path: io-2.2.0.jar bcprov-jdk15on-157.jar gss-2.2.0.jar gram-2.2.0.jar jsse-2.2.0.jar
 axisg-2.2.0.jar gridftp-2.2.0.jar myproxy-2.2.0.jar commons-io-2.4.jar
  commons-logging.jar commons-codec-1.7.jar commons-lang3-3.1.jar ssl-
 proxies-2.2.0.jar io-2.2.0.jar gss-2.2.0.jar gram-2.2.0.jar jsse-2.2.
 0.jar axisg-2.2.0.jar gridftp-2.2.0.jar myproxy-2.2.0.jar commons-io-
 2.4.jar commons-logging.jar commons-codec-1.7.jar commons-lang3-3.1.j
 ar ssl-proxies-2.2.0.jar BCGSS.jar ShiFT.jar SSHVnc.jar filedrop.jar 
 libbrowser.jar log4j-1.2.6.jar SSHTerm-1.0.0.jar jlirc-unix-soc.jar p
 utty-pk-1.1.0.jar SecureTunneling.jar bcprov-jdk16-146.jar j2ssh-core
 -0.2.7.jar ncsa-lcrypto-146.jar TransferAPIClient.jar j2ssh-common-0.
 2.7.jar swing-layout-1.0.3.jar voms-api-java-2.0.9.jar commons-compre
 ss-1.2.jar not-yet-commons-ssl-0.3.11.jar BCGSS.jar ShiFT.jar SSHVnc.
 jar filedrop.jar libbrowser.jar log4j-1.2.6.jar SSHTerm-1.0.0.jar jli
 rc-unix-soc.jar putty-pk-1.1.0.jar SecureTunneling.jar j2ssh-core-0.2
 .7.jar ncsa-lcrypto-146.jar TransferAPIClient.jar j2ssh-common-0.2.7.
 jar swing-layout-1.0.3.jar voms-api-java-2.0.9.jar commons-compress-1
 .2.jar not-yet-commons-ssl-0.3.11.jar io-2.2.0.jar gss-2.2.0.jar gram
 -2.2.0.jar jsse-2.2.0.jar axisg-2.2.0.jar gridftp-2.2.0.jar myproxy-2
 .2.0.jar commons-io-2.4.jar commons-logging.jar commons-codec-1.7.jar
  commons-lang3-3.1.jar ssl-proxies-2.2.0.jar bcprov-jdk15on-157.jar
Main-Class: lia.util.net.copy.FDTMain



================================================
FILE: README
================================================

FDT uses third-party libraries which are not distributed with this source code.

Please check the Security section on the FDT web page if you want to compile this source code:
http://monalisa.cern.ch/FDT/documentation_security.html

Simple examples for user filters can be found under:
src/lia/util/net/copy/filters/examples directory

For any features, suggestions or bug reports please contact: support-fdt@monalisa.cern.ch



================================================
FILE: README.md
================================================
FDT is an Application for Efficient Data Transfers which is capable of reading and writing at disk speed over wide area networks (with standard TCP). It is written in Java, runs an all major platforms and it is easy to use.

FDT is based on an asynchronous, flexible multithreaded system and is using the capabilities of the Java NIO libraries. Its main features are:

Streams a dataset (list of files) continuously, using a managed pool of buffers through one or more TCP sockets.
Uses independent threads to read and write on each physical device
Transfers data in parallel on multiple TCP streams, when necessary
Uses appropriate-sized buffers for disk I/O and for the network
Restores the files from buffers asynchronously
Resumes a file transfer session without loss, when needed
FDT can be used to stream a large set of files across the network, so that a large dataset composed of thousands of files can be sent or received at full speed, without the network transfer restarting between files.

[MORE...](https://fast-data-transfer.github.io/fdt/)

![alt tag](http://monalisa.cern.ch/FDT/img/FDT_diagram.png)


================================================
FILE: add-lib-to-local-maven.sh
================================================
#!/usr/bin/env bash
# Adding lib directory contents to a local maven repository then later we could use them in fdt building
# Maven should be installed already on machine (i.e. use sudo apt-get install maven)

#Globus dependencies
mvn install:install-file -Dfile="lib/globus/gss-2.2.0.jar" -DgroupId=org.globus.gsi.gssapi -DartifactId=gss -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/io-2.2.0.jar" -DgroupId=org.globus.io -DartifactId=io -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/jsse-2.2.0.jar" -DgroupId=org.globus.jsse -DartifactId=jsse -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/myproxy-2.2.0.jar" -DgroupId=org.globus.myproxy -DartifactId=myproxy -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/ssl-proxies-2.2.0.jar" -DgroupId=org.globus -DartifactId=ssl-proxies -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/gridftp-2.2.0.jar" -DgroupId=org.globus -DartifactId=gridftp -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/gram-2.2.0.jar" -DgroupId=org.globus -DartifactId=gram -Dversion=2.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/globus/axisg-2.2.0.jar" -DgroupId=org.globus -DartifactId=axisg -Dversion=2.2.0 -Dpackaging=jar
# END of Globus dependencies

#SSH Tools dependencies
mvn install:install-file -Dfile="lib/gsi-sshterm/TransferAPIClient.jar" -DgroupId=org.globusonline -DartifactId=TransferAPIClient -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/SSHVnc.jar" -DgroupId=com.sshtools.sshvnc -DartifactId=SSHVnc -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/SSHTerm-1.0.0.jar" -DgroupId=com.sshtools.sshterm -DartifactId=SSHTerm -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/ShiFT.jar" -DgroupId=com.sshtools.shift -DartifactId=ShiFT -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/putty-pk-1.1.0.jar" -DgroupId=com.sshtools.ext -DartifactId=putty-pk -Dversion=1.1.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/SecureTunneling.jar" -DgroupId=com.sshtools.tunnel -DartifactId=SecureTunneling -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/not-yet-commons-ssl-0.3.11.jar" -DgroupId=org.apache.commons -DartifactId=not-yet-commons-ssl -Dversion=0.3.11 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/ncsa-lcrypto-146.jar" -DgroupId=edu.illinois.ncsa -DartifactId=ncsa-lcrypto -Dversion=1.4.6 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/libbrowser.jar" -DgroupId=uk.ac.rl.esc.browser -DartifactId=libbrowser -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/jlirc-unix-soc.jar" -DgroupId=org.lirc.socket -DartifactId=jlirc-unix-soc -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/j2ssh-core-0.2.7.jar" -DgroupId=com.sshtools.core -DartifactId=j2ssh-core -Dversion=0.2.7 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/j2ssh-common-0.2.7.jar" -DgroupId=com.sshtools.common -DartifactId=j2ssh-common -Dversion=0.2.7 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/filedrop.jar" -DgroupId=net.iharder.dnd -DartifactId=filedrop -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/commons-compress-1.2.jar" -DgroupId=org.apache.commons -DartifactId=commons-compress -Dversion=1.2.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/bcprov-jdk15on-1.50.jar" -DgroupId=org.bouncycastle -DartifactId=bcprov -Dversion=1.50.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/BCGSS.jar" -DgroupId=edu.illinois.ncsa -DartifactId=BCGSS -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile="lib/gsi-sshterm/swing-layout-1.0.3.jar" -DgroupId=org.jdesktop -DartifactId=swing-layout -Dversion=1.0.3 -Dpackaging=jar
#mvn install:install-file -Dfile="bbbb" -DgroupId=aaaaa -DartifactId=BCGSS -Dversion=1.0.0 -Dpackaging=jar

mvn install:install-file -Dfile="lib/opentsdb/opentsdb-client-2.1.0.jar" -DgroupId=org.opentsdb -DartifactId=opentsdb-client -Dversion=2.1.0 -Dpackaging=jar

echo "FINISHED INSTALLING LOCAL DEPENDENCIES"

================================================
FILE: build-all.sh
================================================
#!/usr/bin/env bash

if command -v yum > /dev/null 2>&1; then
    OS="Centos"
    CMD=yum
elif command -v zypper > /dev/null 2>&1; then
    OS="OpenSuse"
    CMD=zypper
else
    OS="Debian"
    CMD=apt-get
fi
if command -v mvn > /dev/null 2>&1; then
    echo "Maven already installed "
    echo "Detected OS $OS, using command $CMD"
else
    echo "Maven will be installed "
    sudo $CMD install maven
fi
echo "Addling libraries to local maven repository"
./add-lib-to-local-maven.sh


mvn clean install



================================================
FILE: classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
	<classpathentry kind="lib" path="lib/globus/jgss.jar"/>
	<classpathentry kind="lib" path="lib/globus/cryptix.jar"/>
	<classpathentry kind="lib" path="lib/gsi-sshterm/SSHTerm-1.0.0.jar"/>
	<classpathentry kind="lib" path="lib/globus/puretls.jar"/>
	<classpathentry kind="lib" path="lib/globus/cog-jglobus.jar"/>
	<classpathentry kind="lib" path="lib/globus/log4j-1.2.13.jar"/>
	<classpathentry kind="lib" path="lib/globus/commons-logging-1.1.jar"/>
	<classpathentry kind="lib" path="lib/gsi-sshterm/j2ssh-common-0.2.7.jar"/>
	<classpathentry kind="lib" path="lib/gsi-sshterm/j2ssh-core-0.2.7.jar"/>
	<classpathentry kind="output" path="build/classes"/>
</classpath>


================================================
FILE: docs/_config.yml
================================================
title: Fast Data Transfer
description: FDT is an application for efficient data transfers, which is capable of reading and writing at disk speed over wide area networks (with standard TCP). It is written in Java, runs an all major platforms, and it is easy to use.
show_downloads: false
google_analytics:
  theme: jekyll-theme-cayman
  gems:
      - jekyll-menus


================================================
FILE: docs/doc-examples.md
================================================
[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[[FDT & DDCopy](doc-fdt-ddcopy.md)]   [Examples]   [[Security](doc-security.md)]    [[User's Extensions](doc-user-extensions.md)]    [[System Tuning](doc-system-tuning.md)]    [[FDT Monitoring](doc-opentsdb.md)]

### Examples

1. To send one file called `local.data` from the local system
directory to another computer
in the `/home/remoteuser/destiantionDir` folder, with default
parameters, there are two options:

- Client/Server mode

First, the FDT server needs to be started on the remote system. (The default settings will be used, which implies the default port, 54321, on both the client and the server). `-S` is used to disable the standalone mode, which means that the server will stop after the session will finish.

```
[remote computer]$ java -jar fdt.jar -S
```

Then, the client will be started on the local system specifying the sourcefile, the remote address (or hostname) where the server was started in the previous step and the destination directory
        
```
[local computer]$ java -jar fdt.jar -c <remote_address> -d /home/remoteuser/destinationDir /home/localuser/local.data
```

OR

```
[local computer]$ java -jar fdt.jar -c <remote_address> -d destinationDir ./local.data
```

- Secure Copy (SCP) mode

In this mode the server will be started on the remote system automatically by the local FDT client using SSH.

```
[local computer]$ java -jar fdt.jar /home/localuser/local.data remoteuser@<remote_address>:/home/remoteuser/destinationDir
```

OR

```
[local computer]$ java -jar fdt.jar ./local.data remoteuser@<remote_address>:destinationDir
```

If the `remoteuser` parameter is not specified, the local user, running the `fdt` command, will be used to login on the remote system.

2. To get the content of an entire folder and all its children,
located in the user's home directory, the `-r` ( recursive
mode ) flag will be specified and also `-pull` to sink the data from the
server. In the Client/Server mode the access to the server will be
restricted to the local IP addresses only ( with `-f` flag ).

- Client/Server mode

Multiple addresses may be specfied using the `-f` flag using `:`. If the client's IP address(es) is not specified in the allowed IP addresses, the connection will be closed. In the following command the server is started in standalone mode, which means that will continue to run after the session will finish. The transfer rate for every client sessions will be limited to 4 MBytes/s.

```
[remote computer]$ java -jar fdt.jar -f allowedIP1:allowedIP2 -limit 4M
```

OR

```
[remote computer]$ java -jar fdt.jar -f allowedIP1:allowedIP2 -limit 4096K
```

The command for the local client will be.

```
[local computer]$ java -jar fdt.jar -pull -r -c <remote_address> -d /home/localuser/localDir /home/remoteuser/remoteDir
```

OR

```
[local computer]$ java -jar fdt.jar -pull -r -c <remote_address> -d localDir remoteDir
```

- SCP mode

In this mode only the order of the parameters will be changed, and `-r` is the only argument that must be added (`-pull` is implicit). Same authentication policies apply as in the first example.

```
[local computer]$ java -jar fdt.jar -r  remoteuser@<remote_address>:/home/remoteuser/remoteDir /home/localuser/localDir
```

OR

```
[local computer]$ java -jar fdt.jar -r remoteuser@<remote_address>:remoteDir localDir
```

3. To test the network connectivity a transfer here is an example
which transfers data from `/dev/zero` to `/dev/null` using 10 streams in
blocking mode, for both the server and the client with 8 MBytes
buffers. The server will stop after the test is finished.

- Client/Server mode

```
[remote computer]$ java -jar fdt.jar -bio -bs 8M -f allowedIP -S
```

```
[local computer]$ java -jar fdt.jar -c <remote_address> -bio -P 10 -d /dev/null /dev/zero
```

- SCP mode

```
[local computer]$ java -jar fdt.jar -bio -P 10 /dev/zero remoteAddress:/dev/null
```

4. The user can also define a file, which contains list of files (a filename per line)
to be transfered. FDT will detect if the files are located on multiple
devices and will use a dedicated thread for each device.

```
[remote computer]$ java -jar fdt.jar -S
```

```
[local computer]$ java -jar fdt.jar -fl ./file_list.txt -c <remote_address> -d /home/remoteuser/destDir
```

5. To test the local read/write performance of the local disk the
DDCopy may be used.

- The following command will copy the entire partition
`/dev/dsk/c0d1p1` to `/dev/null` reporting every 2 seconds ( the default )
the I/O speed.

```
[local computer]$ java -cp fdt.jar lia.util.net.common.DDCopy if=/dev/dsk/c0d1p1 of=/dev/null
```

- To test the write speed of the file system using a 1GB file
read from `/dev/zero` the following command may be used. The operating
system will sync() the data to the disk. The data will be read/write
using 10MB buffers.

```
[local computer]$ java -cp fdt.jar lia.util.net.common.DDCopy if=/dev/zero of=/home/user/1GBTestFile bs=10M count=100 flags=NOSYNC
```

OR

```
[local computer]$ java -cp fdt.jar lia.util.net.common.DDCopy if=/dev/zero of=/home/user/1GBTestFile bs=1M bn=10 count=100 flags=NOSYNC
```

- Launching FDT as Agent example:

```
java -jar fdt.jar -tp <transfer,ports,separated,by,comma> -p <portNo> -agent
```

- Sending coordinator message to the agent:

```
java -jar fdt.jar -dIP <destination-ip> -dp <destination-port> -sIP <source-ip> -p <source-port> -d /tmp/destination/files -fl /tmp/file-list-on-source.txt -coord
```
- Retrieving session log file. 

To retrieve session log file user needs to provide at least these parameters:

```
java -jar fdt.jar  -c <source-host> -d /tmp/destination/files -sID <session-ID>
```

- To retrieve list of files on custom path there is a custom mode which can be used.

```
java -jar fdt.jar  -c <source-host> -ls /tmp/
```






================================================
FILE: docs/doc-fdt-ddcopy.md
================================================
[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[FDT & DDCopy]  [[Examples](doc-examples.md)]  [[Security](doc-security.md)]    [[User's Extensions](doc-user-extensions.md)]    [[System Tuning](doc-system-tuning.md)]    [[FDT Monitoring](doc-opentsdb.md)]

### FDT
**FDT** can be used in one of these seven modes:
* **Server**: java -jar fdt.jar [ OPTIONS ]
* **Client**: java -jar fdt.jar [ OPTIONS ] -c \<host> [file1 ...]|[-fl \<fileList>] -d \<destinationDirectory>
* **SCP**: java -jar fdt.jar [ OPTIONS ] [[[user@][host1:]]file1 [[[user@][host2:]]file2
* **Coordinator**: java -jar fdt.jar [OPTIONS] -dIP \<destination-ip> -dp \<destination-port> -sIP \<source-ip> -p \<source-port> -d \<destinationDirectory>  [-fl \<fileList>] -coord
* **List Files**: java -jar fdt.jar [OPTIONS] -c \<host> -ls \<ls-path>
* **Agent**: java -jar fdt.jar [OPTIONS] -c \<host>  -tp \<transfer,ports,separated,with,comma> -agent 
* **Session log**: java -jar fdt.jar [OPTIONS] -c \<host> -d \<destinationDirectory> -sID \<session-ID>

In Server mode the FDT will start listening for incoming client connections. The server may or may not stop after the last client finishes the transfer. In Client mode the client will connect to the specified host, where an FDT Server is expected to be running. The client can either read or write file from/to the server. 

In the SCP (Secure Copy) mode the local FDT instance will use SSH to start/stop the FDT server and/or client. The security is based on ssh credentials. The server started in this mode will accept connections **ONLY** from the "SCP" client. It is possible to restrict the access for the FDT Servers started from the command line using the `-f` option. The option accepts a list of IP addresses separated by `:`. 

In order to use third party copy feature with FDT there have to be two FDT launched in agent mode. In Agent mode the FDT will start listening for incoming client connections on. In Agent mode the client will listen for coordinator message with task. After receiving coordinator message Agent will try to send message to destination Agent requesting to open socket for transfer session. Destination Agent will take one transfer port from pool and open port for that session and then informs source Agent that transfer job can be started. At this pont first agent now has session ID and it sends it to the coordinator, that later coordinator could see that FDT session log file from remote Agent. After finishing task Agent will close transfer port and return it to the transfer ports pool.

To retrieve list of files on custom path there is a custom mode which can be used. User needs to specify host and port (if not default) and specify path from where he want to get list of files. It will not list files in directory where he has no access.

The OPTIONS currently supported may be server or client specific, or may be used in both modes.

**Common  options used for both server and client :**

**-gsi** enables GSI authentication scheme in FDT. When started in server mode the FDT will open two TCP ports: one for GSI authentication and the other one for data channels

**-gsip \<GSICtrlPort>** specifies the TCP port used for GSI authentication. Default value is 54320.

**-p \<portNo>** specifies the TCP port to be used (for the server it is the port used to listen on; for the client the port to connect to). The default port is 54321.

**-preFilters f1,...,fn** User defined preProcessing filters. The classes specified by the f1,...,fn paramenters must be in the classpath. The prePRocessing filters must be defined in the FDT "sender" command line. Please see the User's Filters section for more details and examples.

**-postFilters f1,...,fn** User defined postProcessing filters. The classes specified by the f1,...,fn paramenters must be in the classpath. The postPRocessing filters must be defined in the FDT "receiver" command line. Please see the User's Filters section for more details and examples.

**-bio** Blocking I/O mode. n this mode every channel (socket) will be configured to send/receive data synchronously and FDT will use one thread per channel. By default, non-blocking I/O will be used. On some platforms/systems the throughtput can be slightly higher in blocking I/O mode. The limitation in the blocking mode is the maximum number of threads that can be used and, for very high numbers of streams (thousands), the CPU used by the kernel for scheduling the threads. By default, FDT will use non-blocking mode.

**-iof \<iof>** Non-blocking I/O retry factor. In non-blocking mode every read/write operation which returns 0, will be repeated up to <iof> times before waiting for I/O readiness. By default this value is set to 1, which means that every network read/write operation will return in the select() (which can also be poll()/epoll()) if no more data can be processed by the underlying channel(socket). The default value should work fine on most of the systems, but values of 2 or 3, may increase the throughput on some systems. Values higher than 5 will only increase the CPU system usage, without any gain in performance. 

**-limit \<rate>** Restrict the transfer speed at the specified rate. K (KiloBytes/s), M (MegaBytes/s) or G (GigaBytes/s) may be used as suffixes. When this parameter is specified in the server it represents the maximum transfer rate for every FDT session. If the parameter is specified in both the server and the client, the minimum value between them will be used.

**-md5** Enables MD5 checksum for every file involved in the transfer. The flag may be specified for both client and server, but it will be used by the "sender" session only. When the transfer finishes the list will be sent to the "receiver" and it will be printed in a `md5sum`-like mode

**-printStats** Various statistics about buffer pools, sessions, etc will be printed

**-v** Verbose. Multiple 'v'-s (up to three) may be used to increment the verbosity level. Maximum level is three (-vvv) which corresponds to Level.FINEST for the standard Java logging system used by FDT.

**-u, -update** Update. If a newer version of fdt.jar is available on the update server it will update the local copy 

**Server options :**

**-S** disable the standalone mode; when specified the FDT Server will stop after the last client finishes. By default, the server will continue to listen for incoming clients. This option is automatically passed to the server started in "SCP" mode. 

**-bs \<buffSize>** Size for the I/O buffers. K (KiloBytes) or M (MegaBytes) may be used as suffixes. The default value is 512K. If the number of clients or sockets is expected to be very high is better to decrease this value. The memory used by this buffers is directly mapped in the operating system memory pages. The memory used by this buffers is limited by the JVM and can be increased passing -XX:MaxDirectMemorySize=<X>m (e.g -XX:MaxDirectMemorySize=256m) to the 'java' command

**-f \<allowedIPsList>** A list of IP addresses allowed to connect to the server. Multiple IPs may be specified, separated by ':'

**Client options :**

**-c \<host>** connect to the specified host. If this parameter is missing the FDT will become server

**-gsissh** used in the Secure Copy Mode to specify GSI authentication instead of normal SSH authentication scheme. The remote sshd servere must support GSI authentication. 

**-d \<dstDir>** The destination directory used to copy files. 

**-fl \<fileList>** a file which contains a list of files. Must have only one file per line. 

**-pull** Pull mode. The client will receive the data from the server. 

**-N** disable Nagle algorithm 

**-ss \<wsz>** Set the TCP SO_SND_BUFFER size. M and K may be used as suffixes for Kilo/Mega. 

**-P \<noOfStreams>** Number of paralel streams to use. Default is 4.

**Common options used for FDT Agent mode :**

Agent can use booth Server and Client options too, because at any time Agent can be Server or Client

**-p \<portNo>** specifies the TCP port to be used (for the server it is the port used to listen on; for the client the port to connect to). The default port is 54321.

**-tp \<transfer-ports>** specifies the TCP port lis to be used for transfer sessions. Ports are separated with comma.

**-agent** Option for FDT to run as agent.

**Common options used for FDT Coordinator mode :**

**-d \<dstDir>** The destination directory used to copy files. 

**-fl \<fileList>** a list of files. Must have only one file per line. 

**-dIP \<destination-ip>** destination Agent IP address.

**-sIP \<source-ip>** source Agent IP address.

**-dp \<destination-port>** destination agent message channel port.

**-p \<source-port>** source agent message channel port.

**-coord** Option for FDT to run as coordinator.

**Common options used for FDT List Files mode :**

**-c \<host>** connect to the specified host. If this parameter is missing the FDT will become server

**-ls \<ls-path>** path from where user wants to see lits of files

**Common options used for FDT Session log file retrieving mode :**

**-c \<host>** connect to the specified host. If this parameter is missing the FDT will become server

**-sID \<session-id>** session ID retrieved from coordinator.

**-d \<dstDir>** The destination directory used to copy session log file.

**Options used for FDT monitoring to OpenTSDB:**

**-opentsdb \<opentsdb-ip:port>** OpenTSDB server and port where FDT will send metrics

**-fdtTAG \<tag>** custom FDT metrics tag 

**-FDT_LISTEN \<IP>** listen only to specific IP address

	
### DDCopy
**DDCopy** is very similar to Unix `dd` command and can be used to test the local disks or file system. It is bundled in the fdt.jar and has the following syntax:

java -cp fdt.jar lia.util.net.common.DDCopy [ OPTIONS ] **if=\<sourceFile> of=\<destinationFile>**

where OPTIONS may be:

**bs=\<BufferSize>**     size of the buffer used for read/write. K or M (for KiloBytes/MegaBytes) may be used as suffixes. Default is 4K

**bn=\<NoOfBuffers>**     Number of buffers used to readv()/writev() at once. If this parameter is 1, or is missing DDCopy will read()/write() a single buffer at a time, otherwise the readv()/writev() will be used. Default is 1

**count=\<count>**        Number of "blocks" to write. A "block" is represents how much data is read/write. The size of a "block" is: <BufferSize>*<BuffersNumber>. If <count> <= 0 the copy stops when EOF is reached reading the <SourceFile>. The default is 0

**statsdelay=\<seconds>**  Number of seconds between intermediate reports. Default is 2 seconds. If <seconds> <= 0 no intermediate reports will be printed

**flags=\<flag>**          The <flag> field can have of the following values:
                          **SYNC**    For every write both data and metadata are written synchronously
                          **DSYNC**  Same as SYNC, but only the data is written synchronously.
                          **NOSYNC** The sync() is left to be done by the underlying OS
                         The default value is **DSYNC**

**rformat=\<rformat>**     Report format. Possible values are:
                            K - KiloBytes
                            M - MegaBytes
                            G - GigaBytes
                            T - TeraBytes
                            P - PetaBytes
                         The default value is self adjusted. If the factor is too big only 0s will be displayed.


================================================
FILE: docs/doc-opentsdb.md
================================================
[[Home](index.md)]   [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[[FDT & DDCopy](doc-fdt-ddcopy.md)]   [[Examples](doc-examples.md)]   [[Security](doc-security.md)]   [[User's Extensions](doc-user-extensions.md)]    [[System Tuning](doc-system-tuning.md)]    [ FDT Monitoring ]

### FDT Monitoring
FDT provides self monitoring possibility. FDT can send metrics to the OpenTSDB server and these metrics can be used to draw FDT dashboard using Grafana tool.

In order to start monitoring and sending metrics to OpenTSDB server user has to specify OpenTSDB server address and port number for FDT using commandline argument *-opentsdb*
Optional parameter is *-fdtTAG* which allows user to specify cistom tag for all metrics from that specific FDT.
If user is using proxy server then additional Java arguments has to be passed to provide proxy host and proxy port. 
At this moment no authentication is implemented for proxy and OpenTSDB.

#### Examples

*Monitor net test metrics to specified OpenTSDB server:*

SERVER2
```
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest
```
SERVER1
```
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2
```
*Monitor net test metrics to specified OpenTSDB server with specific tag:*
SERVER2
```
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -fdtTAG <tag>
```
SERVER1
```
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2 -fdtTAG <tag>
```
*Monitor net test metrics to specified OpenTSDB server and using http proxy server:*
SERVER2
```
java -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest
```
SERVER1
```
java -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2
```


================================================
FILE: docs/doc-security.md
================================================
[[Home](index.md)]   [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[[FDT & DDCopy](doc-fdt-ddcopy.md)]   [[Examples](doc-examples.md)]   [Security]   [[User's Extensions](doc-user-extensions.md)]    [[System Tuning](doc-system-tuning.md)]    [[FDT Monitoring](doc-opentsdb.md)]

### FDT Security
FDT provides several security schemes to allow sending and receiving files over public networks.
The FDT architecture allows to "plug-in" external security APIs and to use them for client authentication and authorization. The current version supports:

* SSH channels

* GSI-SSH [ NGS GSI-SSHTerm: http://www.grid-support.ac.uk/content/view/81/62/ ]

* Globus-GSI [CoG JGlobus: http://dev.globus.org/wiki/CoG_JGlobus_1.4 ]

`Please note that FDT distribution does not include these security packages. The user should download the libraries for preferred API from its source. See below the instructions to install different security libraries.`

There are four security modes that one can set when transferring files with FDT:
##### **1. Source IP address filtering**

In this mode the server activates a simple IP-based firewall where each source IP is checked against the list of allowed IPs. In this mode no user authentication is done.

By default FDT starts allowing clients from any destination.

To enable this mode, pass the "-f" option when starting FDT server:
-f <allowedIPsList> , where allowedIPsList: A list of IP addresses allowed to connect to the server. 
Multiple IP addresses may be separated by ':'.
You can use CIDR notation to specify an entire subnet.
    
`However, please note that this mode does not enable any privacy or confidentiality on client-server control channel and it may be subject to source IP spoofing.`

IP filtering can be used together with other authentication schemes.

##### **2. Using SSH channels to securely start remote FDT client/server**
This mode is enabled when you use "SCP syntax" to transfer files with FDT. In this mode the local client starts on-the-fly an instance of FDT server, using an SSH connection to pass the start-up command to the remote machine. It is required the server system runs a ssh demon and the user has a valid shell account. The FDT server will accept data connections from only this client and will exit when the transfer finishes.
When both the source and destination are remote (i.e. the client uses a third-party machine to initiate the transfer) a different SSH connection is made for the client and server in order to start them on the specified machines. (the remote hosts should already have running an OpenSSH compatible SSH server).
During the transfer, the control channels with the remote hosts are kept open and the status messages are streamed back to the user console.

Example:
Using local FDT client to transfer files to/from remote hosts:

```
fdt /path/to/file1 user@hostname:/path/to/file2
```

```
fdt user@hostname:/path/to/file1 /path/to/file2
```

3rd party transfers (start both FDT client and server remotely):

```
fdt user1@hostname1:/path/to/file1 user2@hostname2:/path/to/file2
```

##### **3. GSI-SSH mode**

In this mode the FDT client can use the local GRID security credentials (i.e. proxy certificate) to authenticate to a remote GSI-extended SSH server.

`N.B. In this case, the authentication and authorization is deferred to the GSI-OpenSSH server, which means that any user allowed to connect to this server is also allowed to start FDT client/server.`

The hosts involved in the transfer have to fulfil the following requirements:
* the remote hosts need to have installed a GSI-Enabled OpenSSH server;
This is usually distributed in the current major grid-middleware software : VDT,gLITE.
See http://grid.ncsa.uiuc.edu/ssh/ for more details on how this server can be manually installed and configured.
* the machine running the FDT client needs to have an Grid-UI interface loaded:
The proxy certificate used to authenticate to the remote GSI-SSH server is searched in the following order:
    1. in the path specified by the X509_USER_PROXY environment variable
    2. in the default /tmp/x509up_u<uid> location

* there are additional libraries that need to be appended to FDT client CLASSPATH:
1. Download FDT :

```
[~/fdt]> wget http://monalisa.cern.ch/FDT/lib/fdt.jar
```

2. Download gsi-sshterm libs:

```
[~/fdt]> wget http://www.grid-support.ac.uk/files/gsissh/GSI-SSHTerm-0.79.zip
[~/fdt]> unzip GSI-SSHTerm-0.79.zip
```

3. Set the CLASSPATH

```
[~/fdt]>export GSISSHLIBS=`find GSI-SSHTerm-0.79/lib/ -name "*.jar" -printf "$PWD/%p:"`
[~/fdt]>export CLASSPATH=$PWD/fdt.jar:$GSISSHLIBS
```

4. Set FDT command alias:

```
[~/fdt]> alias fdt="java lia.util.net.copy.FDT"
```

This mode is similar to the previous one in the way the remote FDT instances are started.
You have to pass **-gsissh** option to instruct FDT to use Grid credentials.

Example:
Using local FDT client to transfer files to/from remote hosts:

```
fdt -gssish /path/to/file1 user@hostname:/path/to/file2
fdt -gsissh user@hostname:/path/to/file1 /path/to/file2
```

3rd party transfers (start both FDT client and server remotely):

```
fdt -gsissh user1@host1:/path/to/file1 user2@host2:/path/to/file2
```

##### **4. GSI-enabled FDT server**

This mode offers a more flexible way to authenticate and authorize users in Grid environments. The control channel between FDT clients and FDT server is secured using Globus GSI API. Mutual authentication is performed between FDT clients and servers.
To explicitly set this mode you have to download the Globus JGlobus libraries (see below) , set the CLASSPATH variable accordingly and pass the -gsi parameter when starting the FDT clients and FDT server

**Server side:**
The FDT server have to be started using a pair of X509 public/private keys. The search path for these files is:
* X509_SERVICE_CERT and X509_SERVICE_KEY properties passed to the java virtual machine
* X509_HOST_CERT and X509_HOST_KEY environment variables
* /etc/grid-security/hostcert.pem and /etc/grid-security/hostkey.pem files

`Note:
It is highly recommended to start the FDT server using an unprivileged account. Usually the host certificates are read protected from unprivileged accounts. In this case you should consider running the FDT server with different service private/public key files.`

The clients connecting to the server are authenticated using the current environment setup on the server side: CAs certificates, CAs certificate revocation lists directory:
    **default location:** /etc/grid-security/certificates
    override with X509_CERT_DIR environment variable
By default, the authorization of users is based on grid-mapfile file available in the current Globus installation:
    **default** /etc/grid-security/grid-mapfile or 
   Override with GRIDMAP java property or environment variable
Other authorization modules may be plugged-in in the FDT server by specifying : -Dgsi.authz.Authorization=customAuthzPluginClass

**Client side:**

The machine running the FDT client needs to have an Grid-UI environment loaded:
The proxy certificate used to authenticate to the remote GSI-enabled FDT server is searched in the following paths:
in the path specified by the X509_USER_PROXY environment variable

in the default /tmp/x509up_u<uid> location

###### **4.1. Setup client and server environment**

1. Download Globus GSI (both client and server):

```
[~/fdt]> wget http://www-unix.globus.org/cog/distribution/1.4/cog-jglobus-1.4-bin.tar.gz
[~/fdt]> tar -xzvf cog-jglobus-1.4-bin.tar.gz
```

2. Setup CLASSPATH

```
[~/fdt]> export JGSILIBS=`find cog-jglobus-1.4/lib/ -name "*.jar" -printf "$PWD/%p:"`
[~/fdt]> export CLASSPATH=$PWD/fdt.jar:$JGSILIBS
```

###### **4.2. Start FDT server**

Start FDT server using /home/fdt/fdtcert.pem and/home/fdt/fdtkey.pem credentials:

```
[~/fdt]> java -DX509_SERVICE_KEY=/home/fdt/fdtkey.pem -DX509_SERVICE_CERT=/home/fdt/fdtcert.pem lia.util.net.copy.FDT -gsi [server_options]
```

The server is using the X509_CERT_DIR environment variable as CAs certificates and CRLs location and default /etc/grid-security/grid-mapfile file to authorize users.

###### **4.3. Start FDT client:**

```
[~/fdt]> java lia.util.net.copy.FDT -gsi [client_options]
```


================================================
FILE: docs/doc-system-tuning.md
================================================
[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[[FDT & DDCopy](doc-fdt-ddcopy.md)]   [[Examples](doc-examples.md)]  [[Security](doc-security.md)]    [[User's Extensions](doc-user-extensions.md)]   [System Tuning]    [[FDT Monitoring](doc-opentsdb.md)]


### System Settings
##### Linux

We suggest to use newer linux distributions, or if this is not possible, update at least the kernel(2.6.20+). The newer kernels provide adequate TCP settings. We suggest to use the following settings to improve the TCP throughput, especially over long RTT links:
1. Increase the TCP buffers (newer kernels have this buffers in creased by default). Add the following lines in /etc/sysctl.conf to make the changes permanent accross reboots:

```net.core.rmem_max = 8388608```

```net.core.wmem_max = 8388608```

```net.ipv4.tcp_rmem = 4096 87380 8388608```

```net.ipv4.tcp_wmem = 4096 65536 8388608```

```net.core.netdev_max_backlog = 250000```

```net.ipv4.tcp_no_metrics_save = 1```

```net.ipv4.tcp_moderate_rcvbuf = 1```

After adding them just run the following commabd as root:
    
```#sysctl -p /etc/sysctl.conf```

The settings above will set a maximum of 8 MBytes buffers.
we suggest to use at least 4Mbytes maximum TCP buffers and a maximum of 16Mbytes should be enough. You should use reasonable values. Don't set very high values for this parameters, and especially don't set the same value for all the fields in net.ipv4.tcp_*. It's also a good practice to have the same value for net.core.r(w)mem_max with the last value in the net.ipv4.tcp_r(w)mem. Do not modify the net.ipv4.tcp_mem parameter. It is computed by the kernel at the system boot.

2. The TCP congestion protocol (if available). To check if it is available for your kernel version:

```$/sbin/sysctl net.ipv4.tcp_congestion_control```

Set it to cubic if kernel version 2.6.20+, and to scalable if older kernels.

```#sysctl -w net.ipv4.tcp_congestion_control=cubic```

To make this persistent accross reboots add the following line in /etc/sysctl.conf

```net.ipv4.tcp_congestion_control=cubic```

You may try to experiment various TCP stacks. You can list all of them using:

```$/sbin/sysctl net.ipv4.tcp_available_congestion_control```

3. Increase txqueuelen size your ethernet card

```#ifconfig eth2 txqueuelen 50000```

4. If your network infrastructure supports jumbo frames you may set the MTU size to 9000. Please notice that this setting might broke your AFS installation (newer versions of OpenAFS supports jumbo frames)

```#ifconfig eth2 mtu 9000```

You may also try to disable the TCP timestamps. On some kernel versions this setting disables the automatic window scalling:

```#sysctl -w net.ipv4.tcp_timestamps=0```

To make this setting permanent add the following line in /etc/sysctl.conf:

```net.ipv4.tcp_timestamps=0```

##### OpenSolaris

We obtained good results on OpenSolaris using these setting for the TCP buffers:

```ndd -set /dev/tcp tcp_max_buf 8388608```

```ndd -set /dev/tcp tcp_cwnd_max 4194304```

```ndd -set /dev/tcp tcp_xmit_hiwat 524288```

```ndd -set /dev/tcp tcp_recv_hiwat 524288```

This page will include other settings or operating systems in the near future.

For further comments and suggestions please send an email to: support-fdt@monalisa.cern.ch


================================================
FILE: docs/doc-user-extensions.md
================================================
[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]

[[FDT & DDCopy](doc-fdt-ddcopy.md)]   [[Examples](doc-examples.md)]  [[Security](doc-security.md)]   [User's Extensions]    [[System Tuning](doc-system-tuning.md)]    [[FDT Monitoring](doc-opentsdb.md)]


### User's Extensions
FDT allows to load user defined classes for Pre and Post - Processing of file transfers.
This functionality can be used to easily interface FDT with mass storage systems and to implement any additional Access Control List (ACL) to the files transfered by FDT.

It can also be used for packing, compression or customized integrity check.

The user can define its own syntax for managing files on different MS systems and the implementation for the Pre/Post Processing interfaces allows the user to define the mechanism to perform local staging or to move the transfered files to a MS system after they are transfered by FDT.

The two procedures act as filters for the source and destination fields in the FDT syntax.

The list of files to be transfered, the destination directory and the GSI authentication are passed to the class implementing the PreProcessing interface. If the FDT is used without the GSI authentication the Subject will be a null parameter. Based on the user defined syntax, the implementation can initiate local staging for the files . This can be done in one or multiple threads. It can verify the credentials for the authenticated user to access the files. It can also be used to perform data compression on the files to be transfered.
In case the final destination for the files is a MS system on the remote site, the preProcessing implementation should change the destination with a temporary directory on the remote system. The naming scheme for it is used by the PostProcessing implementation to start moving the files to the MS system after the FDT transfer is done. The Post Processing implementation can also be used to verify the user's credentials to write into the MS system to uncompress data, or make an integrity check on the MS system. If the Pre/Post processing classes are used to interface FDT with a MS system, they should modify and act only on files using the user's defined syntax in the name. They should not modify the naming scheme for local files.

The preProcessing filters must implement **lia.util.net.copy.filters.Preprocessor** interface and the postProcessing filters must implement **lia.util.net.copy.filters.Postprocessor** interface. The functionality of these interfaces may be extended in the future.


**Preprocessor.java**
```
package lia.util.net.copy.filters;

import javax.security.auth.Subject;

public interface Preprocessor {
public void preProcessFileList(ProcessorInfo processorInfo, Subject peerSubject) throws Exception;
}
```

**Postprocessor.java**
```
package lia.util.net.copy.filters;

import javax.security.auth.Subject;

public interface Postprocessor {
public void postProcessFileList(ProcessorInfo processorInfo, Subject peerSubject) throws Exception;
}
```

**ProcessorInfo.java**
```
package lia.util.net.copy.filters;

public class ProcessorInfo {
public String[] fileList;
public String destinationDir;
    /**
     * @since 0.9.25
     */
    public InetAddress remoteAddress;
    /**
     * @since 0.9.25
     */
    public int remotePort;
    /**
     * @since 0.9.25
     */
    public boolean recursive;
    /**
     * Non-null on writer side <b>ONLY</b>.
     * Gives access to the transfer map of an FDT session.
     * Key - the final file name (including the destination directory) for a FileSession
     * Value - the FileSession
     *
     * @see FileSession
     * @since 0.10.0
     */
    public Map<string,> fileSessionMap;
}
```

### Example
We provide a simple example in using this functionality to help users in implementing customized filters.
In this example the pre/postProcessing classes are used to compress a list of files before sending and to decompress them at the destination.

To run the example please download the **FDTZipFilterExample.tar.gz** and follow these steps:

1) Untar the archive and go to FDTZipFilterExample directory. The directory already
contains the fdt.jar archive.

2) Go to FDTZipFilterExample directory and use compile.sh script ( javac must be in the $PATH)
to compile the filters.
```
$./compile.sh
```
3) To start the FDT server with PostZipFilter already enabled use the startFDTServer.sh script
```
$./startFDTServer.sh
```
4) To start FDT client and enable PreZipFilter the startFDTClient.sh may be used
```
$./startFDTClient.sh -c localhost -d /home/test dataToTransfer
```

The **dataToTransfer** file will be first zipped in **dataTransfer.zip** by the **PreZipFilter** and it's name will be changed in the ProcessorInfo and returned to the FDT client. Then the **dataToTransfer.zip** will be transfered to the destination where the **PostZipFilter** will uzip it and delete the zip file.
>


================================================
FILE: docs/index.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]  [[Performance Tests](perf-disk-to-disk.md)]

### Fast Data Transfer - FDT

FDT is an Application for Efficient Data Transfers which is capable of
reading and writing at disk speed over wide area networks (with standard TCP).
It is written in Java, runs an all major platforms and it is easy to use.

FDT is based on an asynchronous, flexible multithreaded system and is using
the capabilities of the Java NIO libraries. Its main features are:

* Streams a dataset (list of files) continuously, using a managed pool of buffers through one or more TCP sockets.
* Uses independent threads to read and write on each physical device
* Transfers data in parallel on multiple TCP streams, when necessary
* Uses appropriate-sized buffers for disk I/O and for the network
* Restores the files from buffers asynchronously
* Resumes a file transfer session without loss, when needed

FDT can be used to stream a large set of files across the network, so that
a large dataset composed of thousands of files can be sent or received at
full speed, without the network transfer restarting between files.

![Fast Data Transfer Diagram](img/FDT_diagram.png)


================================================
FILE: docs/monitoring-opentsdb.txt
================================================
Monitor net test metrics to specified OpenTSDB server:
#SERVER2
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest
#SERVER1
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2


Monitor net test metrics to specified OpenTSDB server with specific tag:
#SERVER2
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -fdtTAG <tag>
#SERVER1
java -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2 -fdtTAG <tag>


Monitor net test metrics to specified OpenTSDB server and using http proxy server:
#SERVER2
java -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest
#SERVER1
java -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest -c $SERVER2

================================================
FILE: docs/perf-disk-to-disk.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]

[Disk to Disk]   [[Memmory to Memmory](perf-memory-to-memory.md)]   [[SC06](perf-sc06.md)]   [[SC08](perf-sc08.md)]   [[SC09](perf-sc09.md)]

### FDT Disk To Disk I/O Performance over WAN
 

**1. Disk Servers with hardware RAID controllers**
This performance test was done using two disk servers between CERN and Caltech (RTT ~ 170 ms). Each system used a 10Gb/s network card (The system at Caltech has a Myricom card and the system at CERN has a Neterion card)
The connection between the two systems used the USLHCNET for the transatlantic part and Internet2 in US.

The disk servers used:
4U - 2 CPUs Dual Core Intel Woodcrest @ 3.00 GHz, 6 GB RAM, 2 ARECA RAID controllers and 24 SATA HDs.
The system at CERN runs Linux (Ubuntu 7.04) kernel 2.6.21.1
The system at Caltech run Linux (Centos 4.4) kernel 2.6.18
For both systems we used the default TCP congestion control (CUBIC)
MonALISA was used for all the monitoring.
The total transfer rate for data files from CERN to Caltech using the two disk controllers in parallel on both servers is shown in Figure 1.
Total network traffic for disk to disk transfer between CERN and Caltech using two RAID controllers per server

![Figure 1. Total network traffic for disk to disk transfer between CERN and Caltech using two RAID controllers per server.](img/figure1.png)

Figure 1. Total network traffic for disk to disk transfer between CERN and Caltech using two RAID controllers per server.

The total Disk IO on the receiving server (Caltech) is shown in Figure 2.

![Figure 2. Total disk IO for the receiving server (the writer). The mean value is ~ 545 MB/s.](img/figure2.png)

Figure 2. Total disk IO for the receiving server (the writer). The mean value is ~ 545 MB/s.

The CPU utilization for the receiving server (the writer) is presented in Figure 3. The CPU system is ~ 50% and the used for soft interrupts is ~ 15%.

![Figure 3. The CPU utilization for the receiving server](img/figure3.png)

Figure 3. The CPU utilization for the receiving server

**The mean disk to disk transfer rate between the two servers was 545MB/s, which means 1.96 TB per hour.**

If we used only one RAID controller in the data transfer on each server the total transfer rate in shown in Figure 4. In this case the mean total throughput is ~ 2.6 Gb/s or 325 MB/s.

![Figure 4. The total network throughput for a Disk to disk transfer between CERN - Caltech, when only 
one RAID controller was used on both servers](img/figure4.png)

Figure 4. The total network throughput for a Disk to disk transfer between CERN - Caltech, when only 
one RAID controller was used on both servers

##### 2. Simple Servers

This performance test was done using two 1U servers between CERN and MANLAN (New York) (RTT ~ 93 ms). Each system used a 10Gb/s network card (Netrion ) and we used the USLHCNET.

The server used:

2 CPUs Dual Core Intel Woodcrest @ 3.00 GHz, 4 GB RAM, 4 x 320 GB SATA HDs.

FDT was used to read and write on parallel on all four SATA HDs on both servers. The total disk IO for the sender server is presented in Figure 5.

![Figure 5. The total disk IO traffic for a data transfer between CERN and MANLAN using in parallel 4 SATA HDs on both servers.](img/figure5.png)

Figure 5. The total disk IO traffic for a data transfer between CERN and MANLAN using in parallel 4 SATA HDs on both servers.

The mean transfer rate was ~ 210MB/s or 0.75 TB per hour.


================================================
FILE: docs/perf-memory-to-memory.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]

[[Disk to Disk](perf-disk-to-disk.md)]   [Memmory to Memmory]   [[SC06](perf-sc06.md)]   [[SC08](perf-sc08.md)]   [[SC09](perf-sc09.md)]

### FDT Tests for Memory to Memory Transfers
##### Setup and Topology

These tests were done on USLHCNET network using the segment between CERN and New York (RTT 93ms).
The systems (Cx-NY and Cx-GVA, x=1,2) used for these tests are:
2 CPUs Dual Core Intel Xenon @ 3.00 GHz, 4 GB RAM, 4 x 320 GB SATA Disks
Connected with 10Gb/s Myricom cards in the routers at CERN and MANLAN. The topology is presented in Figure 1.
We used FDT version 0.5
We used 2.6.18 and 2.6.19 Linux kernels. For the TCP congestion control we used Scalable and Cubic. For both we get very similar results.

![Topology of the test environment in using the CERN - MANLAN link](img/figure1-m2m.png)

Figure 1. Topology of the test environment in using the CERN - MANLAN link

##### Transfers in one direction using a pair of servers
One pair (C1-NY and C1-GVA) was used to test the maximum throughput we can get from one system.
We used 2MB for the TCP buffer size and 35 streams.
The throughput in each direction was very stable at ~ 9.2 GB/s (Figure 2). The CPU utilization for the sender and receiver is shown in Figure 3.

![The throughput between C1-NY sender C1-GVA receiver. The TCP buffer size was set to 2MB and we used 35 steams. The RTT is 93ms.](img/figure2-m2m.png)

Figure 2. The throughput between C1-NY sender C1-GVA receiver. The TCP buffer size was set to 2MB and we used 35 steams. The RTT is 93ms.

 ![CPU utilization for the sender and receiver](img/figure3-m2m.png)
 
Figure 3. CPU utilization for the sender and receiver.

##### Transfers in both directions with a pair of servers

We used one pair (C1-NY and C1-GVA) to concurrently send and receive data on the same 10Gb/s interface. The throughput in each direction was ~ 6 Gb/s (Figure 4).
Perhaps the limitation is due to the PCI express bus access to the memory. Testing the throughput on a .localhost. is very close to the aggregated traffic obtained in this test.

 ![The throughput in both directions between C1-NY C1-GVA. The TCP buffer size was set to 2MB and we used 20 steams for each transfer. The RTT is 93ms](img/figure4-m2m.png)
 
Figure 4. The throughput in both directions between C1-NY C1-GVA. The TCP buffer size was set to 2MB and we used 20 steams for each transfer. The RTT is 93ms.

##### Transfers in both directions with two pairs of servers

One pair of servers (C1-NY and C1-GVA) was used to send data from MANLAN to CERN and the other one to send data from CERN to MANLAN. The measured traffic in the MANLAN router is shown in Figure 5. The total throughput in each direction was quite stable. The Traffic from CERN to MANLAN was ~ 9.2Gb/s and the traffic from MANLAN to CERN was ~ 9Gb/s.

 ![The throughput in both directions between two pairs of servers. The TCP buffer size was set to 2MB and we used 35 steams for each transfer. The RTT is 93ms](img/figure5-m2m.png)
 
Figure 5. The throughput in both directions between two pairs of servers. The TCP buffer size was set to 2MB and we used 35 steams for each transfer. The RTT is 93ms

##### Results for Memory to Memory transfers in LAN

The data transfer between the two systems at CERN (C1-GVA to C2-GVA) or MANLAN (C1-NY to C2-NY) runs very close to the theoretical limit of 10Gb/s (Figure 6 ) and is stable. We used 3 streams with 2MB TCP buffer size.

 ![The throughput in LAN between two servers](img/figure6-m2m.png)
 
Figure 6. The throughput in LAN between two servers.


================================================
FILE: docs/perf-sc06.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]

[[Disk to Disk](perf-disk-to-disk.md)]   [[Memmory to Memmory](perf-memory-to-memory.md)]   [SC06]   [[SC08](perf-sc08.md)]   [[SC09](perf-sc09.md)]

### Fast Data Transfers at SuperComputing 2006
FDT was used at the Supercomputing 2006, by the Caltech team for the Bandwidth Challenge.

Following the rules set for the SC06 Bandwidth Challenge, the team used a single 10-Gbps link that carried data in both directions. FDT provided sustained total throughput of ~17 Gbps for disk to disk transfer using 10 pairs of small servers (each having 4 SATA HD configured in software raid0 and 1Gb/s network interface) in both directions.

![SC06](img/SC06.png)


================================================
FILE: docs/perf-sc08.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]

[[Disk to Disk](perf-disk-to-disk.md)]   [[Memmory to Memmory](perf-memory-to-memory.md)]   [[SC06](perf-sc06.md)]   [SC08]   [[SC09](perf-sc09.md)]

### Fast Data Transfers at SuperComputing 2008
The record-setting demonstration was made possible through the use of twelve 10 Gbps links to SC08 provided by SCInet, CENIC, National Lambda Rail, Pacific Wave and Internet2, together with two fully populated Cisco 6509E switches, 10 gigabit Ethernet network interfaces provided by Myricom and Intel, two fiber channel S2A9900 storage platforms provided Data Direct Networks equipped with 8 Gbps host bus adapters from QLogic along with five X4500 and X4540 disk servers from Sun Microsystems. The server equipment consisted of 32 twin motherboards Supermicro systems using dual quad-core Intel Xeon processors.

![FDT @ SC08 Image](img/results08_1.jpg)

### 100G test with Ciena

Second major milestone was achieved by the HEP team working together with Ciena, who had just completed its first OTU-4 (112 Gbps) standard link carrying a 100 Gbps payload (or 200 Gbps bidirectional) with forward error correction. The Caltech and Ciena teams used an optical fiber cable with ten fiber-pairs linking their neighboring booths, Ciena’s system to multiplex and demultiplex ten 10 Gbps links onto the single OTU-4 wavelength running on an 80 km fiber loop, and some of Caltech’s nodes used in setting the wide area network records together with FDT, to achieve full throughput over the new link. Thanks to FDT’s high throughput capabilities, and the error free links between the booths, the teams were able to achieve a maximum of 199.90 Gbps bi-directionally (memory-to-memory) within minutes of the start of the test, and an average of 191 Gbps during a 12 hour period that logged the transmission of 1.02 Petabytes overnight. 

![FDT @ SC08 Image](img/ciena_sc08_1.jpg)


================================================
FILE: docs/perf-sc09.md
================================================
[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]

[[Disk to Disk](perf-disk-to-disk.md)]   [[Memmory to Memmory](perf-memory-to-memory.md)]   [[SC06](perf-sc06.md)]   [[SC08](perf-sc08.md)]   [SC09]

### Fast Data Transfers at SuperComputing 2009
The focus of the exhibit was the HEP team's record-breaking demonstration of storage-to-storage data transfer using FDT, over wide area networks from two racks of servers and a network switch-router on the exhibit floor. The high-energy physics team's demonstration "Moving Towards Terabit/sec Transfers of Scientific Datasets: The LHC Challenge" achieved a bi-directional peak throughput of 119 gigabits per second (Gbps) and a data flow of more than 110 Gbps that could be sustained indefinitely among clusters of servers on the show floor and at Caltech, Michigan, San Diego, Florida, Fermilab, Brookhaven, CERN, Brazil, Korea, and Estonia. FDT was used at the Supercomputing 2006, by the Caltech team for the Bandwidth Challenge.

![FDT @ SC09 Image](img/results09_2.jpg)


================================================
FILE: lgtm.yml
================================================
extraction:
  java:
    index:
      build_command:
      - ./build-all.sh


================================================
FILE: lib/globus/bouncycastle.LICENSE
================================================
Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) 

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions: 

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software. 

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 


================================================
FILE: lib/globus/commons-logging.LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: lib/globus/cryptix.LICENSE
================================================
Cryptix General Licence

Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 
The Cryptix Foundation Limited. All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions 
are met:

1. Redistributions of source code must retain the copyright notice, 
   this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright 
   notice, this list of conditions and the following disclaimer in 
   the documentation and/or other materials provided with the 
   distribution.

THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED ``AS IS'' 
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: lib/globus/junit.LICENSE
================================================
Common Public License Version 0.5 

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 


1. DEFINITIONS 

"Contribution" means: 

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and 
b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A
Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on
such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of
software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works
of the Program.

"Contributor" means any person or entity that distributes the Program. 


"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
its Contribution alone or when combined with the Program. 


"Program" means the Contributions distributed in accordance with this Agreement. 


"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. 


2. GRANT OF RIGHTS 

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
form.
b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition
of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to
any other combinations which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses
granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights
needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it
is Recipient's responsibility to acquire that license before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
grant the copyright license set forth in this Agreement. 
3. REQUIREMENTS 

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: 

a) it complies with the terms and conditions of this Agreement; and
b) its license agreement:
i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness
for a particular purpose; 
ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
incidental and consequential damages, such as lost profits; 
iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other
party; and
iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a
reasonable manner on or through a medium customarily used for software exchange.
When the Program is made available in source code form: 

a) it must be made available under this Agreement; and 
b) a copy of this Agreement must be included with each copy of the Program. 

Contributors may not remove or alter any copyright notices contained within the Program. 



Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
subsequent Recipients to identify the originator of the Contribution. 


4. COMMERCIAL DISTRIBUTION 

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the
Program in a commercial product offering should do so in a manner which does not create potential liability for other
Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified
Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal
actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations
in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property
infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in
writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor
in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at
its own expense. 


For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then
a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to
Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this
section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance
claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial
Contributor must pay those damages. 


5. NO WARRANTY 

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights
under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws,
damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 


6. DISCLAIMER OF LIABILITY 

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 


7. GENERAL 

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. 


If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including
a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under
this Agreement shall terminate as of the date such litigation is filed. In addition, If Recipient institutes patent
litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself
(excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such
Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. 


All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of
the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
granted by Recipient relating to the Program shall continue and survive. 


Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is
copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new
versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right
to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement
Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The
Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was
received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program
(including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by
implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. 


This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of
America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of
action arose. Each party waives its rights to a jury trial in any resulting litigation. 




================================================
FILE: lib/globus/log4j.LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 1999-2005 The Apache Software Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: lib/globus/puretls.LICENSE
================================================
  This package is a SSLv3/TLS implementation written by Eric Rescorla
   <ekr\@rtfm.com> and licensed by Claymore Systems, Inc.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
   are met:
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
   2. Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
   3. Neither the name of Claymore Systems, Inc. nor the name of Eric
      Rescorla may be used to endorse or promote products derived from this
      software without specific prior written permission.

   THIS SOFTWARE IS PROVIDED BY CLAYMORE SYSTEMS AND CONTRIBUTORS ``AS IS'' AND
   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   SUCH DAMAGE.



================================================
FILE: lib/globus/version.txt
================================================
PureTLS (custom): 0.9b4
JUnit version: 3.8.1

Tested with:
 - JNDI: 1.2.1
 - LDAP provider: 1.2.3
 - JAAS 1.0_01


================================================
FILE: open_direct.c
================================================
/*
 * LD_PRELOAD shim to force files to be opened with the O_DIRECT flag,
 * avoiding cache thrashing and allowing for 0-copy reads/writes.
 *
 * Will compare all open() file names to the prefix FDT_DIRECT_PATH,
 * and if it matches it will add O_DIRECT to the flags passes to
 * the real open64() call.
 *
 * Note that this is a simple string comparison, so things like relative
 * paths or ../s will make things not match.
 * ex:
 *     export FDT_DIRECT_PATH=/home/user/fdt-data
 *     open("fdt-data/file1") <= Will not match, no exact strcmp()
 *     open("/home/user/fdt-data/file1") <= Will set O_DIRECT
 *     open("/home/user/fdt-data/dir1/file2") <= Also matches
 *     open("/home/user/fdt-data/../otherfile") <= Will match, but
 *                  you probably didn't intend it to.
 * Because of this, it is recommended to only use fully qualified paths
 * in directories or files passed into fdt.
 *
 * Licensed under the Apache License 2.0, included with this repo.
 * Earle F. Philhower, III  <earlephilhower@yahoo.com>
 */

/*
 * Compile with:
 *    gcc -shared -fPIC open_direct.c -o open_direct.so -ldl
 * Run FDT:
 *    FDT_DIRECT_PATH=/mnt LD_PRELOAD=./open_direct.so java -jar fdt.jar ..
 */


#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

// Match the open64() API
typedef int (*open64_type)(const char *path, int f);

// LD_PRELOAD will cause java open64() calls to use this instead of the system
// version of open64().
int open64(const char *file, int flags, ...)
{
    static const char *directdir = NULL;
    static int directdirlen = 0;
    static int skip = 0;
    static open64_type real_open64 = NULL;

    // First pass through, get the settings and real open64 address
    if (!directdir && !skip) {
        real_open64 = (open64_type)dlsym(RTLD_NEXT,"open64");
        directdir = getenv("FDT_DIRECT_PATH");
        if (!directdir) {
            skip = 1; // No mask defined, don't do anything...
        } else {
            // Cache the length to avoid calling strlen on every open
            directdirlen = strlen(directdir);
        }
    }

    // Now handle the logic of the call.  Rely on C early expression termination
    if (!skip && !strncmp(directdir, file, directdirlen)) {
        flags |= O_DIRECT;
        fprintf(stderr, "DIRECT opening: '%s'\n", file);
    } else {
        fprintf(stderr, "Normal opening: '%s'\n", file);
    }
    return real_open64(file, flags);
}


================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>fast-data-transfer</groupId>
	<artifactId>fdt</artifactId>
	<version>0.27.0-SNAPSHOT</version>
	<description>Fast data transfer</description>
	<packaging>jar</packaging>

	<properties>
		<jdk.version>1.8</jdk.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>edu.illinois.ncsa</groupId>
			<artifactId>BCGSS</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcprov</artifactId>
			<version>1.50.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<version>1.26.0</version>
		</dependency>
		<dependency>
			<groupId>com.github.oshi</groupId>
			<artifactId>oshi-core</artifactId>
			<version>6.4.2</version>
		</dependency>
		<dependency>
			<groupId>net.iharder.dnd</groupId>
			<artifactId>filedrop</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.common</groupId>
			<artifactId>j2ssh-common</artifactId>
			<version>0.2.7</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.core</groupId>
			<artifactId>j2ssh-core</artifactId>
			<version>0.2.7</version>
		</dependency>
		<dependency>
			<groupId>org.lirc.socket</groupId>
			<artifactId>jlirc-unix-soc</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>uk.ac.rl.esc.browser</groupId>
			<artifactId>libbrowser</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.17.2</version>
		</dependency>
		<dependency>
			<groupId>edu.illinois.ncsa</groupId>
			<artifactId>ncsa-lcrypto</artifactId>
			<version>1.4.6</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>not-yet-commons-ssl</artifactId>
			<version>0.3.11</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.ext</groupId>
			<artifactId>putty-pk</artifactId>
			<version>1.1.0</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.tunnel</groupId>
			<artifactId>SecureTunneling</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.shift</groupId>
			<artifactId>ShiFT</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.sshterm</groupId>
			<artifactId>SSHTerm</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>com.sshtools.sshvnc</groupId>
			<artifactId>SSHVnc</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.jdesktop</groupId>
			<artifactId>swing-layout</artifactId>
			<version>1.0.3</version>
		</dependency>
		<dependency>
			<groupId>org.globusonline</groupId>
			<artifactId>TransferAPIClient</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.italiangrid</groupId>
			<artifactId>voms-api-java</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.globus</groupId>
			<artifactId>axisg</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20231013</version>
		</dependency>
		<dependency>
			<groupId>org.globus</groupId>
			<artifactId>gram</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.globus</groupId>
			<artifactId>gridftp</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.globus.gsi.gssapi</groupId>
			<artifactId>gss</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.globus.io</groupId>
			<artifactId>io</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.13</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.9</version>
		</dependency>
		<dependency>
			<groupId>org.globus.jsse</groupId>
			<artifactId>jsse</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>r05</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
		<dependency>
			<groupId>org.globus.myproxy</groupId>
			<artifactId>myproxy</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.globus</groupId>
			<artifactId>ssl-proxies</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.opentsdb</groupId>
			<artifactId>opentsdb-client</artifactId>
			<version>2.1.0</version>
		</dependency>
	</dependencies>
	<build>
		<sourceDirectory>src</sourceDirectory>
		<resources>
			<resource>
				<directory>src</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>false</downloadJavadocs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>${jdk.version}</source>
					<target>${jdk.version}</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.1.2</version>
				<configuration>
					<!-- DO NOT include log4j.properties file in your Jar -->
					<excludes>
						<exclude>**/log4j.properties</exclude>
					</excludes>
					<archive>
						<manifest>
							<!-- Jar file entry point -->
							<mainClass>lia.util.net.copy.FDTMain</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>lia.util.net.copy.FDTMain</mainClass>
						</manifest>
					</archive>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<finalName>${project.artifactId}-${project.version}</finalName>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.8</version>
				<executions>
					<execution>
						<phase>package</phase>
						<configuration>
							<target>
								<copy
									file="${project.build.directory}/${project.artifactId}-${project.version}-jar-with-dependencies.jar"
									tofile="${project.build.directory}/fdt.jar" />
								<echo file="${project.build.directory}/fdt" append="false">java -jar fdt.jar "$@"</echo>
								<chmod file="${project.build.directory}/fdt" perm="ugo+rx" />
							</target>
							<filemode>755</filemode>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
	


================================================
FILE: src/apmon/ApMon.java
================================================
/*
 * ApMon - Application Monitoring Tool
 * Version: 2.2.7
 *
 * Copyright (C) 2006 - 2010 California Institute of Technology
 *
 * Permission is hereby granted, free of charge, to use, copy and modify 
 * this software and its documentation (the "Software") for any
 * purpose, provided that existing copyright notices are retained in 
 * all copies and that this notice is included verbatim in any distributions
 * or substantial portions of the Software. 
 * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu).
 * Users of the Software are asked to feed back problems, benefits,
 * and/or suggestions about the software to the MonALISA Development Team
 * (developers@monalisa.cern.ch). Support for this software - fixing of bugs,
 * incorporation of new features - is done on a best effort basis. All bug
 * fixes and enhancements will be made available under the same terms and
 * conditions as the original software,
 
 * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
 * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS
 * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
 * MODIFICATIONS.
 */

package apmon;

import apmon.host.cmdExec;
import lia.util.net.common.Config;
import lia.util.net.common.MonitoringUtils;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.logging.*;

/**
 * Data structure used for sending monitoring data to a MonaLisa module.
 * The data is packed in UDP datagrams, in XDR format.
 * A datagram has the following structure:
 * - header which contains the ApMon version and the password for the MonALISA
 * host and has the following syntax: v:<ApMon_version>p:<password>
 * - cluster name (string)
 * - node name (string)
 * - number of parameters (int)
 * - for each parameter: name (string), value type (int), value
 * <BR>
 * There are two ways to send parameters:
 * 1) a single parameter in a packet (with the function sendParameter() which
 * has several overloaded variants
 * 2) multiple parameters in a packet (with the function sendParameters())
 * <BR>
 * ApMon can be configured to send periodically datagrams with monitoring information
 * concerning the current application or the whole system. Some of the monitoring
 * information is only available on Linux systems.
 */

public class ApMon {

    public static final int MAX_DGRAM_SIZE = 8192;
    /**
     * < Maximum UDP datagram size.
     */
    public static final int XDR_STRING = 0;
    /**
     * < Used to code the string data type
     */
    public static final int XDR_INT32 = 2;
    /**
     * < Used to code the 4 bytes integer data type
     */
    public static final int XDR_REAL32 = 4;
    /**
     * < Used to code the 4 bytes real data type
     */
    public static final int XDR_REAL64 = 5;
    /**
     * < Used to code the 8 bytes real data type
     */
    public static final int DEFAULT_PORT = 8884;
    /**
     * Time interval (in sec) at which job monitoring datagrams are sent.
     */
    public static final int JOB_MONITOR_INTERVAL = 20;

    /** < The default port on which MonALISA listens */
    /**
     * Time interval (in sec) at which system monitoring datagams are sent.
     */
    public static final int SYS_MONITOR_INTERVAL = 20;
    /**
     * Time interval (in sec) at which the configuration files are checked for changes.
     */
    public static final int RECHECK_INTERVAL = 600;
    /**
     * The maxim number of mesages that will be sent to MonALISA
     */
    public static final int MAX_MSG_RATE = 20;
    /**
     * The number of time intervals at which ApMon sends general system monitoring information (considering the time
     * intervals at which ApMon sends system monitoring information).
     */
    public static final int GEN_MONITOR_INTERVALS = 100;
    static final String APMON_VERSION = "2.2.7";
    /**
     * Constant that indicates this object was initialized from a file.
     */
    static final int FILE_INIT = 1;

    /**
     * Constant that indicates this object was initialized from a list.
     */
    static final int LIST_INIT = 2;

    /**
     * Constant that indicates this object was initialized directly.
     */
    static final int DIRECT_INIT = 3;
    static String osName = System.getProperty("os.name");
    private static Logger logger = Logger.getLogger("apmon");
    /**
     * Java type -> XDR Type mapping
     **/
    private static Map mValueTypes = new HashMap();

    static {

        try {
            LogManager logManager = LogManager.getLogManager();

            //check if LogManager is already defined
            if (logManager.getProperty("handlers") == null) {
                try {
                    FileHandler fh = null;
                    try {
                        fh = new FileHandler("apmon.log");
                        fh.setFormatter(new SimpleFormatter());
                    } catch (Throwable t) {
                        t.printStackTrace();
                    }

                    logger.setUseParentHandlers(false);
                    logger.addHandler(fh);
                    logger.setLevel(Level.INFO);
                } catch (Throwable t) {
                    System.err.println("[ ApMon ] [ static init ] [ logging ] Unable to load default logger props. Cause:");
                    t.printStackTrace();
                }
            } else {
                if (logger.isLoggable(Level.FINE)) {
                    logger.log(Level.FINE, "[ ApMon ] [ static init ] [ logging ] uses predefined logging properties");
                }
            }

        } catch (Throwable t) {
            System.err.println("[ ApMon ] [ static init ] [ logging ] Unable to check/load default logger props. Cause:");
            t.printStackTrace();
        }

        mValueTypes.put(String.class.getName(), new Integer(XDR_STRING));
        mValueTypes.put(Short.class.getName(), new Integer(XDR_INT32));
        mValueTypes.put(Integer.class.getName(), new Integer(XDR_INT32));
        mValueTypes.put(Float.class.getName(), new Integer(XDR_REAL64));
        mValueTypes.put(Double.class.getName(), new Integer(XDR_REAL64));

    }

    /**
     * don't allow a user to send more than MAX_MSG messages per second, in average
     */
    protected long prvTime = 0;
    protected double prvSent = 0;
    protected double prvDrop = 0;
    protected long crtTime = 0;
    protected long crtSent = 0;
    protected long crtDrop = 0;
    protected double hWeight = Math.exp(-5.0 / 60.0);

    /** < The size of the data inside the datagram */
    /**
     * The initialization source (can be a file or a list).
     */
    Object initSource = null;
    /**
     * The initialization type (from file / list / directly).
     */
    int initType;
    /**
     * The configuration file and the URLs are checked for changes at this numer of seconds (if the network connections
     * are good).
     */
    long recheckInterval = RECHECK_INTERVAL;
    /**
     * If the configuraion URLs cannot be reloaded, the interval until the next attempt will be increased. This is the
     * actual value of the interval that is used by ApMon
     */
    long crtRecheckInterval = RECHECK_INTERVAL;
    String clusterName;
    /**
     * < The name of the monitored cluster.
     */
    String nodeName;
    /**
     * < The name of the monitored node.
     */

    Vector destAddresses;
    /**
     * < The IP addresses where the results will be sent.
     */
    Vector destPorts;
    /**
     * < The ports where the destination hosts listen.
     */
    Vector destPasswds;
    /**
     * < The Passwdords used for the destination hosts.
     */

    byte[] buf;
    /**
     * < The buffer which holds the message data (encoded in XDR).
     */
    int dgramSize;
    /**
     * Hashtable which holds theinitialization resources (Files, URLs) that must be periodically checked for changes,
     * and their latest modification times
     */
    Hashtable confResources;
    ByteArrayOutputStream baos;
    DatagramSocket dgramSocket;
    /**
     * The background thread which performs operations like checking the configuration file/URLs for changes and sending
     * datagrams with monitoring information.
     */
    BkThread bkThread = null;
    /**
     * Is true if the background thread was started.
     */
    boolean bkThreadStarted = false;
    /**
     * Protects the variables that hold the settings for the background thread.
     */
    Object mutexBack = new Object();
    /**
     * Used for the wait/notify mechanism in the background thread.
     */
    Object mutexCond = new Object();
    /**
     * Indicates if any of the settings for the background thread was changed.
     */
    boolean condChanged = false;
    /**
     * These flags indicate changes in the monitoring configuration.
     */
    boolean recheckChanged, jobMonChanged, sysMonChanged;
    /**
     * If this flag is set to true, when the value of a parameter cannot be read from proc/, ApMon will not attempt to
     * include that value in the next datagrams.
     */
    boolean autoDisableMonitoring = true;
    /**
     * If this flag is true, the configuration file / URLs are periodically rechecked for changes.
     */
    boolean confCheck = false;
    /**
     * If this flag is true, packets with system information taken from /proc are periodically sent to MonALISA
     */
    boolean sysMonitoring = false;

    // long appPID;
    /**
     * If this flag is true, packets with job information taken from /proc are periodically sent to MonALISA
     */
    boolean jobMonitoring = false;
    /**
     * If this flag is true, packets with general system information taken from /proc are periodically sent to MonALISA
     */
    boolean genMonitoring = false;
    /**
     * Job/System monitoring information obtained from /proc is sent at these time intervals
     */
    long jobMonitorInterval = JOB_MONITOR_INTERVAL;
    long sysMonitorInterval = SYS_MONITOR_INTERVAL;
    int maxMsgRate = MAX_MSG_RATE;
    /**
     * General system monitoring information is sent at a time interval equal to genMonitorIntervals *
     * sysMonitorInterval.
     */
    int genMonitorIntervals = GEN_MONITOR_INTERVALS;
    /**
     * Hashtables that associate the names of the parameters included in the monitoring datagrams and flags that
     * indicate whether they are active or not.
     */
    long sysMonitorParams, jobMonitorParams, genMonitorParams;
    /**
     * The time when the last datagram with job monitoring information was sent (in milliseconds since the Epoch).
     */
    long lastJobInfoSend;
    /**
     * The time when the last datagram with job monitoring information was sent (in milliseconds since the Epoch).
     */
    long lastSysInfoSend;
    /**
     * The last value for "utime" for the current process that was read from proc/ (only on Linux).
     */
    double lastUtime;
    /**
     * The last value for "stime" for the current process that was read from proc/ (only on Linux).
     */
    double lastStime;
    /**
     * The name of the host on which ApMon currently runs.
     */
    String myHostname = null;
    /**
     * The IP address of the host on which ApMon currently runs.
     */
    String myIP = null;
    /**
     * The number of CPUs on the machine that runs ApMon.
     */
    int numCPUs;
    /**
     * The names of the network interfaces on this machine.
     */
    Vector netInterfaces = new Vector();
    /**
     * The IPs of this machine.
     */
    Vector allMyIPs = new Vector();
    /**
     * the cluster name that will be included in the monitoring datagrams
     */
    String sysClusterName = "ApMon_userSend";
    /**
     * the node name that will be included in the monitoring datagrams
     */
    String sysNodeName = null;
    Vector monJobs = new Vector();
    Hashtable sender = new Hashtable();

    /**
     * Initializes an ApMon object from a configuration file.
     *
     * @param filename The name of the file which contains the addresses and the ports of the destination hosts (see README
     *                 for details about the structure of this file).
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    public ApMon(String filename) throws ApMonException, SocketException, IOException {

        initType = FILE_INIT;
        initMonitoring();
        initSource = filename;
        initialize(filename, true);
        initSenderRef();
    }

    /**
     * Initializes an ApMon object from a list with URLs.
     *
     * @param destList The list with URLs. the ports of the destination hosts (see README for details about the structure of
     *                   this file).
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    public ApMon(Vector destList) throws ApMonException, SocketException, IOException {
        initType = LIST_INIT;
        initMonitoring();
        initSource = destList;
        initialize(destList, true);
        initSenderRef();
    }

    /**
     * Initializes an ApMon data structure, using arrays instead of a file.
     *
     * @param destAddresses Array that contains the hostnames or IP addresses of the destination hosts.
     * @param destPorts     The ports where the MonaLisa modules listen on the destination hosts.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    public ApMon(Vector destAddresses, Vector destPorts) throws ApMonException, SocketException, IOException {
        this.initType = DIRECT_INIT;
        arrayInit(destAddresses, destPorts, null);
        initSenderRef();
    }

    /**
     * Initializes an ApMon data structure, using arrays instead of a file.
     *
     * @param destAddresses Array that contains the hostnames or IP addresses of the destination hosts.
     * @param destPorts     The ports where the MonaLisa modules listen on the destination hosts.
     * @param destPasswds   The passwords for the destination hosts.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    public ApMon(Vector destAddresses, Vector destPorts, Vector destPasswds) throws ApMonException, SocketException, IOException {
        this.initType = DIRECT_INIT;
        initMonitoring();
        arrayInit(destAddresses, destPorts, destPasswds);
        initSenderRef();
    }

    /**
     * Sets the ApMon loglevel. The possible values are: "FATAL", "WARNING", "INFO", "FINE", "DEBUG".
     */
    public static void setLogLevel(String newLevel_s) {
        int i;
        String levels_s[] = {
                "FATAL", "WARNING", "INFO", "FINE", "DEBUG"
        };
        Level levels[] = {
                Level.SEVERE, Level.WARNING, Level.INFO, Level.FINE, Level.FINEST
        };

        for (i = 0; i < 5; i++)
            if (newLevel_s.equals(levels_s[i]))
                break;

        if (i >= 5) {
            logger.warning("[ setLogLevel() ] Invalid level value: " + newLevel_s);
            return;
        }

        logger.info("Setting logging level to " + newLevel_s);
        logger.setLevel(levels[i]);
    }

    // * Supported in Sun JRE >1.5 (returns -1 in prior versions)
    public static int getPID() {
        try {
            final java.lang.management.RuntimeMXBean rt = java.lang.management.ManagementFactory.getRuntimeMXBean();
            return Integer.parseInt(rt.getName().split("@")[0]);
        } catch (Throwable t) {
            return -1;
        }
    }

    /**
     * Add a job pid to monitorized jobs vector
     */
    public void addJobToMonitor(int pid, String workDir, String clusterName, String nodeName) {
        MonitoredJob job = new MonitoredJob(pid, workDir, clusterName, nodeName);
        if (!monJobs.contains(job))
            monJobs.add(job);
        else if (logger.isLoggable(Level.WARNING))
            logger.warning("Job <" + job + "> already exsist.");
    }

    /**
     * Remove a pid form monitorized jobs vector
     */
    public void removeJobToMonitor(int pid) {
        int i;
        for (i = 0; i < monJobs.size(); i++) {
            MonitoredJob job = (MonitoredJob) monJobs.elementAt(i);
            if (job.getPid() == pid) {
                monJobs.remove(job);
                break;
            }
        }
    }

    /**
     * This is used to set the cluster and node name for the system-related monitored data.
     */
    public void setMonitorClusterNode(String cName, String nName) {
        if (cName != null)
            sysClusterName = cName;
        if (nName != null)
            sysNodeName = nName;
    }

    /**
     * Initializes an ApMon object from a configuration file.
     *
     * @param filename  The name of the file which contains the addresses and the ports of the destination hosts (see README
     *                  for details about the structure of this file).
     * @param firstTime If it is true, all the initializations will be done (the object is being constructed now). Else, only
     *                  some structures will be reinitialized.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    void initialize(String filename, boolean firstTime) throws ApMonException, SocketException, IOException {
        Vector destAddresses = new Vector();
        Vector destPorts = new Vector();
        Vector destPasswds = new Vector();

        Hashtable confRes = new Hashtable();
        try {
            loadFile(filename, destAddresses, destPorts, destPasswds, confRes);
        } catch (Exception e) {
            if (firstTime) {
                if (e instanceof IOException)
                    throw (IOException) e;
                if (e instanceof ApMonException)
                    throw (ApMonException) e;
            } else {
                logger.warning("Configuration not reloaded successfully, keeping the previous one");
                return;
            }
        }

        synchronized (this) {
            arrayInit(destAddresses, destPorts, destPasswds, firstTime);
            this.confResources = confRes;
        }
    }

    /**
     * Initializes an ApMon object from a list with URLs.
     *
     * @param destList The list with URLs.
     * @param firstTime  If it is true, all the initializations will be done (the object is being constructed now). Else, only
     *                   some structures will be reinitialized.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    void initialize(Vector destList, boolean firstTime) throws ApMonException, SocketException, IOException {
        int i;
        Vector destAddresses = new Vector();
        Vector destPorts = new Vector();
        Vector destPasswds = new Vector();
        String dest;
        Hashtable confRes = new Hashtable();

        logger.info("Initializing destination addresses & ports:");
        try {
            for (i = 0; i < destList.size(); i++) {
                dest = (String) destList.get(i);
                if (dest.startsWith("http")) { // get the list from a remote location
                    loadURL(dest, destAddresses, destPorts, destPasswds, confRes);
                } else { // the destination address & port are given directly
                    addToDestinations(dest, destAddresses, destPorts, destPasswds);
                }
            }
        } catch (Exception e) {
            if (firstTime) {
                if (e instanceof IOException)
                    throw (IOException) e;
                if (e instanceof ApMonException)
                    throw (ApMonException) e;
                if (e instanceof SocketException)
                    throw (SocketException) e;
            } else {
                logger.warning("Configuration not reloaded successfully, keeping the previous one");
                return;
            }
        }

        synchronized (this) {
            arrayInit(destAddresses, destPorts, destPasswds, firstTime);
            this.confResources = confRes;
        }
    }

    /**
     * Parses a configuration file which contains addresses, ports and passwords for the destination hosts and puts the
     * results in the vectors given as parameters.
     *
     * @param filename      The name of the configuration file.
     * @param destAddresses Will contain the destination addresses.
     * @param destPorts     Will contain the ports from the destination hosts.
     * @param destPasswds   Will contain the passwords for the destination hosts.
     * @param confRes       Will contain the configuration resources (file, URLs).
     * @throws IOException ,
     *                     ApMonException
     */
    void loadFile(String filename, Vector destAddresses, Vector destPorts, Vector destPasswds, Hashtable confRes) throws IOException, ApMonException {
        String line, tmp;
        BufferedReader in = new BufferedReader(new FileReader(filename));
        confRes.put(new File(filename), new Long(System.currentTimeMillis()));

        /** initializations for the destination addresses */
        logger.info("Loading file " + filename + "...");

        /** parse the input file */
        while ((line = in.readLine()) != null) {
            tmp = line.trim();
            // skip empty lines & comment lines
            if (tmp.length() == 0 || tmp.startsWith("#"))
                continue;
            if (tmp.startsWith("xApMon_loglevel")) {
                StringTokenizer lst = new StringTokenizer(tmp, " =");
                lst.nextToken();
                setLogLevel(lst.nextToken());
                continue;
            }
            if (tmp.startsWith("xApMon_")) {
                parseXApMonLine(tmp);
                continue;
            }

            addToDestinations(tmp, destAddresses, destPorts, destPasswds);
        }
    }

    /**
     * Parses a web page which contains addresses, ports and passwords for the destination hosts and puts the results in
     * the vectors given as parameters.
     *
     * @param destAddresses Will contain the destination addresses.
     * @param destPorts     Will contain the ports from the destination hosts.
     * @param destPasswds   Will contain the passwords for the destination hosts.
     * @param confRes       Will contain the configuration resources (file, URLs).
     */
    void loadURL(String url, Vector destAddresses, Vector destPorts, Vector destPasswds, Hashtable confRes) throws IOException, ApMonException {

        System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
        System.setProperty("sun.net.client.defaultReadTimeout", "5000");
        URL destURL = null;
        try {
            destURL = new URL(url);
        } catch (MalformedURLException e) {
            throw new ApMonException(e.getMessage());
        }

        URLConnection urlConn = destURL.openConnection();
        long lmt = urlConn.getLastModified();
        confRes.put(new URL(url), new Long(lmt));

        logger.info("Loading from URL " + url + "...");

        BufferedReader br = new BufferedReader(new InputStreamReader(destURL.openStream()));
        String destLine;
        while ((destLine = br.readLine()) != null) {
            String tmp2 = destLine.trim();
            // skip empty lines & comment lines
            if (tmp2.length() == 0 || tmp2.startsWith("#"))
                continue;
            if (tmp2.startsWith("xApMon_loglevel")) {
                StringTokenizer lst = new StringTokenizer(tmp2, " =");
                lst.nextToken();
                setLogLevel(lst.nextToken());
                continue;
            }
            if (tmp2.startsWith("xApMon_")) {
                parseXApMonLine(tmp2);
                continue;

            }
            addToDestinations(tmp2, destAddresses, destPorts, destPasswds);
        }
        br.close();
    }

    /**
     * Parses a line from a (local or remote) configuration file and adds the address and the port to the vectors that
     * are given as parameters.
     *
     * @param line          The line to be parsed.
     * @param destAddresses Contains destination addresses.
     * @param destPorts     Contains the ports from the destination hosts.
     * @param destPasswds   Contains the passwords for the destination hosts.
     */
    void addToDestinations(String line, Vector destAddresses, Vector destPorts, Vector destPasswds) {
        String addr;
        int port = DEFAULT_PORT;
        String tokens[] = line.split("(\\s)+");
        String passwd = "";

        if (tokens == null)
            return; // skip blank lines

        line = tokens[0].trim();
        if (tokens.length > 1)// a password was provided
            passwd = tokens[1].trim();

        /** the address and the port are separated with ":" */
        StringTokenizer st = new StringTokenizer(line, ":");
        addr = st.nextToken();
        try {
            if (st.hasMoreTokens())
                port = Integer.parseInt(st.nextToken());
            else
                port = DEFAULT_PORT;
        } catch (NumberFormatException e) {
            logger.warning("Wrong address: " + line);
        }

        destAddresses.add(addr);
        destPorts.add(new Integer(port));
        if (passwd != null)
            destPasswds.add(passwd);
    }

    /**
     * Internal method used to initialize an ApMon data structure.
     *
     * @param destAddresses Array that contains the hostnames or IP addresses of the destination hosts.
     * @param destPorts     The ports where the MonaLisa modules listen on the destination hosts.
     * @param destPasswds   The passwords for the destination hosts.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */

    void arrayInit(Vector destAddresses, Vector destPorts, Vector destPasswds) throws ApMonException, SocketException, IOException {
        arrayInit(destAddresses, destPorts, destPasswds, true);
    }

    /**
     * Internal method used to initialize an ApMon data structure.
     *
     * @param destAddresses Array that contains the hostnames or IP addresses of the destination hosts.
     * @param destPorts     The ports where the MonaLisa modules listen on the destination hosts.
     * @param destPasswds   The passwords for the destination hosts.
     * @param firstTime     If it is true, all the initializations will be done (the object is being constructed now). Else, only
     *                      some of the data structures will be reinitialized.
     * @throws ApMonException ,
     *                        SocketException, IOException
     */
    void arrayInit(Vector destAddresses, Vector destPorts, Vector destPasswds, boolean firstTime) throws ApMonException, SocketException, IOException {

        Vector tmpAddresses, tmpPorts, tmpPasswds;

        if (destAddresses.size() == 0 || destPorts.size() == 0)
            throw new ApMonException("No destination hosts specified");

        tmpAddresses = new Vector();
        tmpPorts = new Vector();
        tmpPasswds = new Vector();

        /**
         * put the destination addresses, ports & passwords in some temporary buffers (because we don't want to keep the
         * monitor while making DNS requests)
         */

        for (int i = 0; i < destAddresses.size(); i++) {
            InetAddress inetAddr = InetAddress.getByName((String) destAddresses.get(i));
            String ipAddr = inetAddr.getHostAddress();

            /**
             * add the new destination only if it doesn't already exist in this.destAddresses
             */
            if (!tmpAddresses.contains(ipAddr)) {
                tmpAddresses.add(ipAddr);
                tmpPorts.add(destPorts.get(i));
                if (destPasswds != null) {
                    tmpPasswds.add(destPasswds.get(i));
                }
                logger.info("adding destination: " + ipAddr + ":" + destPorts.get(i));
            }
        }

        synchronized (this) {
            this.destPorts = new Vector(tmpPorts);
            this.destAddresses = new Vector(tmpAddresses);
            this.destPasswds = new Vector(tmpPasswds);
        }

        /** these should be done only the first time the function is called */
        if (firstTime) {
            cmdExec exec = new cmdExec();
            myHostname = exec.executeCommand("hostname -f", "");
            exec.stopIt();
            sysNodeName = myHostname;

            dgramSocket = new DatagramSocket();
            lastJobInfoSend = System.currentTimeMillis();

            try {
                lastSysInfoSend = BkThread.getBootTime();
            } catch (Exception e) {
                logger.warning("Error reading boot time from /proc/stat/.");
                lastSysInfoSend = 0;
            }

            lastUtime = lastStime = 0;

            BkThread.getNetConfig(netInterfaces, allMyIPs);
            if (allMyIPs.size() > 0)
                this.myIP = (String) allMyIPs.get(0);
            else
                this.myIP = "unknown";

            try {
                baos = new ByteArrayOutputStream();
            } catch (Throwable t) {
                logger.log(Level.WARNING, "", t);
                throw new ApMonException("Got General Exception while encoding:" + t);
            }
        }
        /**
         * start job/system monitoring according to the settings previously read from the configuration file
         */
        setJobMonitoring(jobMonitoring, jobMonitorInterval);
        setSysMonitoring(sysMonitoring, sysMonitorInterval);
        setGenMonitoring(genMonitoring, genMonitorIntervals);
        setConfRecheck(confCheck, recheckInterval);
    }

    /**
     * For backward compatibility.
     */
    public void sendTimedParameters(String clusterName, String nodeName, int nParams, Vector paramNames, Vector valueTypes, Vector paramValues, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendTimedParameters(clusterName, nodeName, nParams, paramNames, paramValues, timestamp);
    }

    /**
     * Sends a set of parameters and thier values to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramNames  Vector with the names of the parameters.
     * @param paramValues Vector with the values of the parameters.
     * @param timestamp   The user's timestamp
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendTimedParameters(String clusterName, String nodeName, int nParams, Vector paramNames, Vector paramValues, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {

        int i;

        if (Config.getInstance().getMonitor().equals(Config.OPENTSDB)) {
            MonitoringUtils monUtils = new MonitoringUtils(Config.getInstance());
            monUtils.shareMetrics(clusterName, nodeName, paramNames, paramValues);
        }

        if (!shouldSend())
            return;

        if (clusterName != null) { // don't keep the cached values for cluster name
            // and node name
            this.clusterName = clusterName;

            if (nodeName != null)
            /** the user provided a name */
                this.nodeName = new String(nodeName);
            else {
                /** set the node name to the node's IP */
                this.nodeName = this.myHostname;
            } // else
        } // if

        updateSEQ_NR();
        /** try to encode the parameters */
        encodeParams(nParams, paramNames, paramValues, timestamp);

        synchronized (this) {
            /** for each destination */
            for (i = 0; i < destAddresses.size(); i++) {
                InetAddress destAddr = InetAddress.getByName((String) destAddresses.get(i));
                int port = ((Integer) destPorts.get(i)).intValue();

                String header = "v:" + APMON_VERSION + "_jp:";
                String passwd = "";
                if (destPasswds != null && destPasswds.size() == destAddresses.size()) {
                    passwd = (String) destPasswds.get(i);
                }
                header += passwd;

                byte[] newBuff = null;
                try {
                    XDROutputStream xdrOS = new XDROutputStream(baos);

                    xdrOS.writeString(header);
                    xdrOS.pad();
                    xdrOS.writeInt(((Integer) sender.get("INSTANCE_ID")).intValue());
                    xdrOS.pad();
                    xdrOS.writeInt(((Integer) sender.get("SEQ_NR")).intValue());
                    xdrOS.pad();

                    xdrOS.flush();
                    byte[] tmpbuf = baos.toByteArray();
                    baos.reset();

                    newBuff = new byte[tmpbuf.length + buf.length];
                    System.arraycopy(tmpbuf, 0, newBuff, 0, tmpbuf.length);
                    System.arraycopy(buf, 0, newBuff, tmpbuf.length, buf.length);

                } catch (Throwable t) {
                    logger.warning("Cannot add ApMon header...." + t);
                    newBuff = buf;
                }

                if (newBuff == null || newBuff.length == 0) {
                    logger.warning("Cannot send null or 0 length buffer!!");
                    continue;
                }

                dgramSize = newBuff.length;
                DatagramPacket dp = new DatagramPacket(newBuff, dgramSize, destAddr, port);
                try {
                    dgramSocket.send(dp);
                } catch (IOException e) {
                    if (logger.isLoggable(Level.WARNING))
                        logger.warning("Error sending parameters to " + destAddresses.get(i));
                    dgramSocket.close();
                    dgramSocket = new DatagramSocket();
                }

                if (logger.isLoggable(Level.FINE)) {
                    StringBuffer sbLogMsg = new StringBuffer();
                    sbLogMsg.append(" Datagram with size ").append(dgramSize);
                    sbLogMsg.append(" sent to ").append(destAddresses.get(i)).append(", containing parameters:\n");
                    sbLogMsg.append(printParameters(paramNames, paramValues));
                    logger.log(Level.FINE, sbLogMsg.toString());
                }
            }
        } // synchronized
    }

    /**
     * For backward compatibility.
     */
    public void sendParameters(String clusterName, String nodeName, int nParams, Vector paramNames, Vector valueTypes, Vector paramValues) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendParameters(clusterName, nodeName, nParams, paramNames, paramValues);
    }

    /**
     * Sends a set of parameters and thier values to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramNames  Vector with the names of the parameters.
     * @param paramValues Vector with the values of the parameters.
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendParameters(String clusterName, String nodeName, int nParams, Vector paramNames, Vector paramValues) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendTimedParameters(clusterName, nodeName, nParams, paramNames, paramValues, -1);
    }

    /**
     * For backward compatibility.
     */
    public void sendParameter(String clusterName, String nodeName, String paramName, int valueType, Object paramValue) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendParameter(clusterName, nodeName, paramName, paramValue);
    }

    /**
     * Sends a parameter and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL, we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendParameter(String clusterName, String nodeName, String paramName, Object paramValue) throws ApMonException, UnknownHostException, SocketException, IOException {
        Vector paramNames = new Vector();
        paramNames.add(paramName);
        Vector paramValues = new Vector();
        paramValues.add(paramValue);

        sendParameters(clusterName, nodeName, 1, paramNames, paramValues);
    }

    /**
     * For backward compatibility.
     */
    public void sendTimedParameter(String clusterName, String nodeName, String paramName, int valueType, Object paramValue, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendTimedParameter(clusterName, nodeName, paramName, paramValue, timestamp);
    }

    /**
     * Sends a parameter and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL, we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @param timestamp   The user's timestamp
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendTimedParameter(String clusterName, String nodeName, String paramName, Object paramValue, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {
        Vector paramNames = new Vector();
        paramNames.add(paramName);
        Vector paramValues = new Vector();
        paramValues.add(paramValue);

        sendTimedParameters(clusterName, nodeName, 1, paramNames, paramValues, timestamp);
    }

    /**
     * Sends an integer parameter and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL, we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendParameter(String clusterName, String nodeName, String paramName, int paramValue) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendParameter(clusterName, nodeName, paramName, new Integer(paramValue));
    }

    /**
     * Sends an integer parameter and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL, we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @param timestamp   The user's timestamp
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendTimedParameter(String clusterName, String nodeName, String paramName, int paramValue, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {
        sendTimedParameter(clusterName, nodeName, paramName, new Integer(paramValue), timestamp);
    }

    /**
     * Sends a parameter of type double and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL,we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendParameter(String clusterName, String nodeName, String paramName, double paramValue) throws ApMonException, UnknownHostException, SocketException, IOException {

        sendParameter(clusterName, nodeName, paramName, new Double(paramValue));
    }

    /**
     * Sends an integer parameter and its value to the MonALISA module.
     *
     * @param clusterName The name of the cluster that is monitored. If it is NULL, we keep the same cluster and node name as in
     *                    the previous datagram.
     * @param nodeName    The name of the node from the cluster from which the value was taken.
     * @param paramName   The name of the parameter.
     * @param paramValue  The value of the parameter.
     * @param timestamp   The user's timestamp
     * @throws ApMonException ,
     *                        UnknownHostException, SocketException
     */
    public void sendTimedParameter(String clusterName, String nodeName, String paramName, double paramValue, int timestamp) throws ApMonException, UnknownHostException, SocketException, IOException {

        sendTimedParameter(clusterName, nodeName, paramName, new Double(paramValue), timestamp);
    }

    /**
     * Checks that the size of the stream does not exceed the maximum size of an UDP diagram.
     */
    void ensureSize(ByteArrayOutputStream baos) throws ApMonException {
        if (baos == null)
            throw new ApMonException("Null ByteArrayOutputStream");
        if (baos.size() > MAX_DGRAM_SIZE)
            throw new ApMonException("Maximum datagram size exceeded");
    }

    /**
     * Encodes in the XDR format the data from a ApMon structure. Must be called before sending the data over the
     * newtork.
     *
     * @throws ApMonException
     */
    void encodeParams(int nParams, Vector paramNames, Vector paramValues, int timestamp) throws ApMonException {
        int i, valType;
        try {
            XDROutputStream xdrOS = new XDROutputStream(baos);
            /** encode the cluster name, the node name and the number of parameters */
            ensureSize(baos);
            xdrOS.writeString(clusterName);
            xdrOS.pad();
            xdrOS.writeString(nodeName);
            xdrOS.pad();
            xdrOS.writeInt(nParams);
            xdrOS.pad();

            Object oValue;
            /** encode the parameters */
            for (i = 0; i < nParams; i++) {

                /** parameter name */
                xdrOS.writeString((String) paramNames.get(i));
                xdrOS.pad();
                /** parameter value type */

                oValue = paramValues.get(i);
                valType = ((Integer) mValueTypes.get(oValue.getClass().getName())).intValue();
                xdrOS.writeInt(valType);
                xdrOS.pad();
                /** parameter value */
                switch (valType) {
                    case XDR_STRING:
                        xdrOS.writeString((String) paramValues.get(i));
                        break;
                    case XDR_INT32:// INT16 is not supported
                        int ival = ((Integer) paramValues.get(i)).intValue();
                        xdrOS.writeInt(ival);
                        break;
                    case XDR_REAL64: // REAL32 is not supported
                        double dval = ((Double) paramValues.get(i)).doubleValue();
                        xdrOS.writeDouble(dval);
                        break;
                    default:
                        throw new ApMonException("Unknown type for XDR encoding");
                }
                xdrOS.pad();

            }// end for()

            /** put the timestamp at the and of XDROutputStream */
            if (timestamp > 0) {
                xdrOS.writeInt(timestamp);
                xdrOS.pad();
            }

            ensureSize(baos);
            xdrOS.flush();
            buf = baos.toByteArray();
            baos.reset();
            logger.fine("Send buffer length: " + buf.length + "B");

        } catch (Throwable t) {
            logger.log(Level.WARNING, "", t);
            throw new ApMonException("Got General Exception while encoding:" + t);
        }
    }

    /**
     * Returns the value of the confCheck flag. If it is true, the configuration file and/or the URLs are periodically
     * checked for modifications.
     */
    public boolean getConfCheck() {
        boolean val;
        synchronized (mutexBack) {
            val = this.confCheck;
        }
        return val;
    }

    /**
     * Settings for the periodical configuration rechecking feature.
     *
     * @param confCheck If it is true, the configuration rechecking is enabled.
     * @param interval    The time interval at which the verifications are done. The interval will be automatically increased if
     *                    ApMon cannot connect to the configuration URLs.
     */
    public void setConfRecheck(boolean confCheck, long interval) {
        int val = -1;
        if (confCheck)
            logger.info("Enabling configuration reloading (interval " + interval + " s)");

        synchronized (mutexBack) {
            if (initType == DIRECT_INIT) { // no need to reload onfiguration
                logger.warning("setConfRecheck(): no configuration file/URL to reload\n");
            } else {
                this.confCheck = confCheck;
                if (confCheck) {
                    if (interval > 0) {
                        this.recheckInterval = interval;
                        this.crtRecheckInterval = interval;
                    } else {
                        this.recheckInterval = RECHECK_INTERVAL;
                        this.crtRecheckInterval = RECHECK_INTERVAL;
                    }
                    val = 1;
                } else {
                    if (jobMonitoring == false && sysMonitoring == false)
                        val = 0;
                }
            }
        } // synchronized

        if (val == 1) {
            setBackgroundThread(true);
            return;
        }
        if (val == 0) {
            setBackgroundThread(false);
            return;
        }
    }

    /**
     * Returns the requested value of the time interval (in seconds) between two recheck operations for the
     * configuration files.
     */
    public long getRecheckInterval() {
        long val;
        synchronized (mutexBack) {
            val = this.recheckInterval;
        }
        return val;
    }

    /**
     * Sets the value of the time interval (in seconds) between two recheck operations for the configuration file/URLs.
     * If the value is negative, the configuration rechecking is
     * turned off.
     */
    public void setRecheckInterval(long val) {
        if (val > 0)
            setConfRecheck(true, val);
        else
            setConfRecheck(false, val);
    }

    /**
     * Returns the actual value of the time interval (in seconds) between two recheck operations for the configuration
     * file/URLs.
     */
    long getCrtRecheckInterval() {
        long val;
        synchronized (mutexBack) {
            val = this.crtRecheckInterval;
        }
        return val;
    }

    void setCrtRecheckInterval(long val) {
        synchronized (mutexBack) {
            crtRecheckInterval = val;
        }
    }

    /**
     * Settings for the job monitoring feature.
     *
     * @param jobMonitoring If it is true, the job monitoring is enabled.
     * @param interval      The time interval at which the job monitoring datagrams are sent.
     */
    public void setJobMonitoring(boolean jobMonitoring, long interval) {
        int val = -1;
        if (jobMonitoring)
            logger.info("Enabling job monitoring, time interval " + interval + " s");
        else
            logger.info("Disabling job monitoring...");

        synchronized (mutexBack) {
            this.jobMonitoring = jobMonitoring;
            this.jobMonChanged = true;
            if (jobMonitoring == true) {
                if (interval > 0)
                    this.jobMonitorInterval = interval;
                else
                    this.jobMonitorInterval = JOB_MONITOR_INTERVAL;
                val = 1;
            } else {
                // disable the background thread if it is not needed anymore
                if (this.sysMonitoring == false && this.confCheck == false)
                    val = 0;
            }
        }
        if (val == 1) {
            setBackgroundThread(true);
            return;
        }
        if (val == 0) {
            setBackgroundThread(false);
            return;
        }
    }

    /**
     * Returns the value of the interval at which the job monitoring datagrams are sent.
     */
    public long getJobMonitorInterval() {
        long val;
        synchronized (mutexBack) {
            val = this.jobMonitorInterval;
        }
        return val;
    }

    /**
     * Returns true if the job monitoring is enabled and false otherwise.
     */
    public boolean getJobMonitoring() {
        boolean val;
        synchronized (mutexBack) {
            val = this.jobMonitoring;
        }
        return val;
    }

    /**
     * Settings for the system monitoring feature.
     *
     * @param sysMonitoring If it is true, the system monitoring is enabled.
     * @param interval      The time interval at which the system monitoring datagrams are sent.
     */
    public void setSysMonitoring(boolean sysMonitoring, long interval) {
        int val = -1;
        if (sysMonitoring)
            logger.info("Enabling system monitoring, time interval " + interval + " s");
        else
            logger.info("Disabling system monitoring...");

        synchronized (mutexBack) {
            this.sysMonitoring = sysMonitoring;
            this.sysMonChanged = true;
            if (sysMonitoring == true) {
                if (interval > 0)
                    this.sysMonitorInterval = interval;
                else
                    this.sysMonitorInterval = SYS_MONITOR_INTERVAL;
                val = 1;
            } else {
                // disable the background thread if it is not needed anymore
                if (this.jobMonitoring == false && this.confCheck == false)
                    val = 0;
            }
        }

        if (val == 1) {
            setBackgroundThread(true);
            return;
        }

        if (val == 0) {
            setBackgroundThread(false);
            return;
        }
    }

    /**
     * Returns the value of the interval at which the system monitoring datagrams are sent.
     */
    public long getSysMonitorInterval() {
        long val;
        synchronized (mutexBack) {
            val = this.sysMonitorInterval;
        }

        return val;
    }

    /**
     * Returns true if the job monitoring is enabled and false otherwise.
     */
    public boolean getSysMonitoring() {
        boolean val;
        synchronized (mutexBack) {
            val = this.sysMonitoring;
        }
        return val;
    }

    /**
     * Settings for the general system monitoring feature.
     *
     * @param genMonitoring If it is true, the general system monitoring is enabled.
     * @param nIntervals      The number of time intervals at which the general system monitoring datagrams are sent (a
     *                      "time interval" is the time interval between two subsequent system
     *                      monitoring datagrams).
     */
    public void setGenMonitoring(boolean genMonitoring, int nIntervals) {

        logger.info("Setting general information monitoring to " + genMonitoring);

        synchronized (mutexBack) {
            this.genMonitoring = genMonitoring;
            this.recheckChanged = true;
            if (genMonitoring == true) {
                if (nIntervals > 0)
                    this.genMonitorIntervals = nIntervals;
                else
                    this.genMonitorIntervals = GEN_MONITOR_INTERVALS;
            }
        }

        /** automatically set system monitoring to true if necessary */
        if (genMonitoring && this.sysMonitoring == false) {
            setSysMonitoring(true, SYS_MONITOR_INTERVAL);
        }
    }

    /**
     * Returns true if the general system monitoring is enabled and false otherwise.
     */
    public boolean getGenMonitoring() {
        boolean val;
        synchronized (mutexBack) {
            val = this.genMonitoring;
        }
        return val;
    }

    public Double getSystemParameter(String paramName) {
        if (bkThread == null) {
            logger.info("The background thread is not started - returning null");
            return null;
        }

        if (bkThread.monitor == null) {
            logger.info("No HostPropertiesMonitor defined - returning null");
            return null;
        }

        HashMap hms = bkThread.monitor.getHashParams();
        if (hms == null) {
            logger.info("No parameters map defined - returning null");
            return null;
        }

        Long paramId = (Long) ApMonMonitoringConstants.HT_SYS_NAMES_TO_CONSTANTS.get("sys_" + paramName);

        if (paramId == null) {
            logger.info("The parameter " + paramName + " does not exist.");
            return null;
        }

        String paramValue = (String) hms.get(paramId);
        double dVal = -1;
        try {
            dVal = Double.parseDouble(paramValue);
        } catch (Exception e) {
            logger.info("Could not obtain parameter value from the map: " + paramName);
            return null;
        }
        return new Double(dVal);
    }

    /**
     * Enables or disables the background thread.
     */
    void setBackgroundThread(boolean val) {
        boolean stoppedThread = false;

        synchronized (mutexCond) {
            condChanged = false;
            if (val == true)
                if (!bkThreadStarted) {
                    bkThreadStarted = true;
                    bkThread = new BkThread(this);
                    // bkThread.setDaemon(true);
                    bkThread.start();
                } else {
                    condChanged = true;
                    mutexCond.notify();
                }

            if (val == false && bkThreadStarted) {
                bkThread.stopIt();
                condChanged = true;
                mutexCond.notify();
                stoppedThread = true;
                logger.info("[Stopping the thread for configuration reloading...]\n");
            }
        }
        if (stoppedThread) {
            try {
                // debugging stuff...
                /*
                 * System.out.println("### active count: " + bkThread.activeCount()); Thread[] tarray = new Thread[500];
                 * bkThread.enumerate(tarray); for (int tz = 0; tz <
                 * tarray.length; tz++) { if (tarray[tz] != null) System.out.println("### " + tarray[tz]); }
                 */
                bkThread.join();
            } catch (Exception e) {
            }
            bkThreadStarted = false;
        }
    }

    /**
     * This sets the maxim number of messages that are send to MonALISA in one second. Default, this number is 50.
     */
    public void setMaxMsgRate(int maxRate) {
        this.maxMsgRate = maxRate;
    }

    /**
     * Must be called when the ApMon object is no longer in use. Closes the UDP socket used for sending the parameters
     * and sends a last job monitoring datagram to register the time
     * when the application was finished.
     */
    public void stopIt() {

        if (bkThreadStarted) {
            if (jobMonitoring) {
                logger.info("Sending last job monitoring packet...");
                /**
                 * send a datagram with job monitoring information which covers the last time interval
                 */
                bkThread.sendJobInfo();
            }
        }
        dgramSocket.close();
        if (bkThread != null)
            bkThread.monitor.stopIt();
        setBackgroundThread(false);
    }

    /**
     * Initializes the data structures used to configure the monitoring part of ApMon.
     */
    void initMonitoring() {
        autoDisableMonitoring = true;
        sysMonitoring = false;
        jobMonitoring = false;
        genMonitoring = false;
        confCheck = false;

        recheckInterval = RECHECK_INTERVAL;
        crtRecheckInterval = RECHECK_INTERVAL;
        jobMonitorInterval = JOB_MONITOR_INTERVAL;
        sysMonitorInterval = SYS_MONITOR_INTERVAL;

        sysMonitorParams = 0L;

        /** CPU usage percent */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_CPU_USAGE;
        /** average system load over the last minute */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_LOAD1;
        /** average system load over the 5 min */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_LOAD5;
        /** average system load over the 15 min */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_LOAD15;
        /** percent of the time spent by the CPU in user mode */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_CPU_USR;
        /** percent of the time spent by the CPU in system mode */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_CPU_SYS;
        /** percent of the CPU idle time */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_CPU_IDLE;
        /** percent of the time spent by the CPU in nice mode */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_CPU_NICE;
        /** amount of free memory, in MB */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_MEM_FREE;
        /** used system memory in percent */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_MEM_USAGE;
        /** amount of currently used memory, in MB */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_MEM_USED;
        /** amount of currently used swap, in MB */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_PAGES_IN;
        sysMonitorParams |= ApMonMonitoringConstants.SYS_PAGES_OUT;
        /** network (input) transfer in KBps */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_NET_IN;
        /** network (output) transfer in KBps */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_NET_OUT;
        /** number of processes in thesystem */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_PROCESSES;
        /** number of opened sockets for each proto => sockets_tcp/udp/unix */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_NET_SOCKETS;
        /** number of tcp sockets in each state => sockets_tcp_LISTEN, ... */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_NET_TCP_DETAILS;
        /** swap used, in MB */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_SWAP_USED;
        /** swap free, in MB */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_SWAP_FREE;
        /** swap usage in percent */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_SWAP_USAGE;
        /** number of network errors */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_NET_ERRS;
        /** in days */
        sysMonitorParams |= ApMonMonitoringConstants.SYS_UPTIME;

        genMonitorParams = 0L;

        genMonitorParams |= ApMonMonitoringConstants.GEN_HOSTNAME;
        genMonitorParams |= ApMonMonitoringConstants.GEN_IP;

        if (osName.indexOf("Linux") >= 0) {
            genMonitorParams |= ApMonMonitoringConstants.GEN_CPU_MHZ;
            /** number of the CPUs in the system */
            genMonitorParams |= ApMonMonitoringConstants.GEN_NO_CPUS;
            /** total amount of system memory in MB */
            genMonitorParams |= ApMonMonitoringConstants.GEN_TOTAL_MEM;
            /** total amount of swap in MB */
            genMonitorParams |= ApMonMonitoringConstants.GEN_TOTAL_SWAP;

            genMonitorParams |= ApMonMonitoringConstants.GEN_CPU_VENDOR_ID;

            genMonitorParams |= ApMonMonitoringConstants.GEN_CPU_FAMILY;

            genMonitorParams |= ApMonMonitoringConstants.GEN_CPU_MODEL;

            genMonitorParams |= ApMonMonitoringConstants.GEN_CPU_MODEL_NAME;

            genMonitorParams |= ApMonMonitoringConstants.GEN_BOGOMIPS;
        }

        jobMonitorParams = 0L;

        /** elapsed time from the start of this job in seconds */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_RUN_TIME;
        /** processor time spent running this job in seconds */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_CPU_TIME;
        /** current percent of the processor used for this job, as reported by ps */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_CPU_USAGE;
        /** percent of the memory occupied by the job, as reported by ps */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_MEM_USAGE;
        /** size in MB of the working directory of the job */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_WORKDIR_SIZE;
        /** size in MB of the total size of the disk partition containing the working directory */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_DISK_TOTAL;
        /** size in MB of the used disk partition containing the working directory */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_DISK_USED;
        /** size in MB of the free disk partition containing the working directory */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_DISK_FREE;
        /** percent of the used disk partition containing the working directory */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_DISK_USAGE;
        /** size in KB of the virtual memory occupied by the job, as reported by ps */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_VIRTUALMEM;
        /** size in KB of the resident image size of the job, as reported by ps */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_RSS;
        /** opended files by job */
        jobMonitorParams |= ApMonMonitoringConstants.JOB_OPEN_FILES;
    }

    /*******************************************************************************************************************************************************************************
     * Parses a "xApMon" line from the configuration file and changes the ApMon settings according to the line.
     */
    protected void parseXApMonLine(String line) {
        boolean flag = false, found;

        /** the line has the syntax "xApMon_parameter = value" */
        String tmp = line.replaceFirst("xApMon_", "");
        StringTokenizer st = new StringTokenizer(tmp, " \t=");
        String param = st.nextToken();
        String value = st.nextToken();

        /** for boolean values */
        if (value.equals("on"))
            flag = true;
        if (value.equals("off"))
            flag = false;

        synchronized (mutexBack) {
            found = false;
            if (param.equals("job_monitoring")) {
                this.jobMonitoring = flag;
                found = true;
            }
            if (param.equals("sys_monitoring")) {
                this.sysMonitoring = flag;
                found = true;
            }
            if (param.equals("job_interval")) {
                this.jobMonitorInterval = Long.parseLong(value);
                found = true;
            }
            if (param.equals("sys_interval")) {
                this.sysMonitorInterval = Long.parseLong(value);
                found = true;
            }
            if (param.equals("general_info")) {
                this.genMonitoring = flag;
                found = true;
            }
            if (param.equals("conf_recheck")) {
                this.confCheck = flag;
                found = true;
            }
            if (param.equals("recheck_interval")) {
                this.recheckInterval = this.crtRecheckInterval = Long.parseLong(value);
                found = true;
            }
            if (param.equals("maxMsgRate")) {
                this.maxMsgRate = Integer.parseInt(value);
                found = true;
            }
            if (param.equals("auto_disable")) {
                this.autoDisableMonitoring = flag;
                found = true;
            }
        }

        if (found)
            return;

        /***************************************************************************************************************************************************************************
         * mutexBack protects the variables which hold settings for the backgrund thread (for sending monitoring
         * information and for rechecking the configuration file/URLS)
         */
        synchronized (mutexBack) {
            found = false;
            Long val = null;

            if (param.startsWith("sys")) {
                val = ApMonMonitoringConstants.getSysIdx(param);
                long lval = val.longValue();
                if (flag) {
                    sysMonitorParams |= lval;
                } else {
                    sysMonitorParams &= ~lval;
                }
            } else if (param.startsWith("job")) {
                val = ApMonMonitoringConstants.getJobIdx(param);
                long lval = val.longValue();
                if (flag) {
                    jobMonitorParams |= lval;
                } else {
                    jobMonitorParams &= ~lval;
                }
            }

            if (val == null) {
                logger.warning("Invalid parameter name in the configuration file: " + param);
            } else {
                found = true;
            }

        }

        if (!found)
            logger.warning("Invalid parameter name in the configuration file: " + param);
    }

    void setSenderRef(Hashtable s) {
        sender = s;
    }

    void initSenderRef() {
        sender.put("SEQ_NR", new Integer(0));
        sender.put("INSTANCE_ID", new Integer((new Random()).nextInt(0x7FFFFFFF)));
    }

    void updateSEQ_NR() {
        Integer seq_nr = (Integer) sender.get("SEQ_NR");
        sender.put("SEQ_NR", new Integer((seq_nr.intValue() + 1) % 2000000000));
    }

    /**
     * Displays the names, values and types of a set of parameters.
     *
     * @param paramNames  Vector with the parameters' names.
     * @param paramValues Vector with the values of the parameters.
     */
    String printParameters(Vector paramNames, Vector paramValues) {
        int i;
        StringBuffer res = new StringBuffer();
        for (i = 0; i < paramNames.size(); i++) {
            String name = (String) paramNames.get(i);
            res.append(name).append(paramValues.get(i));
        }
        return res.toString();
    }

    /**
     * Decide if the current datagram should be sent. This decision is based on the number of messages previously sent.
     */
    public boolean shouldSend() {

        long now = (new Date()).getTime() / 1000;
        boolean doSend;

        if (now != crtTime) {
            /** new time, update previous counters; */
            prvSent = hWeight * prvSent + (1.0 - hWeight) * crtSent / (now - crtTime);
            prvTime = crtTime;
            logger.log(Level.FINE, "previously sent: " + crtSent + " dropped: " + crtDrop);
            /** reset current counter */
            crtTime = now;
            crtSent = 0;
            crtDrop = 0;
        }

        /** compute the history */
        int valSent = (int) (prvSent * hWeight + crtSent * (1.0 - hWeight));

        doSend = true;
        /** when we should start dropping messages */
        int level = this.maxMsgRate - this.maxMsgRate / 10;

        if (valSent > (this.maxMsgRate - level))
            doSend = (new Random()).nextInt(this.maxMsgRate / 10) < (this.maxMsgRate - valSent);

        /** counting sent and dropped messages */
        if (doSend) {
            crtSent++;
        } else {
            crtDrop++;
        }

        return doSend;
    }

    public String getMyHostname() {
        return myHostname;
    }

}


================================================
FILE: src/apmon/ApMonException.java
================================================
/*
 * ApMon - Application Monitoring Tool
 * Version: 2.2.7
 *
 * Copyright (C) 2006 - 2010 California Institute of Technology
 *
 * Permission is hereby granted, free of charge, to use, copy and modify 
 * this software and its documentation (the "Software") for any
 * purpose, provided that existing copyright notices are retained in 
 * all copies and that this notice is included verbatim in any distributions
 * or substantial portions of the Software. 
 * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu).
 * Users of the Software are asked to feed back problems, benefits,
 * and/or suggestions about the software to the MonALISA Development Team
 * (developers@monalisa.cern.ch). Support for this software - fixing of bugs,
 * incorporation of new features - is done on a best effort basis. All bug
 * fixes and enhancements will be made available under the same terms and
 * conditions as the original software,
 
 * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
 * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS
 * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
 * MODIFICATIONS.
 */
package apmon;

/***
 * Internal exception class.
 */
public class ApMonException extends Exception {

    static final long serialVersionUID = 979899100;

    public ApMonException(String s) {
        super(s);
    }
}


================================================
FILE: src/apmon/ApMonMonitoringConstants.java
================================================
/*
 * ApMon - Application Monitoring Tool
 * Version: 2.2.7
 *
 * Copyright (C) 2006 - 2010 California Institute of Technology
 *
 * Permission is hereby granted, free of charge, to use, copy and modify 
 * this software and its documentation (the "Software") for any
 * purpose, provided that existing copyright notices are retained in 
 * all copies and that this notice is included verbatim in any distributions
 * or substantial portions of the Software. 
 * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu).
 * Users of the Software are asked to feed back problems, benefits,
 * and/or suggestions about the software to the MonALISA Development Team
 * (developers@monalisa.cern.ch). Support for this software - fixing of bugs,
 * incorporation of new features - is done on a best effort basis. All bug
 * fixes and enhancements will be made available under the same terms and
 * conditions as the original software,
 
 * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
 * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS
 * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
 * MODIFICATIONS.
 */

package apmon;

import java.util.HashMap;
import java.util.Iterator;


public final class ApMonMonitoringConstants {

    //SYS_* Specific
    public static final long SYS_LOAD1 = 0x1L;
    public static final Long LSYS_LOAD1 = new Long(SYS_LOAD1);
    public static final long SYS_LOAD5 = 0x2L;
    public static final Long LSYS_LOAD5 = new Long(SYS_LOAD5);
    public static final long SYS_LOAD15 = 0x4L;
    public static final Long LSYS_LOAD15 = new Long(SYS_LOAD15);

    public static final long SYS_CPU_USR = 0x8L;
    public static final Long LSYS_CPU_USR = new Long(SYS_CPU_USR);
    public static final long SYS_CPU_SYS = 0x10L;
    public static final Long LSYS_CPU_SYS = new Long(SYS_CPU_SYS);
    public static final long SYS_CPU_IDLE = 0x20L;
    public static final Long LSYS_CPU_IDLE = new Long(SYS_CPU_IDLE);
    public static final long SYS_CPU_NICE = 0x40L;
    public static final Long LSYS_CPU_NICE = new Long(SYS_CPU_NICE);
    public static final long SYS_CPU_USAGE = 0x80L;
    public static final Long LSYS_CPU_USAGE = new Long(SYS_CPU_USAGE);

    public static final long SYS_MEM_FREE = 0x100L;
    public static final Long LSYS_MEM_FREE = new Long(SYS_MEM_FREE);
    public static final long SYS_MEM_USED = 0x200L;
    public static final Long LSYS_MEM_USED = new Long(SYS_MEM_USED);
    public static final long SYS_MEM_USAGE = 0x400L;
    public static final Long LSYS_MEM_USAGE = new Long(SYS_MEM_USAGE);

    public static final long SYS_PAGES_IN = 0x800L;
    public static final Long LSYS_PAGES_IN = new Long(SYS_PAGES_
Download .txt
gitextract_j9cz1puc/

├── LICENSE.md
├── LICENSE_GANYMED_SSH2.txt
├── MANIFEST.MF
├── README
├── README.md
├── add-lib-to-local-maven.sh
├── build-all.sh
├── classpath
├── docs/
│   ├── _config.yml
│   ├── doc-examples.md
│   ├── doc-fdt-ddcopy.md
│   ├── doc-opentsdb.md
│   ├── doc-security.md
│   ├── doc-system-tuning.md
│   ├── doc-user-extensions.md
│   ├── index.md
│   ├── monitoring-opentsdb.txt
│   ├── perf-disk-to-disk.md
│   ├── perf-memory-to-memory.md
│   ├── perf-sc06.md
│   ├── perf-sc08.md
│   └── perf-sc09.md
├── lgtm.yml
├── lib/
│   ├── globus/
│   │   ├── axisg-2.2.0.jar
│   │   ├── bcprov-jdk15on-1.50.jar
│   │   ├── bouncycastle.LICENSE
│   │   ├── commons-codec-1.7.jar
│   │   ├── commons-io-2.4.jar
│   │   ├── commons-lang3-3.1.jar
│   │   ├── commons-logging.LICENSE
│   │   ├── commons-logging.jar
│   │   ├── cryptix.LICENSE
│   │   ├── gram-2.2.0.jar
│   │   ├── gridftp-2.2.0.jar
│   │   ├── gss-2.2.0.jar
│   │   ├── io-2.2.0.jar
│   │   ├── jsse-2.2.0.jar
│   │   ├── junit.LICENSE
│   │   ├── log4j.LICENSE
│   │   ├── myproxy-2.2.0.jar
│   │   ├── puretls.LICENSE
│   │   ├── ssl-proxies-2.2.0.jar
│   │   └── version.txt
│   ├── gsi-sshterm/
│   │   ├── BCGSS.jar
│   │   ├── SSHTerm-1.0.0.jar
│   │   ├── SSHVnc.jar
│   │   ├── SecureTunneling.jar
│   │   ├── ShiFT.jar
│   │   ├── TransferAPIClient.jar
│   │   ├── bcprov-jdk15on-1.50.jar
│   │   ├── commons-compress-1.2.jar
│   │   ├── filedrop.jar
│   │   ├── j2ssh-common-0.2.7.jar
│   │   ├── j2ssh-core-0.2.7.jar
│   │   ├── jglobus2/
│   │   │   ├── axisg-2.2.0.jar
│   │   │   ├── bcprov-jdk15on-1.50.jar
│   │   │   ├── commons-codec-1.7.jar
│   │   │   ├── commons-io-2.4.jar
│   │   │   ├── commons-lang3-3.1.jar
│   │   │   ├── commons-logging.jar
│   │   │   ├── gram-2.2.0.jar
│   │   │   ├── gridftp-2.2.0.jar
│   │   │   ├── gss-2.2.0.jar
│   │   │   ├── io-2.2.0.jar
│   │   │   ├── jsse-2.2.0.jar
│   │   │   ├── myproxy-2.2.0.jar
│   │   │   └── ssl-proxies-2.2.0.jar
│   │   ├── jlirc-unix-soc.jar
│   │   ├── libbrowser.jar
│   │   ├── log4j-1.2.6.jar
│   │   ├── ncsa-lcrypto-146.jar
│   │   ├── not-yet-commons-ssl-0.3.11.jar
│   │   ├── putty-pk-1.1.0.jar
│   │   ├── swing-layout-1.0.3.jar
│   │   └── voms-api-java-2.0.9.jar
│   └── opentsdb/
│       └── opentsdb-client-2.1.0.jar
├── open_direct.c
├── pom.xml
└── src/
    ├── apmon/
    │   ├── ApMon.java
    │   ├── ApMonException.java
    │   ├── ApMonMonitoringConstants.java
    │   ├── BkThread.java
    │   ├── MonitoredJob.java
    │   ├── XDRDataOutput.java
    │   ├── XDROutputStream.java
    │   └── host/
    │       ├── HostPropertiesMonitor.java
    │       ├── MacHostPropertiesMonitor.java
    │       ├── Parser.java
    │       ├── ProcReader.java
    │       └── cmdExec.java
    ├── ch/
    │   └── ethz/
    │       └── ssh2/
    │           ├── ChannelCondition.java
    │           ├── Connection.java
    │           ├── ConnectionInfo.java
    │           ├── ConnectionMonitor.java
    │           ├── DHGexParameters.java
    │           ├── HTTPProxyData.java
    │           ├── HTTPProxyException.java
    │           ├── InteractiveCallback.java
    │           ├── KnownHosts.java
    │           ├── LocalPortForwarder.java
    │           ├── LocalStreamForwarder.java
    │           ├── ProxyData.java
    │           ├── SCPClient.java
    │           ├── SFTPException.java
    │           ├── SFTPv3Client.java
    │           ├── SFTPv3DirectoryEntry.java
    │           ├── SFTPv3FileAttributes.java
    │           ├── SFTPv3FileHandle.java
    │           ├── ServerHostKeyVerifier.java
    │           ├── Session.java
    │           ├── StreamGobbler.java
    │           ├── auth/
    │           │   └── AuthenticationManager.java
    │           ├── channel/
    │           │   ├── Channel.java
    │           │   ├── ChannelInputStream.java
    │           │   ├── ChannelManager.java
    │           │   ├── ChannelOutputStream.java
    │           │   ├── IChannelWorkerThread.java
    │           │   ├── LocalAcceptThread.java
    │           │   ├── RemoteAcceptThread.java
    │           │   ├── RemoteForwardingData.java
    │           │   ├── RemoteX11AcceptThread.java
    │           │   ├── StreamForwarder.java
    │           │   └── X11ServerData.java
    │           ├── crypto/
    │           │   ├── Base64.java
    │           │   ├── CryptoWishList.java
    │           │   ├── KeyMaterial.java
    │           │   ├── PEMDecoder.java
    │           │   ├── PEMStructure.java
    │           │   ├── SimpleDERReader.java
    │           │   ├── cipher/
    │           │   │   ├── AES.java
    │           │   │   ├── BlockCipher.java
    │           │   │   ├── BlockCipherFactory.java
    │           │   │   ├── BlowFish.java
    │           │   │   ├── CBCMode.java
    │           │   │   ├── CTRMode.java
    │           │   │   ├── CipherInputStream.java
    │           │   │   ├── CipherOutputStream.java
    │           │   │   ├── DES.java
    │           │   │   ├── DESede.java
    │           │   │   └── NullCipher.java
    │           │   ├── dh/
    │           │   │   ├── DhExchange.java
    │           │   │   └── DhGroupExchange.java
    │           │   └── digest/
    │           │       ├── Digest.java
    │           │       ├── HMAC.java
    │           │       ├── HashForSSH2Types.java
    │           │       ├── MAC.java
    │           │       ├── MD5.java
    │           │       └── SHA1.java
    │           ├── log/
    │           │   └── Logger.java
    │           ├── packets/
    │           │   ├── PacketChannelOpenConfirmation.java
    │           │   ├── PacketChannelOpenFailure.java
    │           │   ├── PacketChannelWindowAdjust.java
    │           │   ├── PacketDisconnect.java
    │           │   ├── PacketGlobalCancelForwardRequest.java
    │           │   ├── PacketGlobalForwardRequest.java
    │           │   ├── PacketIgnore.java
    │           │   ├── PacketKexDHInit.java
    │           │   ├── PacketKexDHReply.java
    │           │   ├── PacketKexDhGexGroup.java
    │           │   ├── PacketKexDhGexInit.java
    │           │   ├── PacketKexDhGexReply.java
    │           │   ├── PacketKexDhGexRequest.java
    │           │   ├── PacketKexDhGexRequestOld.java
    │           │   ├── PacketKexInit.java
    │           │   ├── PacketNewKeys.java
    │           │   ├── PacketOpenDirectTCPIPChannel.java
    │           │   ├── PacketOpenSessionChannel.java
    │           │   ├── PacketServiceAccept.java
    │           │   ├── PacketServiceRequest.java
    │           │   ├── PacketSessionExecCommand.java
    │           │   ├── PacketSessionPtyRequest.java
    │           │   ├── PacketSessionStartShell.java
    │           │   ├── PacketSessionSubsystemRequest.java
    │           │   ├── PacketSessionX11Request.java
    │           │   ├── PacketUserauthBanner.java
    │           │   ├── PacketUserauthFailure.java
    │           │   ├── PacketUserauthInfoRequest.java
    │           │   ├── PacketUserauthInfoResponse.java
    │           │   ├── PacketUserauthRequestInteractive.java
    │           │   ├── PacketUserauthRequestNone.java
    │           │   ├── PacketUserauthRequestPassword.java
    │           │   ├── PacketUserauthRequestPublicKey.java
    │           │   ├── Packets.java
    │           │   ├── TypesReader.java
    │           │   └── TypesWriter.java
    │           ├── sftp/
    │           │   ├── AttrTextHints.java
    │           │   ├── AttribBits.java
    │           │   ├── AttribFlags.java
    │           │   ├── AttribPermissions.java
    │           │   ├── AttribTypes.java
    │           │   ├── ErrorCodes.java
    │           │   ├── OpenFlags.java
    │           │   └── Packet.java
    │           ├── signature/
    │           │   ├── DSAPrivateKey.java
    │           │   ├── DSAPublicKey.java
    │           │   ├── DSASHA1Verify.java
    │           │   ├── DSASignature.java
    │           │   ├── RSAPrivateKey.java
    │           │   ├── RSAPublicKey.java
    │           │   ├── RSASHA1Verify.java
    │           │   └── RSASignature.java
    │           ├── transport/
    │           │   ├── ClientServerHello.java
    │           │   ├── KexManager.java
    │           │   ├── KexParameters.java
    │           │   ├── KexState.java
    │           │   ├── MessageHandler.java
    │           │   ├── NegotiateException.java
    │           │   ├── NegotiatedParameters.java
    │           │   ├── TransportConnection.java
    │           │   └── TransportManager.java
    │           └── util/
    │               ├── PasswordField.java
    │               ├── PasswordReader.java
    │               ├── TimeoutService.java
    │               └── Tokenizer.java
    ├── edu/
    │   └── caltech/
    │       └── hep/
    │           └── dcapj/
    │               ├── Config.java
    │               ├── PnfsUtil.java
    │               ├── dCacheFile.java
    │               ├── dCacheFileChannelProviderFactory.java
    │               ├── dCapLayer.java
    │               ├── io/
    │               │   ├── dCacheFileInputStream.java
    │               │   └── dCacheFileOutputStream.java
    │               ├── nio/
    │               │   └── dCacheFileChannel.java
    │               ├── test/
    │               │   ├── Main.java
    │               │   ├── Main2.java
    │               │   └── Main3.java
    │               └── util/
    │                   ├── ControlCommandCallback.java
    │                   ├── ControlConnection.java
    │                   ├── DataConnectionCallback.java
    │                   ├── IOCallback.java
    │                   ├── InvalidConfigurationException.java
    │                   ├── Server.java
    │                   └── ServerNIO.java
    ├── lia/
    │   ├── gsi/
    │   │   ├── ClientTest.java
    │   │   ├── FDTGSIServer.java
    │   │   ├── GSIServer.java
    │   │   ├── authz/
    │   │   │   ├── GridMap.java
    │   │   │   ├── GridMapAuthorization.java
    │   │   │   └── LocalMappingAuthorization.java
    │   │   ├── net/
    │   │   │   ├── GSIBaseServer.java
    │   │   │   ├── GSIGssSocketFactory.java
    │   │   │   └── Peer.java
    │   │   └── ssh/
    │   │       ├── GSIAuthenticationClient.java
    │   │       └── TextSSHClient.java
    │   └── util/
    │       └── net/
    │           ├── common/
    │           │   ├── AbstractBPool.java
    │           │   ├── AbstractFDTCloseable.java
    │           │   ├── AbstractFDTIOEntity.java
    │           │   ├── AcceptableTask.java
    │           │   ├── Config.java
    │           │   ├── ControlStream.java
    │           │   ├── DDCopy.java
    │           │   ├── DirectByteBufferPool.java
    │           │   ├── FDTBuffer.java
    │           │   ├── FDTBufferPool.java
    │           │   ├── FDTCloseable.java
    │           │   ├── FDTCommandLine.java
    │           │   ├── FDTVersion.java
    │           │   ├── FileChannelProvider.java
    │           │   ├── FileChannelProviderFactory.java
    │           │   ├── GSISSHControlStream.java
    │           │   ├── HeaderBufferPool.java
    │           │   ├── InvalidFDTParameterException.java
    │           │   ├── KernelTest.java
    │           │   ├── LocalHost.java
    │           │   ├── MassStorage.java
    │           │   ├── MonitoringUtils.java
    │           │   ├── NetMatcher.java
    │           │   ├── NetloggerRecord.java
    │           │   ├── SSHControlStream.java
    │           │   ├── StoragePathDecoder.java
    │           │   ├── SystemLoadMonitor.java
    │           │   ├── Test.java
    │           │   ├── Test2MD5Sum.java
    │           │   ├── Utils.java
    │           │   └── usage
    │           ├── copy/
    │           │   ├── Accountable.java
    │           │   ├── AccountableEntity.java
    │           │   ├── FDT.java
    │           │   ├── FDT.manifest
    │           │   ├── FDTMain.java
    │           │   ├── FDTReaderSession.java
    │           │   ├── FDTServer.java
    │           │   ├── FDTSession.java
    │           │   ├── FDTSessionManager.java
    │           │   ├── FDTWriterSession.java
    │           │   ├── FileBlock.java
    │           │   ├── FileBlockConsumer.java
    │           │   ├── FileBlockProducer.java
    │           │   ├── FileReaderSession.java
    │           │   ├── FileSession.java
    │           │   ├── FileWriterSession.java
    │           │   ├── IOSession.java
    │           │   ├── PartitionMap.java
    │           │   ├── PosixFSFileChannelProviderFactory.java
    │           │   ├── disk/
    │           │   │   ├── DiskReaderManager.java
    │           │   │   ├── DiskReaderTask.java
    │           │   │   ├── DiskWriterManager.java
    │           │   │   ├── DiskWriterTask.java
    │           │   │   ├── GenericDiskManager.java
    │           │   │   ├── GenericDiskTask.java
    │           │   │   └── ResumeManager.java
    │           │   ├── filters/
    │           │   │   ├── Postprocessor.java
    │           │   │   ├── Preprocessor.java
    │           │   │   ├── ProcessorInfo.java
    │           │   │   └── examples/
    │           │   │       ├── FirewallFileExtension.java
    │           │   │       ├── FirewallFileNames.java
    │           │   │       ├── FixUserHome.java
    │           │   │       ├── PostRename.java
    │           │   │       ├── PostZipFilter.java
    │           │   │       ├── PreRename.java
    │           │   │       └── PreZipFilter.java
    │           │   ├── gui/
    │           │   │   ├── AboutDialog.java
    │           │   │   ├── ClientSessionManager.java
    │           │   │   ├── ConnectDialog.java
    │           │   │   ├── CustomLogHandler.java
    │           │   │   ├── CustomPrintStream.java
    │           │   │   ├── DummyRemoteSessionManager.java
    │           │   │   ├── EnhancedJPanel.java
    │           │   │   ├── FDTPropsDialog.java
    │           │   │   ├── FolderFrame.java
    │           │   │   ├── FolderTable.java
    │           │   │   ├── GUISSHControlStream.java
    │           │   │   ├── HelpDialog.java
    │           │   │   ├── PreferencesHandler.java
    │           │   │   ├── ProgressBarUI.java
    │           │   │   ├── RemoteSessionManager.java
    │           │   │   ├── StatusBar.java
    │           │   │   ├── TransferMonitor.java
    │           │   │   └── session/
    │           │   │       ├── LocalSession.java
    │           │   │       ├── RemoteSession.java
    │           │   │       └── Session.java
    │           │   ├── monitoring/
    │           │   │   ├── ApMonReportingTask.java
    │           │   │   ├── ClientTransportMonitorTask.java
    │           │   │   ├── ConsoleReportingTask.java
    │           │   │   ├── DiskReaderManagerMonitoringTask.java
    │           │   │   ├── DiskWriterManagerMonitoringTask.java
    │           │   │   ├── DiskWriterMonitoringTask.java
    │           │   │   ├── FDTInternalMonitoringTask.java
    │           │   │   ├── FDTReportingTask.java
    │           │   │   ├── FDTSessionMonitoringTask.java
    │           │   │   ├── NetSessionMonitoringTask.java
    │           │   │   ├── base/
    │           │   │   │   └── AbstractAccountableMonitoringTask.java
    │           │   │   ├── jmx/
    │           │   │   │   ├── DBPoolJMX.java
    │           │   │   │   └── DBPoolJMXMBean.java
    │           │   │   └── lisa/
    │           │   │       ├── CmdCheckerTask.java
    │           │   │       ├── HostPropertiesMonitor.java
    │           │   │       ├── LISAReportingTask.java
    │           │   │       ├── LisaCtrlNotifier.java
    │           │   │       ├── MacHostPropertiesMonitor.java
    │           │   │       ├── MonClient.java
    │           │   │       ├── ProcReader.java
    │           │   │       ├── cmdExec.java
    │           │   │       ├── net/
    │           │   │       │   ├── PatternUtil.java
    │           │   │       │   ├── Statistics.java
    │           │   │       │   ├── dev/
    │           │   │       │   │   ├── InterfaceHandler.java
    │           │   │       │   │   ├── InterfaceStatistics.java
    │           │   │       │   │   ├── InterfaceStatisticsStatic.java
    │           │   │       │   │   ├── MTUSet.java
    │           │   │       │   │   └── TXQueueLenSet.java
    │           │   │       │   ├── netstat/
    │           │   │       │   │   ├── Connection.java
    │           │   │       │   │   ├── Netstat.java
    │           │   │       │   │   └── NetstatHandler.java
    │           │   │       │   └── statistics/
    │           │   │       │       ├── IPStatistics.java
    │           │   │       │       ├── StatisticsHandler.java
    │           │   │       │       ├── TCPExtStatistics.java
    │           │   │       │       ├── TCPStatistics.java
    │           │   │       │       └── UDPStatistics.java
    │           │   │       └── xdr/
    │           │   │           ├── SocketFactory.java
    │           │   │           ├── XDRClient.java
    │           │   │           ├── XDRDataInput.java
    │           │   │           ├── XDRDataOutput.java
    │           │   │           ├── XDRGenericComm.java
    │           │   │           ├── XDRInputStream.java
    │           │   │           ├── XDRMLMappings.java
    │           │   │           ├── XDRMessage.java
    │           │   │           ├── XDRMessageNotifier.java
    │           │   │           ├── XDRNamedPipe.java
    │           │   │           ├── XDROutputStream.java
    │           │   │           ├── XDRRandomAccessFile.java
    │           │   │           ├── XDRSerializable.java
    │           │   │           └── XDRTcpSocket.java
    │           │   └── transport/
    │           │       ├── ControlChannel.java
    │           │       ├── ControlChannelNotifier.java
    │           │       ├── CtrlMsg.java
    │           │       ├── FDTKeyAttachement.java
    │           │       ├── FDTListFilesMsg.java
    │           │       ├── FDTProcolException.java
    │           │       ├── FDTReaderKeyAttachement.java
    │           │       ├── FDTSessionConfigMsg.java
    │           │       ├── FDTWriterKeyAttachement.java
    │           │       ├── FDTWriterKeyAttachementComparator.java
    │           │       ├── PingDaemon.java
    │           │       ├── SocketReaderTask.java
    │           │       ├── SocketTask.java
    │           │       ├── SocketWriterTask.java
    │           │       ├── SpeedLimitManager.java
    │           │       ├── SpeedLimiter.java
    │           │       ├── TCPSessionReader.java
    │           │       ├── TCPSessionWriter.java
    │           │       ├── TCPTransportProvider.java
    │           │       ├── gui/
    │           │       │   ├── FileHandler.java
    │           │       │   ├── GUIControlChannel.java
    │           │       │   ├── GUIControlChannelNotifier.java
    │           │       │   ├── GUIMessage.java
    │           │       │   └── ServerSessionManager.java
    │           │       └── internal/
    │           │           ├── FDTSelectionKey.java
    │           │           ├── SelectionHandler.java
    │           │           └── SelectionManager.java
    │           └── jiperf/
    │               ├── ByteBufferPool.java
    │               ├── JIperf.java
    │               ├── JIperfClient.java
    │               ├── JIperfServer.java
    │               ├── control/
    │               │   ├── ControlStream.java
    │               │   ├── StreamConsumer.java
    │               │   └── StreamPumper.java
    │               └── test/
    │                   └── FDTNetPerf.java
    └── org/
        └── apache/
            └── commons/
                ├── cli/
                │   ├── AlreadySelectedException.java
                │   ├── BasicParser.java
                │   ├── CommandLine.java
                │   ├── CommandLineParser.java
                │   ├── GnuParser.java
                │   ├── HelpFormatter.java
                │   ├── MissingArgumentException.java
                │   ├── MissingOptionException.java
                │   ├── Option.java
                │   ├── OptionBuilder.java
                │   ├── OptionGroup.java
                │   ├── Options.java
                │   ├── ParseException.java
                │   ├── Parser.java
                │   ├── PatternOptionBuilder.java
                │   ├── PosixParser.java
                │   ├── TypeHandler.java
                │   ├── UnrecognizedOptionException.java
                │   ├── overview.html
                │   └── package.html
                └── lang/
                    └── math/
                        └── NumberUtils.java
Download .txt
Showing preview only (351K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3917 symbols across 355 files)

FILE: open_direct.c
  function open64 (line 47) | int open64(const char *file, int flags, ...)

FILE: src/apmon/ApMon.java
  class ApMon (line 65) | public class ApMon {
    method ApMon (line 358) | public ApMon(String filename) throws ApMonException, SocketException, ...
    method ApMon (line 375) | public ApMon(Vector destList) throws ApMonException, SocketException, ...
    method ApMon (line 391) | public ApMon(Vector destAddresses, Vector destPorts) throws ApMonExcep...
    method ApMon (line 406) | public ApMon(Vector destAddresses, Vector destPorts, Vector destPasswd...
    method setLogLevel (line 416) | public static void setLogLevel(String newLevel_s) {
    method getPID (line 439) | public static int getPID() {
    method addJobToMonitor (line 451) | public void addJobToMonitor(int pid, String workDir, String clusterNam...
    method removeJobToMonitor (line 462) | public void removeJobToMonitor(int pid) {
    method setMonitorClusterNode (line 476) | public void setMonitorClusterNode(String cName, String nName) {
    method initialize (line 493) | void initialize(String filename, boolean firstTime) throws ApMonExcept...
    method initialize (line 528) | void initialize(Vector destList, boolean firstTime) throws ApMonExcept...
    method loadFile (line 578) | void loadFile(String filename, Vector destAddresses, Vector destPorts,...
    method loadURL (line 616) | void loadURL(String url, Vector destAddresses, Vector destPorts, Vecto...
    method addToDestinations (line 665) | void addToDestinations(String line, Vector destAddresses, Vector destP...
    method arrayInit (line 706) | void arrayInit(Vector destAddresses, Vector destPorts, Vector destPass...
    method arrayInit (line 721) | void arrayInit(Vector destAddresses, Vector destPorts, Vector destPass...
    method sendTimedParameters (line 804) | public void sendTimedParameters(String clusterName, String nodeName, i...
    method sendTimedParameters (line 819) | public void sendTimedParameters(String clusterName, String nodeName, i...
    method sendParameters (line 915) | public void sendParameters(String clusterName, String nodeName, int nP...
    method sendParameters (line 929) | public void sendParameters(String clusterName, String nodeName, int nP...
    method sendParameter (line 936) | public void sendParameter(String clusterName, String nodeName, String ...
    method sendParameter (line 951) | public void sendParameter(String clusterName, String nodeName, String ...
    method sendTimedParameter (line 963) | public void sendTimedParameter(String clusterName, String nodeName, St...
    method sendTimedParameter (line 979) | public void sendTimedParameter(String clusterName, String nodeName, St...
    method sendParameter (line 999) | public void sendParameter(String clusterName, String nodeName, String ...
    method sendTimedParameter (line 1015) | public void sendTimedParameter(String clusterName, String nodeName, St...
    method sendParameter (line 1030) | public void sendParameter(String clusterName, String nodeName, String ...
    method sendTimedParameter (line 1047) | public void sendTimedParameter(String clusterName, String nodeName, St...
    method ensureSize (line 1055) | void ensureSize(ByteArrayOutputStream baos) throws ApMonException {
    method encodeParams (line 1068) | void encodeParams(int nParams, Vector paramNames, Vector paramValues, ...
    method getConfCheck (line 1136) | public boolean getConfCheck() {
    method setConfRecheck (line 1151) | public void setConfRecheck(boolean confCheck, long interval) {
    method getRecheckInterval (line 1191) | public long getRecheckInterval() {
    method setRecheckInterval (line 1204) | public void setRecheckInterval(long val) {
    method getCrtRecheckInterval (line 1215) | long getCrtRecheckInterval() {
    method setCrtRecheckInterval (line 1223) | void setCrtRecheckInterval(long val) {
    method setJobMonitoring (line 1235) | public void setJobMonitoring(boolean jobMonitoring, long interval) {
    method getJobMonitorInterval (line 1270) | public long getJobMonitorInterval() {
    method getJobMonitoring (line 1281) | public boolean getJobMonitoring() {
    method setSysMonitoring (line 1295) | public void setSysMonitoring(boolean sysMonitoring, long interval) {
    method getSysMonitorInterval (line 1332) | public long getSysMonitorInterval() {
    method getSysMonitoring (line 1344) | public boolean getSysMonitoring() {
    method setGenMonitoring (line 1360) | public void setGenMonitoring(boolean genMonitoring, int nIntervals) {
    method getGenMonitoring (line 1384) | public boolean getGenMonitoring() {
    method getSystemParameter (line 1392) | public Double getSystemParameter(String paramName) {
    method setBackgroundThread (line 1430) | void setBackgroundThread(boolean val) {
    method setMaxMsgRate (line 1472) | public void setMaxMsgRate(int maxRate) {
    method stopIt (line 1481) | public void stopIt() {
    method initMonitoring (line 1501) | void initMonitoring() {
    method parseXApMonLine (line 1617) | protected void parseXApMonLine(String line) {
    method setSenderRef (line 1713) | void setSenderRef(Hashtable s) {
    method initSenderRef (line 1717) | void initSenderRef() {
    method updateSEQ_NR (line 1722) | void updateSEQ_NR() {
    method printParameters (line 1733) | String printParameters(Vector paramNames, Vector paramValues) {
    method shouldSend (line 1746) | public boolean shouldSend() {
    method getMyHostname (line 1782) | public String getMyHostname() {

FILE: src/apmon/ApMonException.java
  class ApMonException (line 37) | public class ApMonException extends Exception {
    method ApMonException (line 41) | public ApMonException(String s) {

FILE: src/apmon/ApMonMonitoringConstants.java
  class ApMonMonitoringConstants (line 39) | public final class ApMonMonitoringConstants {
    method getName (line 289) | private static String getName(Long param, HashMap hm) {
    method getIdx (line 302) | private static Long getIdx(String name, HashMap hm) {
    method getMLParamName (line 307) | private static String getMLParamName(Long idx, HashMap hm) {
    method getSysName (line 313) | public static String getSysName(Long param) {
    method getSysIdx (line 317) | public static Long getSysIdx(String name) {
    method getSysMLParamName (line 321) | public static String getSysMLParamName(Long idx) {
    method getSysMLParamName (line 325) | public static String getSysMLParamName(long idx) {
    method getGenName (line 329) | public static String getGenName(Long param) {
    method getGenIdx (line 333) | public static Long getGenIdx(String name) {
    method getGenMLParamName (line 337) | public static String getGenMLParamName(Long idx) {
    method getGenMLParamName (line 341) | public static String getGenMLParamName(long idx) {
    method getJobName (line 345) | public static String getJobName(Long param) {
    method getJobIdx (line 349) | public static Long getJobIdx(String name) {
    method getJobMLParamName (line 353) | public static String getJobMLParamName(Long idx) {
    method getJobMLParamName (line 357) | public static String getJobMLParamName(long idx) {

FILE: src/apmon/BkThread.java
  class BkThread (line 53) | class BkThread extends Thread {
    method BkThread (line 73) | public BkThread(ApMon apm) {
    method getCpuInfo (line 79) | public static Hashtable getCpuInfo() throws IOException, ApMonException {
    method getBootTime (line 156) | public static long getBootTime() throws IOException, ApMonException {
    method getUpTime (line 199) | public static double getUpTime() throws IOException, ApMonException {
    method getNumCPUs (line 240) | public static int getNumCPUs() throws IOException, ApMonException {
    method getNetConfig (line 276) | public static void getNetConfig(Vector netInterfaces, Vector ips) thro...
    method stopIt (line 321) | void stopIt() {
    method isActive_Sys (line 328) | boolean isActive_Sys(long param) {
    method isActive_Sys (line 332) | boolean isActive_Sys(Long param) {
    method isActive_Job (line 339) | boolean isActive_Job(long param) {
    method isActive_Job (line 343) | boolean isActive_Job(Long param) {
    method isActive_Gen (line 350) | boolean isActive_Gen(long param) {
    method isActive_Gen (line 354) | boolean isActive_Gen(Long param) {
    method sendJobInfo (line 358) | void sendJobInfo() {
    method sendOneJobInfo (line 380) | void sendOneJobInfo(MonitoredJob monJob) {
    method sendSysInfo (line 452) | void sendSysInfo() {
    method sendGeneralInfo (line 616) | void sendGeneralInfo() {
    method run (line 774) | public void run() {

FILE: src/apmon/MonitoredJob.java
  class MonitoredJob (line 46) | public class MonitoredJob {
    method MonitoredJob (line 57) | public MonitoredJob(int _pid, String _workDir, String _clusterName, St...
    method parsePSTime (line 65) | public static long parsePSTime(String s) {
    method getPid (line 93) | public int getPid() {
    method readJobDiskUsage (line 97) | public HashMap readJobDiskUsage() {
    method getChildren (line 134) | public Vector getChildren() {
    method readJobInfo (line 187) | public HashMap readJobInfo() throws IOException {
    method countOpenFD (line 275) | public long countOpenFD(long pid) {
    method toString (line 299) | public String toString() {

FILE: src/apmon/XDRDataOutput.java
  type XDRDataOutput (line 13) | public interface XDRDataOutput extends DataOutput {
    method pad (line 14) | void pad() throws IOException;
    method writeDoubleArray (line 16) | void writeDoubleArray(double[] array) throws IOException;
    method writeDoubleArray (line 18) | void writeDoubleArray(double[] array, int start, int n) throws IOExcep...
    method writeFloatArray (line 20) | void writeFloatArray(float[] array) throws IOException;
    method writeFloatArray (line 22) | void writeFloatArray(float[] array, int start, int n) throws IOException;
    method writeIntArray (line 24) | void writeIntArray(int[] array) throws IOException;
    method writeIntArray (line 26) | void writeIntArray(int[] array, int start, int n) throws IOException;
    method writeString (line 31) | void writeString(String string) throws IOException;
    method writeStringChars (line 36) | void writeStringChars(String string) throws IOException;

FILE: src/apmon/XDROutputStream.java
  class XDROutputStream (line 20) | public class XDROutputStream extends DataOutputStream implements XDRData...
    method XDROutputStream (line 24) | public XDROutputStream(OutputStream out) {
    method writeString (line 29) | public void writeString(String s) throws IOException {
    method writeStringChars (line 36) | public void writeStringChars(String s) throws IOException {
    method writeIntArray (line 42) | public void writeIntArray(int[] array) throws IOException {
    method writeIntArray (line 47) | public void writeIntArray(int[] array, int start, int n) throws IOExce...
    method writeDoubleArray (line 52) | public void writeDoubleArray(double[] array) throws IOException {
    method writeDoubleArray (line 57) | public void writeDoubleArray(double[] array, int start, int n) throws ...
    method writeFloatArray (line 62) | public void writeFloatArray(float[] array) throws IOException {
    method writeFloatArray (line 67) | public void writeFloatArray(float[] array, int start, int n) throws IO...
    method pad (line 75) | public void pad() throws IOException {
    method getBytesWritten (line 80) | public long getBytesWritten() {
    class CountedOutputStream (line 84) | private static final class CountedOutputStream extends FilterOutputStr...
      method CountedOutputStream (line 87) | CountedOutputStream(OutputStream out) {
      method write (line 91) | public void write(int b) throws IOException {
      method write (line 96) | public void write(byte[] data) throws IOException {
      method write (line 101) | public void write(byte[] data, int off, int len) throws IOException {
      method getBytesWritten (line 106) | public long getBytesWritten() {

FILE: src/apmon/host/HostPropertiesMonitor.java
  class HostPropertiesMonitor (line 6) | public class HostPropertiesMonitor {
    method getHashParams (line 22) | public HashMap getHashParams() {
    method getMacAddresses (line 30) | public native String getMacAddresses();
    method getMacAddressesCall (line 32) | public String getMacAddressesCall() {
    method update (line 42) | public native void update();
    method updateCall (line 44) | public void updateCall() {
    method getCpuUsage (line 57) | public native String getCpuUsage();
    method getCpuUsageCall (line 59) | public String getCpuUsageCall() {
    method getCpuUSR (line 70) | public native String getCpuUSR();
    method getCpuUSRCall (line 72) | public String getCpuUSRCall() {
    method getCpuSYS (line 82) | public native String getCpuSYS();
    method getCpuSYSCall (line 84) | public String getCpuSYSCall() {
    method getCpuNICE (line 94) | public native String getCpuNICE();
    method getCpuNICECall (line 96) | public String getCpuNICECall() {
    method getCpuIDLE (line 106) | public native String getCpuIDLE();
    method getCpuIDLECall (line 108) | public String getCpuIDLECall() {
    method getPagesIn (line 118) | public native String getPagesIn();
    method getPagesInCall (line 120) | public String getPagesInCall() {
    method getPagesOut (line 130) | public native String getPagesOut();
    method getPagesOutCall (line 132) | public String getPagesOutCall() {
    method getMemUsage (line 142) | public native String getMemUsage();
    method getMemUsageCall (line 144) | public String getMemUsageCall() {
    method getMemUsed (line 154) | public native String getMemUsed();
    method getMemUsedCall (line 156) | public String getMemUsedCall() {
    method getMemTotalCall (line 167) | public String getMemTotalCall() {
    method getSwapFreeCall (line 176) | public String getSwapFreeCall() {
    method getSwapTotalCall (line 184) | public String getSwapTotalCall() {
    method getMemFree (line 192) | public native String getMemFree();
    method getMemFreeCall (line 194) | public String getMemFreeCall() {
    method getDiskIO (line 204) | public native String getDiskIO();
    method getDiskIOCall (line 206) | public String getDiskIOCall() {
    method getDiskTotal (line 216) | public native String getDiskTotal();
    method getDiskTotalCall (line 218) | public String getDiskTotalCall() {
    method getDiskUsed (line 228) | public native String getDiskUsed();
    method getDiskUsedCall (line 230) | public String getDiskUsedCall() {
    method getDiskFree (line 240) | public native String getDiskFree();
    method getDiskFreeCall (line 242) | public String getDiskFreeCall() {
    method getNoProcesses (line 252) | public native String getNoProcesses();
    method getNoProcessesCall (line 254) | public String getNoProcessesCall() {
    method getLoad1 (line 264) | public native String getLoad1();
    method getLoad1Call (line 266) | public String getLoad1Call() {
    method getLoad5 (line 276) | public native String getLoad5();
    method getLoad5Call (line 278) | public String getLoad5Call() {
    method getLoad15 (line 288) | public native String getLoad15();
    method getLoad15Call (line 290) | public String getLoad15Call() {
    method getNetInterfaces (line 300) | public native String[] getNetInterfaces();
    method getNetInterfacesCall (line 302) | public String[] getNetInterfacesCall() {
    method getNetIn (line 312) | public native String getNetIn(String ifName);
    method getNetInCall (line 314) | public String getNetInCall(String ifName) {
    method getNetOut (line 324) | public native String getNetOut(String ifName);
    method getNetOutCall (line 326) | public String getNetOutCall(String ifName) {
    method getProcessesState (line 336) | public native Hashtable getProcessesState();
    method getPState (line 338) | public Hashtable getPState() {
    method getNetSockets (line 348) | public native Hashtable getNetSockets();
    method getSockets (line 350) | public Hashtable getSockets() {
    method getTcpDetails (line 360) | public native Hashtable getTcpDetails();
    method getTCPDetails (line 362) | public Hashtable getTCPDetails() {
    method stopIt (line 372) | public void stopIt() {

FILE: src/apmon/host/MacHostPropertiesMonitor.java
  class MacHostPropertiesMonitor (line 13) | public class MacHostPropertiesMonitor {
    method MacHostPropertiesMonitor (line 48) | public MacHostPropertiesMonitor() {
    method getMacAddresses (line 104) | public String getMacAddresses() {
    method update (line 108) | public void update() {
    method parseIfConfig (line 127) | private void parseIfConfig(String toParse) {
    method parseDf (line 138) | private void parseDf(String toParse) {
    method indexOfUnitLetter (line 182) | private int indexOfUnitLetter(String inside, int from) {
    method lastIndexOfUnitLetter (line 205) | private int lastIndexOfUnitLetter(String inside, int from) {
    method howMuchKiloBytes (line 228) | private double howMuchKiloBytes(char a) {
    method howMuchMegaBytes (line 246) | private double howMuchMegaBytes(char a) {
    method parseNetstat (line 264) | private void parseNetstat() {
    method parseTop (line 337) | private void parseTop(String toParse) {
    method getProcessesState (line 472) | public Hashtable getProcessesState() {
    method getCpuUsage (line 508) | public String getCpuUsage() {
    method getCpuUSR (line 512) | public String getCpuUSR() {
    method getCpuSYS (line 516) | public String getCpuSYS() {
    method getCpuNICE (line 520) | public String getCpuNICE() {
    method getCpuIDLE (line 524) | public String getCpuIDLE() {
    method getPagesIn (line 528) | public String getPagesIn() {
    method getPagesOut (line 532) | public String getPagesOut() {
    method getMemUsage (line 536) | public String getMemUsage() {
    method getMemUsed (line 540) | public String getMemUsed() {
    method getMemFree (line 544) | public String getMemFree() {
    method getDiskIO (line 548) | public String getDiskIO() {
    method getDiskTotal (line 552) | public String getDiskTotal() {
    method getDiskUsed (line 556) | public String getDiskUsed() {
    method getDiskFree (line 560) | public String getDiskFree() {
    method getNoProcesses (line 564) | public String getNoProcesses() {
    method getNetSockets (line 568) | public Hashtable getNetSockets() {
    method getTcpDetails (line 572) | public Hashtable getTcpDetails() {
    method getLoad1 (line 576) | public String getLoad1() {
    method getLoad5 (line 580) | public String getLoad5() {
    method getLoad15 (line 584) | public String getLoad15() {
    method getNetInterfaces (line 588) | public String[] getNetInterfaces() {
    method getNetIn (line 592) | public String getNetIn(String ifName) {
    method getNetOut (line 599) | public String getNetOut(String ifName) {

FILE: src/apmon/host/Parser.java
  class Parser (line 8) | public class Parser {
    method Parser (line 14) | public Parser() {
    method parse (line 17) | public void parse(String text) {
    method parseAux (line 22) | public void parseAux(String text) {
    method parseFromFile (line 27) | public void parseFromFile(String fileName) {
    method nextLine (line 58) | public String nextLine() {
    method nextAuxLine (line 69) | public String nextAuxLine() {
    method nextToken (line 80) | public String nextToken() {
    method hasMoreTokens (line 91) | public boolean hasMoreTokens() {
    method nextToken (line 95) | public String nextToken(String token) {
    method hasMoreAuxTokens (line 106) | public boolean hasMoreAuxTokens() {
    method nextAuxToken (line 110) | public String nextAuxToken() {
    method nextAuxToken (line 121) | public String nextAuxToken(String token) {
    method getTextAfterToken (line 132) | public String getTextAfterToken(String text, String start) {
    method getTextBeforeToken (line 138) | public String getTextBeforeToken(String text, String end) {
    method getTextBetween (line 144) | public String getTextBetween(String text, String start, String end) {
    method listFiles (line 153) | public String[] listFiles(String directory) {

FILE: src/apmon/host/ProcReader.java
  class ProcReader (line 15) | public class ProcReader {
    method ProcReader (line 111) | public ProcReader() {
    method main (line 125) | public static void main(String[] args) {
    method addNetInterface (line 179) | private void addNetInterface(String netInterface) {
    method update (line 196) | public synchronized void update() {
    method getHashedValues (line 935) | public synchronized HashMap getHashedValues() {
    method getMacAddress (line 939) | public synchronized String getMacAddress() {
    method getCPUUsage (line 945) | public synchronized String getCPUUsage() {
    method getCPUUsr (line 951) | public synchronized String getCPUUsr() {
    method getCPUSys (line 957) | public synchronized String getCPUSys() {
    method getCPUNice (line 963) | public synchronized String getCPUNice() {
    method getCPUIdle (line 969) | public synchronized String getCPUIdle() {
    method getPagesIn (line 975) | public synchronized String getPagesIn() {
    method getPagesOut (line 981) | public synchronized String getPagesOut() {
    method getMemUsage (line 987) | public synchronized String getMemUsage() {
    method getMemTotal (line 993) | public synchronized String getMemTotal() {
    method getMemUsed (line 999) | public synchronized String getMemUsed() {
    method getMemFree (line 1005) | public synchronized String getMemFree() {
    method getSwapTotal (line 1011) | public synchronized String getSwapTotal() {
    method getSwapFree (line 1017) | public synchronized String getSwapFree() {
    method getDiskIO (line 1023) | public synchronized String getDiskIO() {
    method getDiskTotal (line 1029) | public synchronized String getDiskTotal() {
    method getDiskUsed (line 1035) | public synchronized String getDiskUsed() {
    method getDiskFree (line 1041) | public synchronized String getDiskFree() {
    method getDiskUsage (line 1047) | public synchronized String getDiskUsage() {
    method getNoProcesses (line 1053) | public synchronized String getNoProcesses() {
    method getLoad1 (line 1059) | public synchronized String getLoad1() {
    method getLoad5 (line 1065) | public synchronized String getLoad5() {
    method getProcessesState (line 1071) | public synchronized Hashtable getProcessesState() {
    method getNetSockets (line 1075) | public synchronized Hashtable getNetSockets() {
    method getTcpDetails (line 1079) | public synchronized Hashtable getTcpDetails() {
    method getLoad15 (line 1083) | public synchronized String getLoad15() {
    method getNetInterfaces (line 1089) | public synchronized String[] getNetInterfaces() {
    method getNetIn (line 1093) | public synchronized String getNetIn(String netInterface) {
    method getNetOut (line 1103) | public synchronized String getNetOut(String netInterface) {
    method stopIt (line 1113) | public void stopIt() {
    method diffWithOverflowCheck (line 1122) | public long diffWithOverflowCheck(long newVal, long oldVal) {

FILE: src/apmon/host/cmdExec.java
  class cmdExec (line 10) | public class cmdExec {
    method cmdExec (line 24) | public cmdExec() {
    method setCmd (line 39) | public void setCmd(String cmd) {
    method setTimeout (line 44) | public void setTimeout(long timeout) {
    method procOutput (line 49) | public BufferedReader procOutput(String cmd) {
    method exeHomeOutput (line 84) | public BufferedReader exeHomeOutput(String cmd) {
    method stopModule (line 119) | public void stopModule() {
    method readProc (line 126) | public BufferedReader readProc(String filePath) {
    method isError (line 136) | public boolean isError() {
    method executeCommand (line 141) | public String executeCommand(String command, String expect) {
    method executeCommand (line 244) | public String executeCommand(String command, String expect, int howMan...
    method getStringOccurences (line 340) | protected int getStringOccurences(String text, String token) {
    method executeCommandReality (line 353) | public String executeCommandReality(String command, String expect) {
    method executeCommandReality (line 455) | public String executeCommandReality(String command, String expect, int...
    method getStreamGobbler (line 557) | public StreamGobbler getStreamGobbler() {
    method addStreamGobbler (line 569) | public void addStreamGobbler(StreamGobbler stream) {
    method getStreamRealGobbler (line 579) | public StreamRealGobbler getStreamRealGobbler() {
    method addStreamRealGobbler (line 590) | public void addStreamRealGobbler(StreamRealGobbler stream) {
    method stopIt (line 600) | public void stopIt() {
    class StreamGobbler (line 620) | class StreamGobbler extends Thread {
      method StreamGobbler (line 628) | public StreamGobbler(InputStream is) {
      method setInputStream (line 635) | public void setInputStream(InputStream is) {
      method getOutput (line 646) | public String getOutput() {
      method forceAllOutput (line 651) | public synchronized String forceAllOutput() {
      method stopIt (line 659) | public void stopIt() {
      method stopItForever (line 663) | public void stopItForever() {
      method run (line 670) | public void run() {
    class StreamRealGobbler (line 705) | class StreamRealGobbler extends Thread {
      method StreamRealGobbler (line 713) | public StreamRealGobbler(InputStream is) {
      method setInputStream (line 720) | public void setInputStream(InputStream is) {
      method getOutput (line 731) | public String getOutput() {
      method forceAllOutput (line 736) | public synchronized String forceAllOutput() {
      method stopIt (line 743) | public void stopIt() {
      method stopItForever (line 747) | public void stopItForever() {
      method run (line 754) | public void run() {

FILE: src/ch/ethz/ssh2/ChannelCondition.java
  type ChannelCondition (line 12) | public abstract interface ChannelCondition {

FILE: src/ch/ethz/ssh2/Connection.java
  class Connection (line 38) | public class Connection {
    method Connection (line 68) | public Connection(String hostname) {
    method Connection (line 79) | public Connection(String hostname, int port) {
    method getAvailableCiphers (line 89) | public static synchronized String[] getAvailableCiphers() {
    method getAvailableMACs (line 98) | public static synchronized String[] getAvailableMACs() {
    method getAvailableServerHostKeyAlgorithms (line 107) | public static synchronized String[] getAvailableServerHostKeyAlgorithm...
    method authenticateWithDSA (line 136) | public synchronized boolean authenticateWithDSA(String user, String pe...
    method authenticateWithKeyboardInteractive (line 170) | public synchronized boolean authenticateWithKeyboardInteractive(String...
    method authenticateWithKeyboardInteractive (line 205) | public synchronized boolean authenticateWithKeyboardInteractive(String...
    method authenticateWithPassword (line 254) | public synchronized boolean authenticateWithPassword(String user, Stri...
    method authenticateWithPublicKey (line 316) | public synchronized boolean authenticateWithPublicKey(String user, cha...
    method authenticateWithPublicKey (line 361) | public synchronized boolean authenticateWithPublicKey(String user, Fil...
    method addConnectionMonitor (line 396) | public synchronized void addConnectionMonitor(ConnectionMonitor cmon) {
    method close (line 412) | public synchronized void close() {
    method close (line 417) | private void close(Throwable t, boolean hard) {
    method connect (line 436) | public synchronized ConnectionInfo connect() throws IOException {
    method connect (line 446) | public synchronized ConnectionInfo connect(ServerHostKeyVerifier verif...
    method connect (line 513) | public synchronized ConnectionInfo connect(ServerHostKeyVerifier verif...
    method createLocalPortForwarder (line 639) | public synchronized LocalPortForwarder createLocalPortForwarder(int lo...
    method createLocalStreamForwarder (line 661) | public synchronized LocalStreamForwarder createLocalStreamForwarder(St...
    method createSCPClient (line 684) | public synchronized SCPClient createSCPClient() throws IOException {
    method forceKeyExchange (line 706) | public synchronized void forceKeyExchange() throws IOException {
    method getHostname (line 718) | public synchronized String getHostname() {
    method getPort (line 727) | public synchronized int getPort() {
    method getConnectionInfo (line 739) | public synchronized ConnectionInfo getConnectionInfo() throws IOExcept...
    method getRemainingAuthMethods (line 768) | public synchronized String[] getRemainingAuthMethods(String user) thro...
    method isAuthenticationComplete (line 794) | public synchronized boolean isAuthenticationComplete() {
    method isAuthenticationPartialSuccess (line 811) | public synchronized boolean isAuthenticationPartialSuccess() {
    method isAuthMethodAvailable (line 829) | public synchronized boolean isAuthMethodAvailable(String user, String ...
    method getOrCreateSecureRND (line 843) | private final SecureRandom getOrCreateSecureRND() {
    method openSession (line 858) | public synchronized Session openSession() throws IOException {
    method removeDuplicates (line 876) | private String[] removeDuplicates(String[] list) {
    method setClient2ServerCiphers (line 916) | public synchronized void setClient2ServerCiphers(String[] ciphers) {
    method setClient2ServerMACs (line 929) | public synchronized void setClient2ServerMACs(String[] macs) {
    method setDHGexParameters (line 944) | public synchronized void setDHGexParameters(DHGexParameters dgp) {
    method setServer2ClientCiphers (line 956) | public synchronized void setServer2ClientCiphers(String[] ciphers) {
    method setServer2ClientMACs (line 969) | public synchronized void setServer2ClientMACs(String[] macs) {
    method setServerHostKeyAlgorithms (line 990) | public synchronized void setServerHostKeyAlgorithms(String[] algos) {
    method setTCPNoDelay (line 1009) | public synchronized void setTCPNoDelay(boolean enable) throws IOExcept...
    method setProxyData (line 1030) | public synchronized void setProxyData(ProxyData proxyData) {
    method requestRemotePortForwarding (line 1071) | public synchronized void requestRemotePortForwarding(String bindAddres...
    method cancelRemotePortForwarding (line 1095) | public synchronized void cancelRemotePortForwarding(int bindPort) thro...
    method setSecureRandom (line 1114) | public synchronized void setSecureRandom(SecureRandom rnd) {

FILE: src/ch/ethz/ssh2/ConnectionInfo.java
  class ConnectionInfo (line 9) | public class ConnectionInfo {

FILE: src/ch/ethz/ssh2/ConnectionMonitor.java
  type ConnectionMonitor (line 11) | public interface ConnectionMonitor {
    method connectionLost (line 30) | public void connectionLost(Throwable reason);

FILE: src/ch/ethz/ssh2/DHGexParameters.java
  class DHGexParameters (line 16) | public class DHGexParameters {
    method DHGexParameters (line 27) | public DHGexParameters() {
    method DHGexParameters (line 39) | public DHGexParameters(int pref_group_len) {
    method DHGexParameters (line 62) | public DHGexParameters(int min_group_len, int pref_group_len, int max_...
    method getMax_group_len (line 89) | public int getMax_group_len() {
    method getMin_group_len (line 99) | public int getMin_group_len() {
    method getPref_group_len (line 108) | public int getPref_group_len() {

FILE: src/ch/ethz/ssh2/HTTPProxyData.java
  class HTTPProxyData (line 12) | public class HTTPProxyData implements ProxyData {
    method HTTPProxyData (line 25) | public HTTPProxyData(String proxyHost, int proxyPort) {
    method HTTPProxyData (line 37) | public HTTPProxyData(String proxyHost, int proxyPort, String proxyUser...
    method HTTPProxyData (line 63) | public HTTPProxyData(String proxyHost, int proxyPort, String proxyUser...

FILE: src/ch/ethz/ssh2/HTTPProxyException.java
  class HTTPProxyException (line 14) | public class HTTPProxyException extends IOException {
    method HTTPProxyException (line 20) | public HTTPProxyException(String httpResponse, int httpErrorCode) {

FILE: src/ch/ethz/ssh2/InteractiveCallback.java
  type InteractiveCallback (line 13) | public interface InteractiveCallback {
    method replyToChallenge (line 45) | public String[] replyToChallenge(String name, String instruction, int ...

FILE: src/ch/ethz/ssh2/KnownHosts.java
  class KnownHosts (line 37) | public class KnownHosts {
    method KnownHosts (line 43) | public KnownHosts() {
    method KnownHosts (line 46) | public KnownHosts(char[] knownHostsData) throws IOException {
    method KnownHosts (line 50) | public KnownHosts(File knownHosts) throws IOException {
    method createHashedHostname (line 61) | public static final String createHashedHostname(String hostname) {
    method hmacSha1Hash (line 76) | private static final byte[] hmacSha1Hash(byte[] salt, String hostname) {
    method addHostkeyToFile (line 104) | public final static void addHostkeyToFile(File knownHosts, String[] ho...
    method rawFingerPrint (line 151) | static final private byte[] rawFingerPrint(String type, String keyType...
    method rawToHexFingerprint (line 181) | static final private String rawToHexFingerprint(byte[] fingerprint) {
    method rawToBubblebabbleFingerprint (line 203) | static final private String rawToBubblebabbleFingerprint(byte[] raw) {
    method createHexFingerprint (line 250) | public final static String createHexFingerprint(String keytype, byte[]...
    method createBubblebabbleFingerprint (line 266) | public final static String createBubblebabbleFingerprint(String keytyp...
    method addHostkey (line 282) | public void addHostkey(String hostnames[], String serverHostKeyAlgorit...
    method addHostkeys (line 308) | public void addHostkeys(char[] knownHostsData) throws IOException {
    method addHostkeys (line 318) | public void addHostkeys(File knownHosts) throws IOException {
    method checkHashed (line 322) | private final boolean checkHashed(String entry, String hostname) {
    method checkKey (line 358) | private int checkKey(String remoteHostname, Object remoteKey) {
    method getAllKeys (line 381) | private Vector getAllKeys(String hostname) {
    method getPreferredServerHostkeyAlgorithmOrder (line 412) | public String[] getPreferredServerHostkeyAlgorithmOrder(String hostnam...
    method hostnameMatches (line 436) | private final boolean hostnameMatches(String[] hostpatterns, String ho...
    method initialize (line 493) | private void initialize(char[] knownHostsData) throws IOException {
    method initialize (line 521) | private void initialize(File knownHosts) throws IOException {
    method matchKeys (line 542) | private final boolean matchKeys(Object key1, Object key2) {
    method pseudoRegex (line 578) | private final boolean pseudoRegex(char[] pattern, int i, char[] match,...
    method recommendHostkeyAlgorithms (line 623) | private String[] recommendHostkeyAlgorithms(String hostname) {
    method verifyHostkey (line 689) | public int verifyHostkey(String hostname, String serverHostKeyAlgorith...
    class KnownHostsEntry (line 725) | private class KnownHostsEntry {
      method KnownHostsEntry (line 729) | KnownHostsEntry(String[] patterns, Object key) {

FILE: src/ch/ethz/ssh2/LocalPortForwarder.java
  class LocalPortForwarder (line 16) | public class LocalPortForwarder {
    method LocalPortForwarder (line 27) | LocalPortForwarder(ChannelManager cm, int local_port, String host_to_c...
    method close (line 44) | public void close() throws IOException {

FILE: src/ch/ethz/ssh2/LocalStreamForwarder.java
  class LocalStreamForwarder (line 19) | public class LocalStreamForwarder {
    method LocalStreamForwarder (line 28) | LocalStreamForwarder(ChannelManager cm, String host_to_connect, int po...
    method getInputStream (line 40) | public InputStream getInputStream() throws IOException {
    method getOutputStream (line 54) | public OutputStream getOutputStream() throws IOException {
    method close (line 68) | public void close() throws IOException {

FILE: src/ch/ethz/ssh2/ProxyData.java
  type ProxyData (line 11) | public abstract interface ProxyData {

FILE: src/ch/ethz/ssh2/SCPClient.java
  class SCPClient (line 17) | public class SCPClient {
    method SCPClient (line 20) | public SCPClient(Connection conn) {
    method readResponse (line 26) | private void readResponse(InputStream is) throws IOException {
    method receiveLine (line 45) | private String receiveLine(InputStream is) throws IOException {
    method parseCLine (line 68) | private LenNamePair parseCLine(String line) throws IOException {
    method sendBytes (line 109) | private void sendBytes(Session sess, byte[] data, String fileName, Str...
    method sendFiles (line 132) | private void sendFiles(Session sess, String[] files, String[] remoteFi...
    method receiveFiles (line 192) | private void receiveFiles(Session sess, OutputStream[] targets) throws...
    method receiveFiles (line 258) | private void receiveFiles(Session sess, String[] files, String target)...
    method put (line 342) | public void put(String localFile, String remoteTargetDirectory) throws...
    method put (line 355) | public void put(String[] localFiles, String remoteTargetDirectory) thr...
    method put (line 368) | public void put(String localFile, String remoteTargetDirectory, String...
    method put (line 382) | public void put(String localFile, String remoteFileName, String remote...
    method put (line 397) | public void put(byte[] data, String remoteFileName, String remoteTarge...
    method put (line 411) | public void put(byte[] data, String remoteFileName, String remoteTarge...
    method put (line 450) | public void put(String[] localFiles, String remoteTargetDirectory, Str...
    method put (line 454) | public void put(String[] localFiles, String[] remoteFiles, String remo...
    method get (line 502) | public void get(String remoteFile, String localTargetDirectory) throws...
    method get (line 515) | public void get(String remoteFile, OutputStream target) throws IOExcep...
    method get (line 519) | private void get(String remoteFiles[], OutputStream[] targets) throws ...
    method get (line 564) | public void get(String remoteFiles[], String localTargetDirectory) thr...
    class LenNamePair (line 599) | class LenNamePair {

FILE: src/ch/ethz/ssh2/SFTPException.java
  class SFTPException (line 15) | public class SFTPException extends IOException {
    method SFTPException (line 21) | SFTPException(String msg, int errorCode) {
    method constructMessage (line 27) | private static String constructMessage(String s, int errorCode) {
    method getServerErrorMessage (line 42) | public String getServerErrorMessage() {
    method getServerErrorCode (line 51) | public int getServerErrorCode() {
    method getServerErrorCodeSymbol (line 60) | public String getServerErrorCodeSymbol() {
    method getServerErrorCodeVerbose (line 74) | public String getServerErrorCodeVerbose() {

FILE: src/ch/ethz/ssh2/SFTPv3Client.java
  class SFTPv3Client (line 55) | public class SFTPv3Client {
    method SFTPv3Client (line 81) | public SFTPv3Client(Connection conn, PrintStream debug) throws IOExcep...
    method SFTPv3Client (line 109) | public SFTPv3Client(Connection conn) throws IOException {
    method getCharset (line 119) | public String getCharset() {
    method setCharset (line 141) | public void setCharset(String charset) throws IOException {
    method checkHandleValidAndOpen (line 155) | private final void checkHandleValidAndOpen(SFTPv3FileHandle handle) th...
    method sendMessage (line 163) | private final void sendMessage(int type, int requestId, byte[] msg, in...
    method sendMessage (line 186) | private final void sendMessage(int type, int requestId, byte[] msg) th...
    method readBytes (line 190) | private final void readBytes(byte[] buff, int pos, int len) throws IOE...
    method receiveMessage (line 213) | private final byte[] receiveMessage(int maxlen) throws IOException {
    method generateNextRequestID (line 230) | private final int generateNextRequestID() {
    method closeHandle (line 236) | private final void closeHandle(byte[] handle) throws IOException {
    method readAttrs (line 247) | private SFTPv3FileAttributes readAttrs(TypesReader tr) throws IOExcept...
    method fstat (line 319) | public SFTPv3FileAttributes fstat(SFTPv3FileHandle handle) throws IOEx...
    method statBoth (line 361) | private SFTPv3FileAttributes statBoth(String path, int statMethod) thr...
    method stat (line 410) | public SFTPv3FileAttributes stat(String path) throws IOException {
    method lstat (line 423) | public SFTPv3FileAttributes lstat(String path) throws IOException {
    method readLink (line 434) | public String readLink(String path) throws IOException {
    method expectStatusOKMessage (line 479) | private void expectStatusOKMessage(int id) throws IOException {
    method setstat (line 515) | public void setstat(String path, SFTPv3FileAttributes attr) throws IOE...
    method fsetstat (line 541) | public void fsetstat(SFTPv3FileHandle handle, SFTPv3FileAttributes att...
    method createSymlink (line 568) | public void createSymlink(String src, String target) throws IOException {
    method canonicalPath (line 598) | public String canonicalPath(String path) throws IOException {
    method scanDirectory (line 643) | private final Vector scanDirectory(byte[] handle) throws IOException {
    method openDirectory (line 708) | private final byte[] openDirectory(String path) throws IOException {
    method expandString (line 750) | private final String expandString(byte[] b, int off, int len) {
    method init (line 766) | private void init() throws IOException {
    method getProtocolVersion (line 817) | public int getProtocolVersion() {
    method close (line 829) | public void close() {
    method ls (line 840) | public Vector ls(String dirName) throws IOException {
    method mkdir (line 855) | public void mkdir(String dirName, int posixPermissions) throws IOExcep...
    method rm (line 874) | public void rm(String fileName) throws IOException {
    method rmdir (line 891) | public void rmdir(String dirName) throws IOException {
    method mv (line 909) | public void mv(String oldPath, String newPath) throws IOException {
    method openFileRO (line 928) | public SFTPv3FileHandle openFileRO(String fileName) throws IOException {
    method openFileRW (line 939) | public SFTPv3FileHandle openFileRW(String fileName) throws IOException {
    method createFile (line 958) | public SFTPv3FileHandle createFile(String fileName) throws IOException {
    method createFile (line 976) | public SFTPv3FileHandle createFile(String fileName, SFTPv3FileAttribut...
    method createFileTruncate (line 988) | public SFTPv3FileHandle createFileTruncate(String fileName) throws IOE...
    method createFileTruncate (line 1006) | public SFTPv3FileHandle createFileTruncate(String fileName, SFTPv3File...
    method createAttrs (line 1010) | private byte[] createAttrs(SFTPv3FileAttributes attr) {
    method openFile (line 1052) | private SFTPv3FileHandle openFile(String fileName, int flags, SFTPv3Fi...
    method read (line 1118) | public int read(SFTPv3FileHandle handle, long fileOffset, byte[] dst, ...
    method write (line 1194) | public void write(SFTPv3FileHandle handle, long fileOffset, byte[] src...
    method closeFile (line 1254) | public void closeFile(SFTPv3FileHandle handle) throws IOException {

FILE: src/ch/ethz/ssh2/SFTPv3DirectoryEntry.java
  class SFTPv3DirectoryEntry (line 10) | public class SFTPv3DirectoryEntry {

FILE: src/ch/ethz/ssh2/SFTPv3FileAttributes.java
  class SFTPv3FileAttributes (line 11) | public class SFTPv3FileAttributes {
    method isDirectory (line 80) | public boolean isDirectory() {
    method isRegularFile (line 93) | public boolean isRegularFile() {
    method isSymlink (line 106) | public boolean isSymlink() {
    method getOctalPermissions (line 119) | public String getOctalPermissions() {

FILE: src/ch/ethz/ssh2/SFTPv3FileHandle.java
  class SFTPv3FileHandle (line 10) | public class SFTPv3FileHandle {
    method SFTPv3FileHandle (line 17) | SFTPv3FileHandle(SFTPv3Client client, byte[] h) {
    method getClient (line 27) | public SFTPv3Client getClient() {
    method isClosed (line 37) | public boolean isClosed() {

FILE: src/ch/ethz/ssh2/ServerHostKeyVerifier.java
  type ServerHostKeyVerifier (line 11) | public interface ServerHostKeyVerifier {
    method verifyServerHostKey (line 27) | public boolean verifyServerHostKey(String hostname, int port, String s...

FILE: src/ch/ethz/ssh2/Session.java
  class Session (line 21) | public class Session {
    method Session (line 31) | Session(ChannelManager cm, SecureRandom rnd) throws IOException {
    method requestDumbPTY (line 43) | public void requestDumbPTY() throws IOException {
    method requestPTY (line 53) | public void requestPTY(String term) throws IOException {
    method requestPTY (line 85) | public void requestPTY(String term, int term_width_characters, int ter...
    method requestX11Forwarding (line 131) | public void requestX11Forwarding(String hostname, int port, byte[] coo...
    method execCommand (line 207) | public void execCommand(String cmd) throws IOException {
    method startShell (line 230) | public void startShell() throws IOException {
    method startSubSystem (line 252) | public void startSubSystem(String name) throws IOException {
    method getStdout (line 270) | public InputStream getStdout() {
    method getStderr (line 274) | public InputStream getStderr() {
    method getStdin (line 278) | public OutputStream getStdin() {
    method waitUntilDataAvailable (line 302) | public int waitUntilDataAvailable(long timeout) throws IOException {
    method waitForCondition (line 347) | public int waitForCondition(int condition_set, long timeout) {
    method getExitStatus (line 363) | public Integer getExitStatus() {
    method getExitSignal (line 376) | public String getExitSignal() {
    method close (line 389) | public void close() {

FILE: src/ch/ethz/ssh2/StreamGobbler.java
  class StreamGobbler (line 34) | public class StreamGobbler extends InputStream {
    method StreamGobbler (line 44) | public StreamGobbler(InputStream is) {
    method read (line 51) | public int read() throws IOException {
    method available (line 75) | public int available() throws IOException {
    method read (line 84) | public int read(byte[] b) throws IOException {
    method close (line 88) | public void close() throws IOException {
    method read (line 99) | public int read(byte[] b, int off, int len) throws IOException {
    class GobblerThread (line 138) | class GobblerThread extends Thread {
      method run (line 139) | public void run() {

FILE: src/ch/ethz/ssh2/auth/AuthenticationManager.java
  class AuthenticationManager (line 20) | public class AuthenticationManager implements MessageHandler {
    method AuthenticationManager (line 34) | public AuthenticationManager(TransportManager tm) {
    method methodPossible (line 38) | boolean methodPossible(String methName) {
    method deQueue (line 49) | byte[] deQueue() throws IOException {
    method getNextMessage (line 68) | byte[] getNextMessage() throws IOException {
    method getRemainingMethods (line 81) | public String[] getRemainingMethods(String user) throws IOException {
    method getPartialSuccess (line 86) | public boolean getPartialSuccess() {
    method initialize (line 90) | private boolean initialize(String user) throws IOException {
    method authenticatePublicKey (line 124) | public boolean authenticatePublicKey(String user, char[] PEMPrivateKey...
    method authenticatePassword (line 217) | public boolean authenticatePassword(String user, String pass) throws I...
    method authenticateInteractive (line 252) | public boolean authenticateInteractive(String user, String[] submethod...
    method handleMessage (line 315) | public void handleMessage(byte[] msg, int msglen) throws IOException {

FILE: src/ch/ethz/ssh2/channel/Channel.java
  class Channel (line 9) | public class Channel {
    method Channel (line 129) | public Channel(ChannelManager cm) {
    method getStderrStream (line 142) | public ChannelInputStream getStderrStream() {
    method getStdinStream (line 146) | public ChannelOutputStream getStdinStream() {
    method getStdoutStream (line 150) | public ChannelInputStream getStdoutStream() {
    method getExitSignal (line 154) | public String getExitSignal() {
    method getExitStatus (line 160) | public Integer getExitStatus() {
    method getReasonClosed (line 166) | public String getReasonClosed() {
    method setReasonClosed (line 172) | public void setReasonClosed(String reasonClosed) {

FILE: src/ch/ethz/ssh2/channel/ChannelInputStream.java
  class ChannelInputStream (line 12) | public final class ChannelInputStream extends InputStream {
    method ChannelInputStream (line 19) | ChannelInputStream(Channel c, boolean isExtended) {
    method available (line 24) | public int available() throws IOException {
    method close (line 35) | public void close() throws IOException {
    method read (line 39) | public int read(byte[] b, int off, int len) throws IOException {
    method read (line 61) | public int read(byte[] b) throws IOException {
    method read (line 65) | public int read() throws IOException {

FILE: src/ch/ethz/ssh2/channel/ChannelManager.java
  class ChannelManager (line 21) | public class ChannelManager implements MessageHandler {
    method ChannelManager (line 40) | public ChannelManager(TransportManager tm) {
    method getChannel (line 45) | private Channel getChannel(int id) {
    method removeChannel (line 56) | private void removeChannel(int id) {
    method addChannel (line 68) | private int addChannel(Channel c) {
    method waitUntilChannelOpen (line 75) | private void waitUntilChannelOpen(Channel c) throws IOException {
    method waitForGlobalSuccessOrFailure (line 97) | private final void waitForGlobalSuccessOrFailure() throws IOException {
    method waitForChannelSuccessOrFailure (line 121) | private final void waitForChannelSuccessOrFailure(Channel c) throws IO...
    method registerX11Cookie (line 145) | public void registerX11Cookie(String hexFakeCookie, X11ServerData data) {
    method unRegisterX11Cookie (line 151) | public void unRegisterX11Cookie(String hexFakeCookie, boolean killChan...
    method checkX11Cookie (line 186) | public X11ServerData checkX11Cookie(String hexFakeCookie) {
    method closeAllChannels (line 194) | public void closeAllChannels() {
    method closeChannel (line 213) | public void closeChannel(Channel c, String reason, boolean force) thro...
    method sendEOF (line 244) | public void sendEOF(Channel c) throws IOException {
    method sendOpenConfirmation (line 268) | public void sendOpenConfirmation(Channel c) throws IOException {
    method sendData (line 287) | public void sendData(Channel c, byte[] buffer, int pos, int len) throw...
    method requestGlobalForward (line 353) | public int requestGlobalForward(String bindAddress, int bindPort, Stri...
    method requestCancelGlobalForward (line 394) | public void requestCancelGlobalForward(int bindPort) throws IOException {
    method registerThread (line 424) | public void registerThread(IChannelWorkerThread thr) throws IOException {
    method openDirectTCPIPChannel (line 432) | public Channel openDirectTCPIPChannel(String host_to_connect, int port...
    method openSessionChannel (line 451) | public Channel openSessionChannel() throws IOException {
    method requestPTY (line 470) | public void requestPTY(Channel c, String term, int term_width_characte...
    method requestX11 (line 497) | public void requestX11(Channel c, boolean singleConnection, String x11...
    method requestSubSystem (line 527) | public void requestSubSystem(Channel c, String subSystemName) throws I...
    method requestExecCommand (line 552) | public void requestExecCommand(Channel c, String cmd) throws IOExcepti...
    method requestShell (line 580) | public void requestShell(Channel c) throws IOException {
    method msgChannelExtendedData (line 605) | public void msgChannelExtendedData(byte[] msg, int msglen) throws IOEx...
    method waitForCondition (line 656) | public int waitForCondition(Channel c, long timeout, int condition_mas...
    method getAvailable (line 711) | public int getAvailable(Channel c, boolean extended) throws IOException {
    method getChannelData (line 724) | public int getChannelData(Channel c, boolean extended, byte[] target, ...
    method msgChannelData (line 834) | public void msgChannelData(byte[] msg, int msglen) throws IOException {
    method msgChannelWindowAdjust (line 872) | public void msgChannelWindowAdjust(byte[] msg, int msglen) throws IOEx...
    method msgChannelOpen (line 901) | public void msgChannelOpen(byte[] msg, int msglen) throws IOException {
    method msgChannelRequest (line 1010) | public void msgChannelRequest(byte[] msg, int msglen) throws IOExcepti...
    method msgChannelEOF (line 1090) | public void msgChannelEOF(byte[] msg, int msglen) throws IOException {
    method msgChannelClose (line 1110) | public void msgChannelClose(byte[] msg, int msglen) throws IOException {
    method msgChannelSuccess (line 1136) | public void msgChannelSuccess(byte[] msg, int msglen) throws IOExcepti...
    method msgChannelFailure (line 1156) | public void msgChannelFailure(byte[] msg, int msglen) throws IOExcepti...
    method msgChannelOpenConfirmation (line 1176) | public void msgChannelOpenConfirmation(byte[] msg, int msglen) throws ...
    method msgChannelOpenFailure (line 1202) | public void msgChannelOpenFailure(byte[] msg, int msglen) throws IOExc...
    method msgGlobalRequest (line 1261) | public void msgGlobalRequest(byte[] msg, int msglen) throws IOException {
    method msgGlobalSuccess (line 1283) | public void msgGlobalSuccess() throws IOException {
    method msgGlobalFailure (line 1293) | public void msgGlobalFailure() throws IOException {
    method handleMessage (line 1303) | public void handleMessage(byte[] msg, int msglen) throws IOException {

FILE: src/ch/ethz/ssh2/channel/ChannelOutputStream.java
  class ChannelOutputStream (line 12) | public final class ChannelOutputStream extends OutputStream {
    method ChannelOutputStream (line 17) | ChannelOutputStream(Channel c) {
    method write (line 21) | public void write(int b) throws IOException {
    method close (line 29) | public void close() throws IOException {
    method flush (line 36) | public void flush() throws IOException {
    method write (line 43) | public void write(byte[] b, int off, int len) throws IOException {
    method write (line 59) | public void write(byte[] b) throws IOException {

FILE: src/ch/ethz/ssh2/channel/IChannelWorkerThread.java
  type IChannelWorkerThread (line 9) | interface IChannelWorkerThread {
    method stopWorking (line 10) | public void stopWorking();

FILE: src/ch/ethz/ssh2/channel/LocalAcceptThread.java
  class LocalAcceptThread (line 13) | public class LocalAcceptThread extends Thread implements IChannelWorkerT...
    method LocalAcceptThread (line 20) | public LocalAcceptThread(ChannelManager cm, int local_port, String hos...
    method run (line 30) | public void run() {
    method stopWorking (line 90) | public void stopWorking() {

FILE: src/ch/ethz/ssh2/channel/RemoteAcceptThread.java
  class RemoteAcceptThread (line 14) | public class RemoteAcceptThread extends Thread {
    method RemoteAcceptThread (line 28) | public RemoteAcceptThread(Channel c, String remoteConnectedAddress, in...
    method run (line 43) | public void run() {

FILE: src/ch/ethz/ssh2/channel/RemoteForwardingData.java
  class RemoteForwardingData (line 9) | public class RemoteForwardingData {

FILE: src/ch/ethz/ssh2/channel/RemoteX11AcceptThread.java
  class RemoteX11AcceptThread (line 16) | public class RemoteX11AcceptThread extends Thread {
    method RemoteX11AcceptThread (line 26) | public RemoteX11AcceptThread(Channel c, String remoteOriginatorAddress...
    method run (line 32) | public void run() {

FILE: src/ch/ethz/ssh2/channel/StreamForwarder.java
  class StreamForwarder (line 17) | public class StreamForwarder extends Thread {
    method StreamForwarder (line 26) | StreamForwarder(Channel c, StreamForwarder sibling, Socket s, InputStr...
    method run (line 36) | public void run() {

FILE: src/ch/ethz/ssh2/channel/X11ServerData.java
  class X11ServerData (line 9) | public class X11ServerData {

FILE: src/ch/ethz/ssh2/crypto/Base64.java
  class Base64 (line 12) | public class Base64 {
    method encode (line 15) | public static char[] encode(byte[] content) {
    method decode (line 59) | public static byte[] decode(char[] message) throws IOException {

FILE: src/ch/ethz/ssh2/crypto/CryptoWishList.java
  class CryptoWishList (line 13) | public class CryptoWishList {

FILE: src/ch/ethz/ssh2/crypto/KeyMaterial.java
  class KeyMaterial (line 14) | public class KeyMaterial {
    method calculateKey (line 22) | private static byte[] calculateKey(HashForSSH2Types sh, BigInteger K, ...
    method create (line 65) | public static KeyMaterial create(String hashType, byte[] H, BigInteger...

FILE: src/ch/ethz/ssh2/crypto/PEMDecoder.java
  class PEMDecoder (line 19) | public class PEMDecoder {
    method hexToInt (line 23) | private static final int hexToInt(char c) {
    method hexToByteArray (line 39) | private static byte[] hexToByteArray(String hex) {
    method generateKeyFromPasswordSaltWithMD5 (line 58) | private static byte[] generateKeyFromPasswordSaltWithMD5(byte[] passwo...
    method removePadding (line 88) | private static byte[] removePadding(byte[] buff, int blockSize) throws...
    method parsePEM (line 106) | private static final PEMStructure parsePEM(char[] pem) throws IOExcept...
    method decryptPEM (line 199) | private static final void decryptPEM(PEMStructure ps, byte[] pw) throw...
    method isPEMEncrypted (line 256) | public static final boolean isPEMEncrypted(PEMStructure ps) throws IOE...
    method decode (line 272) | public static Object decode(char[] pem, String password) throws IOExce...

FILE: src/ch/ethz/ssh2/crypto/PEMStructure.java
  class PEMStructure (line 10) | public class PEMStructure {

FILE: src/ch/ethz/ssh2/crypto/SimpleDERReader.java
  class SimpleDERReader (line 12) | public class SimpleDERReader {
    method SimpleDERReader (line 17) | public SimpleDERReader(byte[] b) {
    method SimpleDERReader (line 21) | public SimpleDERReader(byte[] b, int off, int len) {
    method resetInput (line 25) | public void resetInput(byte[] b) {
    method resetInput (line 29) | public void resetInput(byte[] b, int off, int len) {
    method readByte (line 35) | private byte readByte() throws IOException {
    method readBytes (line 42) | private byte[] readBytes(int len) throws IOException {
    method available (line 56) | public int available() {
    method readLength (line 60) | private int readLength() throws IOException {
    method ignoreNextObject (line 82) | public int ignoreNextObject() throws IOException {
    method readInt (line 95) | public BigInteger readInt() throws IOException {
    method readSequenceAsByteArray (line 113) | public byte[] readSequenceAsByteArray() throws IOException {
    method readOctetString (line 129) | public byte[] readOctetString() throws IOException {

FILE: src/ch/ethz/ssh2/crypto/cipher/AES.java
  class AES (line 60) | public class AES implements BlockCipher {
    method AES (line 393) | public AES() {
    method shift (line 396) | private final int shift(int r, int shift) {
    method FFmulX (line 400) | private final int FFmulX(int x) {
    method inv_mcol (line 404) | private final int inv_mcol(int x) {
    method subWord (line 413) | private final int subWord(int x) {
    method generateWorkingKey (line 423) | private final int[][] generateWorkingKey(byte[] key, boolean forEncryp...
    method init (line 481) | public final void init(boolean forEncryption, byte[] key) {
    method getAlgorithmName (line 486) | public final String getAlgorithmName() {
    method getBlockSize (line 490) | public final int getBlockSize() {
    method processBlock (line 494) | public final int processBlock(byte[] in, int inOff, byte[] out, int ou...
    method reset (line 520) | public final void reset() {
    method unpackBlock (line 523) | private final void unpackBlock(byte[] bytes, int off) {
    method packBlock (line 547) | private final void packBlock(byte[] bytes, int off) {
    method encryptBlock (line 571) | private final void encryptBlock(int[][] KW) {
    method decryptBlock (line 609) | private final void decryptBlock(int[][] KW) {
    method transformBlock (line 654) | public void transformBlock(byte[] src, int srcoff, byte[] dst, int dst...

FILE: src/ch/ethz/ssh2/crypto/cipher/BlockCipher.java
  type BlockCipher (line 9) | public interface BlockCipher {
    method init (line 10) | public void init(boolean forEncryption, byte[] key);
    method getBlockSize (line 12) | public int getBlockSize();
    method transformBlock (line 14) | public void transformBlock(byte[] src, int srcoff, byte[] dst, int dst...

FILE: src/ch/ethz/ssh2/crypto/cipher/BlockCipherFactory.java
  class BlockCipherFactory (line 11) | public class BlockCipherFactory {
    method getDefaultCipherList (line 31) | public static String[] getDefaultCipherList() {
    method checkCipherList (line 40) | public static void checkCipherList(String[] cipherCandidates) {
    method createCipher (line 45) | public static BlockCipher createCipher(String type, boolean encrypt, b...
    method getEntry (line 64) | private static CipherEntry getEntry(String type) {
    method getBlockSize (line 73) | public static int getBlockSize(String type) {
    method getKeySize (line 78) | public static int getKeySize(String type) {
    class CipherEntry (line 83) | static class CipherEntry {
      method CipherEntry (line 89) | public CipherEntry(String type, int blockSize, int keySize, String c...

FILE: src/ch/ethz/ssh2/crypto/cipher/BlowFish.java
  class BlowFish (line 37) | public class BlowFish implements BlockCipher {
    method BlowFish (line 179) | public BlowFish() {
    method init (line 194) | public void init(boolean encrypting, byte[] key) {
    method getAlgorithmName (line 200) | public String getAlgorithmName() {
    method transformBlock (line 204) | public final void transformBlock(byte[] in, int inOff, byte[] out, int...
    method reset (line 216) | public void reset() {
    method getBlockSize (line 219) | public int getBlockSize() {
    method F (line 227) | private int F(int x) {
    method processTable (line 234) | private void processTable(int xl, int xr, int[] table) {
    method setKey (line 255) | private void setKey(byte[] key) {
    method encryptBlock (line 324) | private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int ds...
    method decryptBlock (line 346) | private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int ds...
    method BytesTo32bits (line 363) | private int BytesTo32bits(byte[] b, int i) {
    method Bits32ToBytes (line 367) | private void Bits32ToBytes(int in, byte[] b, int offset) {

FILE: src/ch/ethz/ssh2/crypto/cipher/CBCMode.java
  class CBCMode (line 9) | public class CBCMode implements BlockCipher {
    method CBCMode (line 17) | public CBCMode(BlockCipher tc, byte[] iv, boolean doEncrypt)
    method init (line 32) | public void init(boolean forEncryption, byte[] key) {
    method getBlockSize (line 35) | public int getBlockSize() {
    method encryptBlock (line 39) | private void encryptBlock(byte[] src, int srcoff, byte[] dst, int dsto...
    method decryptBlock (line 48) | private void decryptBlock(byte[] src, int srcoff, byte[] dst, int dsto...
    method transformBlock (line 65) | public void transformBlock(byte[] src, int srcoff, byte[] dst, int dst...

FILE: src/ch/ethz/ssh2/crypto/cipher/CTRMode.java
  class CTRMode (line 9) | public class CTRMode implements BlockCipher {
    method CTRMode (line 19) | public CTRMode(BlockCipher tc, byte[] iv, boolean doEnc) throws Illega...
    method init (line 33) | public void init(boolean forEncryption, byte[] key) {
    method getBlockSize (line 36) | public final int getBlockSize() {
    method transformBlock (line 40) | public final void transformBlock(byte[] src, int srcoff, byte[] dst, i...

FILE: src/ch/ethz/ssh2/crypto/cipher/CipherInputStream.java
  class CipherInputStream (line 12) | public class CipherInputStream {
    method CipherInputStream (line 29) | public CipherInputStream(BlockCipher tc, InputStream bi) {
    method fill_buffer (line 34) | private int fill_buffer() throws IOException {
    method internal_read (line 40) | private int internal_read(byte[] b, int off, int len) throws IOExcepti...
    method changeCipher (line 58) | public void changeCipher(BlockCipher bc) {
    method getBlock (line 66) | private void getBlock() throws IOException {
    method read (line 83) | public int read(byte[] dst) throws IOException {
    method read (line 87) | public int read(byte[] dst, int off, int len) throws IOException {
    method read (line 105) | public int read() throws IOException {
    method readPlain (line 112) | public int readPlain(byte[] b, int off, int len) throws IOException {

FILE: src/ch/ethz/ssh2/crypto/cipher/CipherOutputStream.java
  class CipherOutputStream (line 12) | public class CipherOutputStream {
    method CipherOutputStream (line 28) | public CipherOutputStream(BlockCipher tc, OutputStream bo) {
    method internal_write (line 33) | private void internal_write(byte[] src, int off, int len) throws IOExc...
    method internal_write (line 51) | private void internal_write(int b) throws IOException {
    method flush (line 59) | public void flush() throws IOException {
    method changeCipher (line 70) | public void changeCipher(BlockCipher bc) {
    method writeBlock (line 78) | private void writeBlock() throws IOException {
    method write (line 89) | public void write(byte[] src, int off, int len) throws IOException {
    method write (line 104) | public void write(int b) throws IOException {
    method writePlain (line 110) | public void writePlain(int b) throws IOException {
    method writePlain (line 116) | public void writePlain(byte[] b, int off, int len) throws IOException {

FILE: src/ch/ethz/ssh2/crypto/cipher/DES.java
  class DES (line 35) | public class DES implements BlockCipher {
    method DES (line 126) | public DES() {
    method init (line 136) | public void init(boolean encrypting, byte[] key) {
    method getAlgorithmName (line 140) | public String getAlgorithmName() {
    method getBlockSize (line 144) | public int getBlockSize() {
    method transformBlock (line 148) | public void transformBlock(byte[] in, int inOff, byte[] out, int outOf...
    method reset (line 156) | public void reset() {
    method generateWorkingKey (line 166) | protected int[] generateWorkingKey(boolean encrypting, byte[] key, int...
    method desFunc (line 239) | protected void desFunc(int[] wKey, byte[] in, int inOff, byte[] out, i...

FILE: src/ch/ethz/ssh2/crypto/cipher/DESede.java
  class DESede (line 35) | public class DESede extends DES {
    method DESede (line 45) | public DESede() {
    method init (line 55) | public void init(boolean encrypting, byte[] key) {
    method getAlgorithmName (line 63) | public String getAlgorithmName() {
    method getBlockSize (line 67) | public int getBlockSize() {
    method transformBlock (line 71) | public void transformBlock(byte[] in, int inOff, byte[] out, int outOf...
    method reset (line 87) | public void reset() {

FILE: src/ch/ethz/ssh2/crypto/cipher/NullCipher.java
  class NullCipher (line 9) | public class NullCipher implements BlockCipher {
    method NullCipher (line 12) | public NullCipher() {
    method NullCipher (line 15) | public NullCipher(int blockSize) {
    method init (line 19) | public void init(boolean forEncryption, byte[] key) {
    method getBlockSize (line 22) | public int getBlockSize() {
    method transformBlock (line 26) | public void transformBlock(byte[] src, int srcoff, byte[] dst, int dst...

FILE: src/ch/ethz/ssh2/crypto/dh/DhExchange.java
  class DhExchange (line 15) | public class DhExchange {
    method DhExchange (line 55) | public DhExchange() {
    method init (line 58) | public void init(int group, SecureRandom rnd) {
    method getE (line 77) | public BigInteger getE() {
    method getK (line 88) | public BigInteger getK() {
    method setF (line 98) | public void setF(BigInteger f) {
    method calculateH (line 111) | public byte[] calculateH(byte[] clientversion, byte[] serverversion, b...

FILE: src/ch/ethz/ssh2/crypto/dh/DhGroupExchange.java
  class DhGroupExchange (line 15) | public class DhGroupExchange {
    method DhGroupExchange (line 34) | public DhGroupExchange(BigInteger p, BigInteger g) {
    method init (line 39) | public void init(SecureRandom rnd) {
    method getE (line 49) | public BigInteger getE() {
    method getK (line 59) | public BigInteger getK() {
    method setF (line 69) | public void setF(BigInteger f) {
    method calculateH (line 82) | public byte[] calculateH(byte[] clientversion, byte[] serverversion, b...

FILE: src/ch/ethz/ssh2/crypto/digest/Digest.java
  type Digest (line 9) | public interface Digest {
    method getDigestLength (line 10) | public int getDigestLength();
    method update (line 12) | public void update(byte b);
    method update (line 14) | public void update(byte[] b);
    method update (line 16) | public void update(byte b[], int off, int len);
    method reset (line 18) | public void reset();
    method digest (line 20) | public void digest(byte[] out);
    method digest (line 22) | public void digest(byte[] out, int off);

FILE: src/ch/ethz/ssh2/crypto/digest/HMAC.java
  class HMAC (line 9) | public final class HMAC implements Digest {
    method HMAC (line 18) | public HMAC(Digest md, byte[] key, int size) {
    method getDigestLength (line 46) | public final int getDigestLength() {
    method update (line 50) | public final void update(byte b) {
    method update (line 54) | public final void update(byte[] b) {
    method update (line 58) | public final void update(byte[] b, int off, int len) {
    method reset (line 62) | public final void reset() {
    method digest (line 67) | public final void digest(byte[] out) {
    method digest (line 71) | public final void digest(byte[] out, int off) {

FILE: src/ch/ethz/ssh2/crypto/digest/HashForSSH2Types.java
  class HashForSSH2Types (line 11) | public class HashForSSH2Types {
    method HashForSSH2Types (line 14) | public HashForSSH2Types(Digest md) {
    method HashForSSH2Types (line 18) | public HashForSSH2Types(String type) {
    method updateByte (line 27) | public void updateByte(byte b) {
    method updateBytes (line 34) | public void updateBytes(byte[] b) {
    method updateUINT32 (line 38) | public void updateUINT32(int v) {
    method updateByteString (line 45) | public void updateByteString(byte[] b) {
    method updateBigInt (line 50) | public void updateBigInt(BigInteger b) {
    method reset (line 54) | public void reset() {
    method getDigestLength (line 58) | public int getDigestLength() {
    method getDigest (line 62) | public byte[] getDigest() {
    method getDigest (line 68) | public void getDigest(byte[] out) {
    method getDigest (line 72) | public void getDigest(byte[] out, int off) {

FILE: src/ch/ethz/ssh2/crypto/digest/MAC.java
  class MAC (line 9) | public final class MAC {
    method MAC (line 13) | public MAC(String type, byte[] key) {
    method getMacList (line 28) | public final static String[] getMacList() {
    method checkMacList (line 34) | public final static void checkMacList(String[] macs) {
    method getKeyLen (line 39) | public final static int getKeyLen(String type) {
    method initMac (line 51) | public final void initMac(int seq) {
    method update (line 59) | public final void update(byte[] packetdata, int off, int len) {
    method getMac (line 63) | public final void getMac(byte[] out, int off) {
    method size (line 67) | public final int size() {

FILE: src/ch/ethz/ssh2/crypto/digest/MD5.java
  class MD5 (line 35) | public final class MD5 implements Digest {
    method MD5 (line 44) | public MD5() {
    method FF (line 48) | private static final int FF(int a, int b, int c, int d, int x, int s, ...
    method GG (line 53) | private static final int GG(int a, int b, int c, int d, int x, int s, ...
    method HH (line 58) | private static final int HH(int a, int b, int c, int d, int x, int s, ...
    method II (line 63) | private static final int II(int a, int b, int c, int d, int x, int s, ...
    method encode (line 68) | private static final void encode(byte[] dst, int dstoff, int word) {
    method transform (line 75) | private final void transform(byte[] src, int pos) {
    method reset (line 165) | public final void reset() {
    method update (line 179) | public final void update(byte b) {
    method update (line 190) | public final void update(byte[] buff, int pos, int len) {
    method update (line 214) | public final void update(byte[] b) {
    method digest (line 218) | public final void digest(byte[] dst, int pos) {
    method digest (line 238) | public final void digest(byte[] dst) {
    method getDigestLength (line 242) | public final int getDigestLength() {

FILE: src/ch/ethz/ssh2/crypto/digest/SHA1.java
  class SHA1 (line 11) | public final class SHA1 implements Digest {
    method SHA1 (line 18) | public SHA1() {
    method toHexString (line 22) | private static final String toHexString(byte[] b) {
    method main (line 33) | public static void main(String[] args) {
    method getDigestLength (line 84) | public final int getDigestLength() {
    method reset (line 88) | public final void reset() {
    method update (line 99) | public final void update(byte b[], int off, int len) {
    method update (line 104) | public final void update(byte b[]) {
    method update (line 109) | public final void update(byte b) {
    method putInt (line 119) | private final void putInt(byte[] b, int pos, int val) {
    method digest (line 126) | public final void digest(byte[] out) {
    method digest (line 130) | public final void digest(byte[] out, int off) {
    method perform (line 168) | private final void perform() {

FILE: src/ch/ethz/ssh2/log/Logger.java
  class Logger (line 13) | public class Logger {
    method Logger (line 19) | public Logger(Class x) {
    method getLogger (line 23) | public final static Logger getLogger(Class x) {
    method isEnabled (line 27) | public final boolean isEnabled() {
    method log (line 31) | public void log(int level, String message) {

FILE: src/ch/ethz/ssh2/packets/PacketChannelOpenConfirmation.java
  class PacketChannelOpenConfirmation (line 11) | public class PacketChannelOpenConfirmation {
    method PacketChannelOpenConfirmation (line 18) | public PacketChannelOpenConfirmation(int recipientChannelID, int sende...
    method PacketChannelOpenConfirmation (line 26) | public PacketChannelOpenConfirmation(byte payload[], int off, int len)...
    method getPayload (line 48) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketChannelOpenFailure.java
  class PacketChannelOpenFailure (line 11) | public class PacketChannelOpenFailure {
    method PacketChannelOpenFailure (line 18) | public PacketChannelOpenFailure(int recipientChannelID, int reasonCode...
    method PacketChannelOpenFailure (line 26) | public PacketChannelOpenFailure(byte payload[], int off, int len) thro...
    method getPayload (line 48) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketChannelWindowAdjust.java
  class PacketChannelWindowAdjust (line 11) | public class PacketChannelWindowAdjust {
    method PacketChannelWindowAdjust (line 16) | public PacketChannelWindowAdjust(int recipientChannelID, int windowCha...
    method PacketChannelWindowAdjust (line 21) | public PacketChannelWindowAdjust(byte payload[], int off, int len) thr...
    method getPayload (line 41) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketDisconnect.java
  class PacketDisconnect (line 11) | public class PacketDisconnect {
    method PacketDisconnect (line 18) | public PacketDisconnect(byte payload[], int off, int len) throws IOExc...
    method PacketDisconnect (line 35) | public PacketDisconnect(int reason, String desc, String lang) {
    method getPayload (line 41) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketGlobalCancelForwardRequest.java
  class PacketGlobalCancelForwardRequest (line 9) | public class PacketGlobalCancelForwardRequest {
    method PacketGlobalCancelForwardRequest (line 15) | public PacketGlobalCancelForwardRequest(boolean wantReply, String bind...
    method getPayload (line 21) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketGlobalForwardRequest.java
  class PacketGlobalForwardRequest (line 9) | public class PacketGlobalForwardRequest {
    method PacketGlobalForwardRequest (line 15) | public PacketGlobalForwardRequest(boolean wantReply, String bindAddres...
    method getPayload (line 21) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketIgnore.java
  class PacketIgnore (line 11) | public class PacketIgnore {
    method PacketIgnore (line 16) | public PacketIgnore(byte payload[], int off, int len) throws IOExcepti...
    method setBody (line 30) | public void setBody(byte[] body) {
    method getPayload (line 35) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDHInit.java
  class PacketKexDHInit (line 11) | public class PacketKexDHInit {
    method PacketKexDHInit (line 16) | public PacketKexDHInit(BigInteger e) {
    method getPayload (line 20) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDHReply.java
  class PacketKexDHReply (line 12) | public class PacketKexDHReply {
    method PacketKexDHReply (line 19) | public PacketKexDHReply(byte payload[], int off, int len) throws IOExc...
    method getF (line 38) | public BigInteger getF() {
    method getHostKey (line 42) | public byte[] getHostKey() {
    method getSignature (line 46) | public byte[] getSignature() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDhGexGroup.java
  class PacketKexDhGexGroup (line 12) | public class PacketKexDhGexGroup {
    method PacketKexDhGexGroup (line 18) | public PacketKexDhGexGroup(byte payload[], int off, int len) throws IO...
    method getG (line 38) | public BigInteger getG() {
    method getP (line 42) | public BigInteger getP() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDhGexInit.java
  class PacketKexDhGexInit (line 11) | public class PacketKexDhGexInit {
    method PacketKexDhGexInit (line 16) | public PacketKexDhGexInit(BigInteger e) {
    method getPayload (line 20) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDhGexReply.java
  class PacketKexDhGexReply (line 12) | public class PacketKexDhGexReply {
    method PacketKexDhGexReply (line 19) | public PacketKexDhGexReply(byte payload[], int off, int len) throws IO...
    method getF (line 38) | public BigInteger getF() {
    method getHostKey (line 42) | public byte[] getHostKey() {
    method getSignature (line 46) | public byte[] getSignature() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDhGexRequest.java
  class PacketKexDhGexRequest (line 11) | public class PacketKexDhGexRequest {
    method PacketKexDhGexRequest (line 18) | public PacketKexDhGexRequest(DHGexParameters para) {
    method getPayload (line 24) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketKexDhGexRequestOld.java
  class PacketKexDhGexRequestOld (line 11) | public class PacketKexDhGexRequestOld {
    method PacketKexDhGexRequestOld (line 16) | public PacketKexDhGexRequestOld(DHGexParameters para) {
    method getPayload (line 20) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketKexInit.java
  class PacketKexInit (line 15) | public class PacketKexInit {
    method PacketKexInit (line 20) | public PacketKexInit(CryptoWishList cwl, SecureRandom rnd) {
    method PacketKexInit (line 38) | public PacketKexInit(byte payload[], int off, int len) throws IOExcept...
    method getPayload (line 67) | public byte[] getPayload() {
    method getKexParameters (line 89) | public KexParameters getKexParameters() {
    method getCompression_algorithms_client_to_server (line 93) | public String[] getCompression_algorithms_client_to_server() {
    method getCompression_algorithms_server_to_client (line 97) | public String[] getCompression_algorithms_server_to_client() {
    method getCookie (line 101) | public byte[] getCookie() {
    method getEncryption_algorithms_client_to_server (line 105) | public String[] getEncryption_algorithms_client_to_server() {
    method getEncryption_algorithms_server_to_client (line 109) | public String[] getEncryption_algorithms_server_to_client() {
    method isFirst_kex_packet_follows (line 113) | public boolean isFirst_kex_packet_follows() {
    method getKex_algorithms (line 117) | public String[] getKex_algorithms() {
    method getLanguages_client_to_server (line 121) | public String[] getLanguages_client_to_server() {
    method getLanguages_server_to_client (line 125) | public String[] getLanguages_server_to_client() {
    method getMac_algorithms_client_to_server (line 129) | public String[] getMac_algorithms_client_to_server() {
    method getMac_algorithms_server_to_client (line 133) | public String[] getMac_algorithms_server_to_client() {
    method getReserved_field1 (line 137) | public int getReserved_field1() {
    method getServer_host_key_algorithms (line 141) | public String[] getServer_host_key_algorithms() {

FILE: src/ch/ethz/ssh2/packets/PacketNewKeys.java
  class PacketNewKeys (line 11) | public class PacketNewKeys {
    method PacketNewKeys (line 14) | public PacketNewKeys() {
    method PacketNewKeys (line 17) | public PacketNewKeys(byte payload[], int off, int len) throws IOExcept...
    method getPayload (line 33) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketOpenDirectTCPIPChannel.java
  class PacketOpenDirectTCPIPChannel (line 10) | public class PacketOpenDirectTCPIPChannel {
    method PacketOpenDirectTCPIPChannel (line 22) | public PacketOpenDirectTCPIPChannel(int channelID, int initialWindowSi...
    method getPayload (line 34) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketOpenSessionChannel.java
  class PacketOpenSessionChannel (line 11) | public class PacketOpenSessionChannel {
    method PacketOpenSessionChannel (line 18) | public PacketOpenSessionChannel(int channelID, int initialWindowSize,
    method PacketOpenSessionChannel (line 25) | public PacketOpenSessionChannel(byte payload[], int off, int len) thro...
    method getPayload (line 45) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketServiceAccept.java
  class PacketServiceAccept (line 11) | public class PacketServiceAccept {
    method PacketServiceAccept (line 16) | public PacketServiceAccept(String serviceName) {
    method PacketServiceAccept (line 20) | public PacketServiceAccept(byte payload[], int off, int len) throws IO...
    method getPayload (line 38) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketServiceRequest.java
  class PacketServiceRequest (line 11) | public class PacketServiceRequest {
    method PacketServiceRequest (line 16) | public PacketServiceRequest(String serviceName) {
    method PacketServiceRequest (line 20) | public PacketServiceRequest(byte payload[], int off, int len) throws I...
    method getPayload (line 38) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketSessionExecCommand.java
  class PacketSessionExecCommand (line 10) | public class PacketSessionExecCommand {
    method PacketSessionExecCommand (line 16) | public PacketSessionExecCommand(int recipientChannelID, boolean wantRe...
    method getPayload (line 22) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketSessionPtyRequest.java
  class PacketSessionPtyRequest (line 10) | public class PacketSessionPtyRequest {
    method PacketSessionPtyRequest (line 21) | public PacketSessionPtyRequest(int recipientChannelID, boolean wantRep...
    method getPayload (line 34) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketSessionStartShell.java
  class PacketSessionStartShell (line 9) | public class PacketSessionStartShell {
    method PacketSessionStartShell (line 14) | public PacketSessionStartShell(int recipientChannelID, boolean wantRep...
    method getPayload (line 19) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketSessionSubsystemRequest.java
  class PacketSessionSubsystemRequest (line 10) | public class PacketSessionSubsystemRequest {
    method PacketSessionSubsystemRequest (line 16) | public PacketSessionSubsystemRequest(int recipientChannelID, boolean w...
    method getPayload (line 22) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketSessionX11Request.java
  class PacketSessionX11Request (line 9) | public class PacketSessionX11Request {
    method PacketSessionX11Request (line 18) | public PacketSessionX11Request(int recipientChannelID, boolean wantRep...
    method getPayload (line 29) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthBanner.java
  class PacketUserauthBanner (line 11) | public class PacketUserauthBanner {
    method PacketUserauthBanner (line 17) | public PacketUserauthBanner(String message, String language) {
    method PacketUserauthBanner (line 22) | public PacketUserauthBanner(byte payload[], int off, int len) throws I...
    method getBanner (line 40) | public String getBanner() {
    method getPayload (line 44) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthFailure.java
  class PacketUserauthFailure (line 11) | public class PacketUserauthFailure {
    method PacketUserauthFailure (line 17) | public PacketUserauthFailure(String[] authThatCanContinue, boolean par...
    method PacketUserauthFailure (line 22) | public PacketUserauthFailure(byte payload[], int off, int len) throws ...
    method getAuthThatCanContinue (line 40) | public String[] getAuthThatCanContinue() {
    method isPartialSuccess (line 44) | public boolean isPartialSuccess() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthInfoRequest.java
  class PacketUserauthInfoRequest (line 11) | public class PacketUserauthInfoRequest {
    method PacketUserauthInfoRequest (line 22) | public PacketUserauthInfoRequest(byte payload[], int off, int len) thr...
    method getEcho (line 51) | public boolean[] getEcho() {
    method getInstruction (line 55) | public String getInstruction() {
    method getLanguageTag (line 59) | public String getLanguageTag() {
    method getName (line 63) | public String getName() {
    method getNumPrompts (line 67) | public int getNumPrompts() {
    method getPrompt (line 71) | public String[] getPrompt() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthInfoResponse.java
  class PacketUserauthInfoResponse (line 9) | public class PacketUserauthInfoResponse {
    method PacketUserauthInfoResponse (line 14) | public PacketUserauthInfoResponse(String[] responses) {
    method getPayload (line 18) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthRequestInteractive.java
  class PacketUserauthRequestInteractive (line 9) | public class PacketUserauthRequestInteractive {
    method PacketUserauthRequestInteractive (line 16) | public PacketUserauthRequestInteractive(String serviceName, String use...
    method getPayload (line 22) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthRequestNone.java
  class PacketUserauthRequestNone (line 11) | public class PacketUserauthRequestNone {
    method PacketUserauthRequestNone (line 17) | public PacketUserauthRequestNone(String serviceName, String user) {
    method PacketUserauthRequestNone (line 22) | public PacketUserauthRequestNone(byte payload[], int off, int len) thr...
    method getPayload (line 45) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthRequestPassword.java
  class PacketUserauthRequestPassword (line 11) | public class PacketUserauthRequestPassword {
    method PacketUserauthRequestPassword (line 18) | public PacketUserauthRequestPassword(String serviceName, String user, ...
    method PacketUserauthRequestPassword (line 24) | public PacketUserauthRequestPassword(byte payload[], int off, int len)...
    method getPayload (line 49) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/PacketUserauthRequestPublicKey.java
  class PacketUserauthRequestPublicKey (line 11) | public class PacketUserauthRequestPublicKey {
    method PacketUserauthRequestPublicKey (line 21) | public PacketUserauthRequestPublicKey(String serviceName, String user,
    method PacketUserauthRequestPublicKey (line 30) | public PacketUserauthRequestPublicKey(byte payload[], int off, int len...
    method getPayload (line 45) | public byte[] getPayload() {

FILE: src/ch/ethz/ssh2/packets/Packets.java
  class Packets (line 9) | public class Packets {
    method getMessageName (line 119) | public static final String getMessageName(int type) {

FILE: src/ch/ethz/ssh2/packets/TypesReader.java
  class TypesReader (line 14) | public class TypesReader {
    method TypesReader (line 19) | public TypesReader(byte[] arr) {
    method TypesReader (line 25) | public TypesReader(byte[] arr, int off) {
    method TypesReader (line 34) | public TypesReader(byte[] arr, int off, int len) {
    method readByte (line 46) | public int readByte() throws IOException {
    method readBytes (line 53) | public byte[] readBytes(int len) throws IOException {
    method readBytes (line 65) | public void readBytes(byte[] dst, int off, int len) throws IOException {
    method readBoolean (line 73) | public boolean readBoolean() throws IOException {
    method readUINT32 (line 80) | public int readUINT32() throws IOException {
    method readUINT64 (line 88) | public long readUINT64() throws IOException {
    method readMPINT (line 101) | public BigInteger readMPINT() throws IOException {
    method readByteString (line 114) | public byte[] readByteString() throws IOException {
    method readString (line 126) | public String readString(String charsetName) throws IOException {
    method readString (line 138) | public String readString() throws IOException {
    method readNameList (line 150) | public String[] readNameList() throws IOException {
    method remain (line 154) | public int remain() {

FILE: src/ch/ethz/ssh2/packets/TypesWriter.java
  class TypesWriter (line 12) | public class TypesWriter {
    method TypesWriter (line 16) | public TypesWriter() {
    method resize (line 21) | private void resize(int len) {
    method length (line 27) | public int length() {
    method getBytes (line 31) | public byte[] getBytes() {
    method getBytes (line 37) | public void getBytes(byte dst[]) {
    method writeUINT32 (line 41) | public void writeUINT32(int val, int off) {
    method writeUINT32 (line 51) | public void writeUINT32(int val) {
    method writeUINT64 (line 56) | public void writeUINT64(long val) {
    method writeBoolean (line 70) | public void writeBoolean(boolean v) {
    method writeByte (line 77) | public void writeByte(int v, int off) {
    method writeByte (line 84) | public void writeByte(int v) {
    method writeMPInt (line 89) | public void writeMPInt(BigInteger b) {
    method writeBytes (line 98) | public void writeBytes(byte[] buff) {
    method writeBytes (line 102) | public void writeBytes(byte[] buff, int off, int len) {
    method writeString (line 110) | public void writeString(byte[] buff, int off, int len) {
    method writeString (line 115) | public void writeString(String v) {
    method writeString (line 122) | public void writeString(String v, String charsetName) throws Unsupport...
    method writeNameList (line 129) | public void writeNameList(String v[]) {

FILE: src/ch/ethz/ssh2/sftp/AttrTextHints.java
  class AttrTextHints (line 9) | public class AttrTextHints {

FILE: src/ch/ethz/ssh2/sftp/AttribBits.java
  class AttribBits (line 19) | public class AttribBits {

FILE: src/ch/ethz/ssh2/sftp/AttribFlags.java
  class AttribFlags (line 10) | public class AttribFlags {

FILE: src/ch/ethz/ssh2/sftp/AttribPermissions.java
  class AttribPermissions (line 13) | public class AttribPermissions {

FILE: src/ch/ethz/ssh2/sftp/AttribTypes.java
  class AttribTypes (line 14) | public class AttribTypes {

FILE: src/ch/ethz/ssh2/sftp/ErrorCodes.java
  class ErrorCodes (line 9) | public class ErrorCodes {
    method getDescription (line 83) | public static final String[] getDescription(int errorCode) {

FILE: src/ch/ethz/ssh2/sftp/OpenFlags.java
  class OpenFlags (line 59) | public class OpenFlags {

FILE: src/ch/ethz/ssh2/sftp/Packet.java
  class Packet (line 9) | public class Packet {

FILE: src/ch/ethz/ssh2/signature/DSAPrivateKey.java
  class DSAPrivateKey (line 11) | public class DSAPrivateKey {
    method DSAPrivateKey (line 18) | public DSAPrivateKey(BigInteger p, BigInteger q, BigInteger g,
    method getP (line 27) | public BigInteger getP() {
    method getQ (line 31) | public BigInteger getQ() {
    method getG (line 35) | public BigInteger getG() {
    method getY (line 39) | public BigInteger getY() {
    method getX (line 43) | public BigInteger getX() {
    method getPublicKey (line 47) | public DSAPublicKey getPublicKey() {

FILE: src/ch/ethz/ssh2/signature/DSAPublicKey.java
  class DSAPublicKey (line 11) | public class DSAPublicKey {
    method DSAPublicKey (line 17) | public DSAPublicKey(BigInteger p, BigInteger q, BigInteger g, BigInteg...
    method getP (line 24) | public BigInteger getP() {
    method getQ (line 28) | public BigInteger getQ() {
    method getG (line 32) | public BigInteger getG() {
    method getY (line 36) | public BigInteger getY() {

FILE: src/ch/ethz/ssh2/signature/DSASHA1Verify.java
  class DSASHA1Verify (line 18) | public class DSASHA1Verify {
    method decodeSSHDSAPublicKey (line 21) | public static DSAPublicKey decodeSSHDSAPublicKey(byte[] key) throws IO...
    method encodeSSHDSAPublicKey (line 40) | public static byte[] encodeSSHDSAPublicKey(DSAPublicKey pk) throws IOE...
    method encodeSSHDSASignature (line 52) | public static byte[] encodeSSHDSASignature(DSASignature ds) {
    method decodeSSHDSASignature (line 75) | public static DSASignature decodeSSHDSASignature(byte[] sig) throws IO...
    method verifySignature (line 109) | public static boolean verifySignature(byte[] message, DSASignature ds,...
    method generateSignature (line 162) | public static DSASignature generateSignature(byte[] message, DSAPrivat...

FILE: src/ch/ethz/ssh2/signature/DSASignature.java
  class DSASignature (line 11) | public class DSASignature {
    method DSASignature (line 15) | public DSASignature(BigInteger r, BigInteger s) {
    method getR (line 20) | public BigInteger getR() {
    method getS (line 24) | public BigInteger getS() {

FILE: src/ch/ethz/ssh2/signature/RSAPrivateKey.java
  class RSAPrivateKey (line 11) | public class RSAPrivateKey {
    method RSAPrivateKey (line 16) | public RSAPrivateKey(BigInteger d, BigInteger e, BigInteger n) {
    method getD (line 22) | public BigInteger getD() {
    method getE (line 26) | public BigInteger getE() {
    method getN (line 30) | public BigInteger getN() {
    method getPublicKey (line 34) | public RSAPublicKey getPublicKey() {

FILE: src/ch/ethz/ssh2/signature/RSAPublicKey.java
  class RSAPublicKey (line 11) | public class RSAPublicKey {
    method RSAPublicKey (line 15) | public RSAPublicKey(BigInteger e, BigInteger n) {
    method getE (line 20) | public BigInteger getE() {
    method getN (line 24) | public BigInteger getN() {

FILE: src/ch/ethz/ssh2/signature/RSASHA1Verify.java
  class RSASHA1Verify (line 18) | public class RSASHA1Verify {
    method decodeSSHRSAPublicKey (line 21) | public static RSAPublicKey decodeSSHRSAPublicKey(byte[] key) throws IO...
    method encodeSSHRSAPublicKey (line 38) | public static byte[] encodeSSHRSAPublicKey(RSAPublicKey pk) throws IOE...
    method decodeSSHRSASignature (line 48) | public static RSASignature decodeSSHRSASignature(byte[] sig) throws IO...
    method encodeSSHRSASignature (line 76) | public static byte[] encodeSSHRSASignature(RSASignature sig) throws IO...
    method generateSignature (line 98) | public static RSASignature generateSignature(byte[] message, RSAPrivat...
    method verifySignature (line 134) | public static boolean verifySignature(byte[] message, RSASignature ds,...

FILE: src/ch/ethz/ssh2/signature/RSASignature.java
  class RSASignature (line 13) | public class RSASignature {
    method RSASignature (line 16) | public RSASignature(BigInteger s) {
    method getS (line 20) | public BigInteger getS() {

FILE: src/ch/ethz/ssh2/transport/ClientServerHello.java
  class ClientServerHello (line 15) | public class ClientServerHello {
    method ClientServerHello (line 21) | public ClientServerHello(InputStream bi, OutputStream bo) throws IOExc...
    method readLineRN (line 50) | public final static int readLineRN(InputStream is, byte[] buffer) thro...
    method getClientString (line 83) | public byte[] getClientString() {
    method getServerString (line 90) | public byte[] getServerString() {

FILE: src/ch/ethz/ssh2/transport/KexManager.java
  class KexManager (line 26) | public class KexManager {
    method KexManager (line 45) | public KexManager(TransportManager tm, ClientServerHello csh, CryptoWi...
    method getDefaultServerHostkeyAlgorithmList (line 57) | public static final String[] getDefaultServerHostkeyAlgorithmList() {
    method checkServerHostkeyAlgorithmsList (line 61) | public static final void checkServerHostkeyAlgorithmsList(String[] alg...
    method getDefaultKexAlgorithmList (line 68) | public static final String[] getDefaultKexAlgorithmList() {
    method checkKexAlgorithmList (line 73) | public static final void checkKexAlgorithmList(String[] algos) {
    method getOrWaitForConnectionInfo (line 88) | public ConnectionInfo getOrWaitForConnectionInfo(int minKexCount) thro...
    method getFirstMatch (line 106) | private String getFirstMatch(String[] client, String[] server) throws ...
    method compareFirstOfNameList (line 122) | private boolean compareFirstOfNameList(String[] a, String[] b) {
    method isGuessOK (line 135) | private boolean isGuessOK(KexParameters cpar, KexParameters spar) {
    method mergeKexParameters (line 156) | private NegotiatedParameters mergeKexParameters(KexParameters client, ...
    method initiateKEX (line 217) | public synchronized void initiateKEX(CryptoWishList cwl, DHGexParamete...
    method establishKeyMaterial (line 231) | private boolean establishKeyMaterial() {
    method finishKex (line 249) | private void finishKex() throws IOException {
    method verifySignature (line 277) | private boolean verifySignature(byte[] sig, byte[] hostkey) throws IOE...
    method handleMessage (line 299) | public synchronized void handleMessage(byte[] msg, int msglen) throws ...

FILE: src/ch/ethz/ssh2/transport/KexParameters.java
  class KexParameters (line 9) | public class KexParameters {

FILE: src/ch/ethz/ssh2/transport/KexState.java
  class KexState (line 17) | public class KexState {

FILE: src/ch/ethz/ssh2/transport/MessageHandler.java
  type MessageHandler (line 11) | public interface MessageHandler {
    method handleMessage (line 12) | public void handleMessage(byte[] msg, int msglen) throws IOException;

FILE: src/ch/ethz/ssh2/transport/NegotiateException.java
  class NegotiateException (line 9) | public class NegotiateException extends Exception {

FILE: src/ch/ethz/ssh2/transport/NegotiatedParameters.java
  class NegotiatedParameters (line 9) | public class NegotiatedParameters {

FILE: src/ch/ethz/ssh2/transport/TransportConnection.java
  class TransportConnection (line 22) | public class TransportConnection {
    method TransportConnection (line 48) | public TransportConnection(InputStream is, OutputStream os, SecureRand...
    method changeRecvCipher (line 54) | public void changeRecvCipher(BlockCipher bc, MAC mac) {
    method changeSendCipher (line 64) | public void changeSendCipher(BlockCipher bc, MAC mac) {
    method sendMessage (line 79) | public void sendMessage(byte[] message) throws IOException {
    method sendMessage (line 83) | public void sendMessage(byte[] message, int off, int len) throws IOExc...
    method getPacketOverheadEstimate (line 87) | public int getPacketOverheadEstimate() {
    method sendMessage (line 92) | public void sendMessage(byte[] message, int off, int len, int padd) th...
    method peekNextMessageLength (line 166) | public int peekNextMessageLength() throws IOException {
    method receiveMessage (line 189) | public int receiveMessage(byte buffer[], int off, int len) throws IOEx...

FILE: src/ch/ethz/ssh2/transport/TransportManager.java
  class TransportManager (line 46) | public class TransportManager {
    method TransportManager (line 64) | public TransportManager(String host, int port) throws IOException {
    method createInetAddress (line 79) | private InetAddress createInetAddress(String host) throws UnknownHostE...
    method parseIPv4Address (line 90) | private InetAddress parseIPv4Address(String host) throws UnknownHostEx...
    method getPacketOverheadEstimate (line 126) | public int getPacketOverheadEstimate() {
    method setTcpNoDelay (line 130) | public void setTcpNoDelay(boolean state) throws IOException {
    method setSoTimeout (line 134) | public void setSoTimeout(int timeout) throws IOException {
    method getConnectionInfo (line 138) | public ConnectionInfo getConnectionInfo(int kexNumber) throws IOExcept...
    method getReasonClosedCause (line 142) | public Throwable getReasonClosedCause() {
    method getSessionIdentifier (line 148) | public byte[] getSessionIdentifier() {
    method close (line 152) | public void close(Throwable cause, boolean useDisconnectPacket) {
    method establishConnection (line 219) | private void establishConnection(ProxyData proxyData, int connectTimeo...
    method initialize (line 317) | public void initialize(CryptoWishList cwl, ServerHostKeyVerifier verif...
    method registerMessageHandler (line 372) | public void registerMessageHandler(MessageHandler mh, int low, int hig...
    method removeMessageHandler (line 383) | public void removeMessageHandler(MessageHandler mh, int low, int high) {
    method sendKexMessage (line 395) | public void sendKexMessage(byte[] msg) throws IOException {
    method kexFinished (line 412) | public void kexFinished() throws IOException {
    method forceKeyExchange (line 419) | public void forceKeyExchange(CryptoWishList cwl, DHGexParameters dhgex...
    method changeRecvCipher (line 423) | public void changeRecvCipher(BlockCipher bc, MAC mac) {
    method changeSendCipher (line 427) | public void changeSendCipher(BlockCipher bc, MAC mac) {
    method sendAsynchronousMessage (line 431) | public void sendAsynchronousMessage(byte[] msg) throws IOException {
    method setConnectionMonitors (line 456) | public void setConnectionMonitors(Vector monitors) {
    method sendMessage (line 462) | public void sendMessage(byte[] msg) throws IOException {
    method receiveLoop (line 491) | public void receiveLoop() throws IOException {
    class HandlerEntry (line 592) | class HandlerEntry {
    class AsynchronousWorker (line 598) | class AsynchronousWorker extends Thread {
      method run (line 599) | public void run() {

FILE: src/ch/ethz/ssh2/util/PasswordField.java
  class PasswordField (line 12) | public class PasswordField {
    method getPassword (line 20) | public static final char[] getPassword(InputStream in, String prompt) ...
    class MaskingThread (line 81) | static class MaskingThread extends Thread {
      method MaskingThread (line 91) | public MaskingThread(String prompt) {
      method run (line 98) | public void run() {
      method stopMasking (line 123) | public void stopMasking() {

FILE: src/ch/ethz/ssh2/util/PasswordReader.java
  class PasswordReader (line 7) | public class PasswordReader {
    method readPassword (line 8) | public static String readPassword(String prompt) {

FILE: src/ch/ethz/ssh2/util/TimeoutService.java
  class TimeoutService (line 21) | public class TimeoutService {
    method addTimeoutHandler (line 34) | public static final TimeoutToken addTimeoutHandler(long runTime, Runna...
    method cancelTimeoutHandler (line 53) | public static final void cancelTimeoutHandler(TimeoutToken token) {
    class TimeoutToken (line 62) | public static class TimeoutToken implements Comparable {
      method TimeoutToken (line 66) | private TimeoutToken(long runTime, Runnable handler) {
      method compareTo (line 71) | public int compareTo(Object o) {
    class TimeoutThread (line 81) | private static class TimeoutThread extends Thread {
      method run (line 82) | public void run() {

FILE: src/ch/ethz/ssh2/util/Tokenizer.java
  class Tokenizer (line 9) | public class Tokenizer {
    method parseTokens (line 18) | public static String[] parseTokens(String source, char delimiter) {

FILE: src/edu/caltech/hep/dcapj/Config.java
  class Config (line 21) | public class Config {
    method Config (line 39) | public Config() {
    method initialize (line 43) | private void initialize() {
    method getPnfsDir (line 97) | public String getPnfsDir() {
    method getdCapDoor (line 106) | public String getdCapDoor() {
    method getInterface (line 115) | public String getInterface() {
    method getPoolTimeout (line 144) | public int getPoolTimeout() {
    method setPoolTimeout (line 153) | public void setPoolTimeout(int timeout) {

FILE: src/edu/caltech/hep/dcapj/PnfsUtil.java
  class PnfsUtil (line 14) | public class PnfsUtil {
    method getPnfsID (line 24) | public static String getPnfsID(String path) throws FileNotFoundException,
    method isPnfs (line 59) | public static boolean isPnfs(String path) {
    method getdCapDoors (line 101) | public static String[] getdCapDoors(String path)
    method getdCapDoor (line 161) | public static String getdCapDoor(String pnfspath)

FILE: src/edu/caltech/hep/dcapj/dCacheFile.java
  class dCacheFile (line 26) | public class dCacheFile extends File implements DataConnectionCallback,
    method dCacheFile (line 57) | public dCacheFile(String name, String openMode) throws FileNotFoundExc...
    method dCacheFile (line 72) | public dCacheFile(String name, Mode openMode) throws FileNotFoundExcep...
    method open (line 126) | private void open() throws IOException {
    method seek (line 247) | public long seek(long offset, boolean relative) throws IOException {
    method tell (line 345) | public long tell() throws IOException {
    method read (line 411) | public int read(ByteBuffer bytes, long off) throws IOException {
    method read (line 560) | public int read(byte bytes[]) throws IOException {
    method getPoolID (line 571) | public int getPoolID() {
    method makeWritable (line 594) | private long makeWritable(long position) throws IOException {
    method write (line 678) | public int write(ByteBuffer buffer, long position)
    method finishedWriting (line 744) | private void finishedWriting() throws IOException {
    method close (line 787) | public void close() throws IOException {
    method length (line 863) | public long length() {
    method available (line 871) | public int available() throws IOException {
    method mode (line 881) | public Mode mode() {
    method finalize (line 885) | protected void finalize() throws Throwable {
    method handleStreams (line 890) | public void handleStreams(DataInputStream dataIn, DataOutputStream dat...
    method handleDoorCommand (line 907) | public void handleDoorCommand(String input[]) {
    type Mode (line 913) | public enum Mode {

FILE: src/edu/caltech/hep/dcapj/dCacheFileChannelProviderFactory.java
  class dCacheFileChannelProviderFactory (line 24) | public class dCacheFileChannelProviderFactory implements FileChannelProv...
    method dCacheFileChannelProviderFactory (line 31) | public dCacheFileChannelProviderFactory() throws Exception {
    method newReaderFileChannelProvider (line 38) | public FileChannelProvider newReaderFileChannelProvider(FDTReaderSessi...
    method newWriterFileChannelProvider (line 42) | public FileChannelProvider newWriterFileChannelProvider(FDTWriterSessi...
    method close (line 51) | public boolean close(String downMessage, Throwable downCause) {
    method isClosed (line 60) | public boolean isClosed() {
    class dCacheReaderFileChannelProvider (line 64) | private static final class dCacheReaderFileChannelProvider implements ...
      method getFile (line 66) | public File getFile(String fName) throws IOException {
      method getPartitionID (line 74) | public int getPartitionID(File dCacheFile) throws IOException {
      method getFileChannel (line 81) | public FileChannel getFileChannel(File dCacheFile, String openMode) ...
    class dCacheWriterFileChannelProvider (line 94) | private static final class dCacheWriterFileChannelProvider implements ...
      method getFile (line 96) | public File getFile(String fName) throws IOException {
      method getPartitionID (line 104) | public int getPartitionID(File dCacheFile) throws IOException {
      method getFileChannel (line 111) | public FileChannel getFileChannel(File dCacheFile, String openMode) ...
    class dCacheCoordinatorChannelProvider (line 124) | private static final class dCacheCoordinatorChannelProvider implements...
      method getFile (line 126) | public File getFile(String fName) throws IOException {
      method getPartitionID (line 134) | public int getPartitionID(File dCacheFile) throws IOException {
      method getFileChannel (line 141) | public FileChannel getFileChannel(File dCacheFile, String openMode) ...

FILE: src/edu/caltech/hep/dcapj/dCapLayer.java
  class dCapLayer (line 13) | public class dCapLayer {
    method initialize (line 43) | public static void initialize() throws Exception {
    method isInitialized (line 54) | public static final boolean isInitialized() {
    method getDataConnectionCallback (line 65) | public static IOCallback getDataConnectionCallback() {
    method getControlConnection (line 74) | public static ControlConnection getControlConnection() {
    method getConfig (line 83) | public static Config getConfig() {
    method close (line 90) | public static void close() {

FILE: src/edu/caltech/hep/dcapj/io/dCacheFileInputStream.java
  class dCacheFileInputStream (line 15) | public class dCacheFileInputStream extends FileInputStream {
    method dCacheFileInputStream (line 25) | public dCacheFileInputStream(dCacheFile file) throws java.lang.Excepti...
    method dCacheFileInputStream (line 37) | public dCacheFileInputStream(String file) throws Exception {
    method available (line 46) | public int available() throws IOException {
    method read (line 57) | public int read(byte bytes[]) throws IOException {
    method read (line 65) | public int read(byte bytes[], int off, int len) throws IOException {
    method finalize (line 70) | protected void finalize() throws IOException {
    method getChannel (line 78) | public FileChannel getChannel() {

FILE: src/edu/caltech/hep/dcapj/io/dCacheFileOutputStream.java
  class dCacheFileOutputStream (line 16) | public class dCacheFileOutputStream extends FileOutputStream {
    method dCacheFileOutputStream (line 25) | public dCacheFileOutputStream(dCacheFile file) throws Exception {
    method dCacheFileOutputStream (line 36) | public dCacheFileOutputStream(String file) throws Exception {
    method write (line 46) | public void write(byte bytes[]) throws IOException {
    method write (line 57) | public void write(byte bytes[], int off, int len) throws IOException {
    method close (line 67) | public void close() throws IOException {
    method finalize (line 72) | protected void finalize() throws IOException {
    method getChannel (line 80) | public FileChannel getChannel() {

FILE: src/edu/caltech/hep/dcapj/nio/dCacheFileChannel.java
  class dCacheFileChannel (line 23) | public class dCacheFileChannel extends FileChannel {
    method dCacheFileChannel (line 37) | public dCacheFileChannel(dCacheFile file, dCacheFileInputStream fileIn) {
    method dCacheFileChannel (line 42) | public dCacheFileChannel(dCacheFile file, dCacheFileOutputStream fileO...
    method force (line 50) | @Override
    method lock (line 59) | @Override
    method map (line 69) | @Override
    method position (line 79) | @Override
    method position (line 87) | @Override
    method read (line 103) | public int read(ByteBuffer dst) throws IOException {
    method read (line 129) | public int read(ByteBuffer dst, long position) throws IOException {
    method read (line 150) | public long read(ByteBuffer[] dsts, int offset, int length)
    method size (line 167) | public long size() throws IOException {
    method transferFrom (line 183) | public long transferFrom(ReadableByteChannel src, long position, long ...
    method transferTo (line 199) | @Override
    method truncate (line 211) | @Override
    method tryLock (line 220) | @Override
    method write (line 234) | @Override
    method write (line 253) | @Override
    method write (line 270) | @Override
    method implCloseChannel (line 290) | protected void implCloseChannel() throws IOException {

FILE: src/edu/caltech/hep/dcapj/test/Main.java
  class Main (line 9) | public class Main {
    method main (line 11) | public static void main(String args[]) throws Exception {

FILE: src/edu/caltech/hep/dcapj/test/Main2.java
  class Main2 (line 10) | public class Main2 {
    method main (line 12) | public static void main(String args[]) {

FILE: src/edu/caltech/hep/dcapj/test/Main3.java
  class Main3 (line 18) | public class Main3 implements Runnable {
    method Main3 (line 29) | public Main3(String src, String dest) {
    method main (line 34) | public static void main(String args[]) {
    method run (line 72) | public void run() {
    method doIO (line 76) | public void doIO() {
    method getFileChannels (line 134) | private FileChannel[] getFileChannels() throws Exception {

FILE: src/edu/caltech/hep/dcapj/util/ControlCommandCallback.java
  type ControlCommandCallback (line 3) | public interface ControlCommandCallback {
    method handleDoorCommand (line 4) | public void handleDoorCommand(String command[]);

FILE: src/edu/caltech/hep/dcapj/util/ControlConnection.java
  class ControlConnection (line 15) | public class ControlConnection implements Runnable {
    method ControlConnection (line 34) | public ControlConnection() throws IOException,
    method initialize (line 39) | private void initialize() throws IOException, InvalidConfigurationExce...
    method doHelloConversation (line 106) | private void doHelloConversation() throws IOException {
    method run (line 138) | public void run() {
    method start (line 199) | protected void start() {
    method stop (line 208) | public void stop() {
    method isStopped (line 219) | public boolean isStopped() {
    method registerCallback (line 227) | public boolean registerCallback(int sessionID, ControlCommandCallback ...
    method unregisterCallback (line 238) | public boolean unregisterCallback(int sessionID) {
    method sendCommand (line 248) | public void sendCommand(String command) throws IOException {
    method getNextSessionID (line 254) | public int getNextSessionID() {

FILE: src/edu/caltech/hep/dcapj/util/DataConnectionCallback.java
  type DataConnectionCallback (line 7) | public interface DataConnectionCallback {
    method handleStreams (line 8) | public void handleStreams(DataInputStream dataIn, DataOutputStream dat...

FILE: src/edu/caltech/hep/dcapj/util/IOCallback.java
  class IOCallback (line 11) | public class IOCallback extends ServerNIO {
    method IOCallback (line 17) | public IOCallback() throws IOException {
    method handleConnection (line 23) | public void handleConnection(SocketChannel client) {
    method registerCallback (line 69) | public boolean registerCallback(int sessionID,
    method unregisterCallback (line 81) | public boolean unregisterCallback(int sessionID) {

FILE: src/edu/caltech/hep/dcapj/util/InvalidConfigurationException.java
  class InvalidConfigurationException (line 3) | public class InvalidConfigurationException extends Exception {
    method InvalidConfigurationException (line 5) | public InvalidConfigurationException() {
    method InvalidConfigurationException (line 9) | public InvalidConfigurationException(String message) {
    method InvalidConfigurationException (line 13) | public InvalidConfigurationException(String message, Throwable cause) {
    method InvalidConfigurationException (line 17) | public InvalidConfigurationException(Throwable cause) {

FILE: src/edu/caltech/hep/dcapj/util/Server.java
  class Server (line 9) | public abstract class Server implements Runnable {
    method Server (line 21) | public Server() throws IOException {
    method Server (line 25) | public Server(final int port) throws IOException {
    method init (line 29) | protected void init(final int port) throws IOException {
    method getTimeout (line 36) | public int getTimeout() {
    method setTimeout (line 40) | public void setTimeout(final int timeout) {
    method shutdown (line 44) | public void shutdown() {
    method start (line 68) | protected void start() {
    method getPort (line 77) | public int getPort() {
    method run (line 86) | public void run() {
    method handleConnection (line 108) | protected abstract void handleConnection(Socket client);

FILE: src/edu/caltech/hep/dcapj/util/ServerNIO.java
  class ServerNIO (line 11) | public abstract class ServerNIO implements Runnable {
    method ServerNIO (line 25) | public ServerNIO() throws IOException {
    method ServerNIO (line 29) | public ServerNIO(final int port) throws IOException {
    method init (line 33) | protected void init(final int port) throws IOException {
    method getTimeout (line 45) | public int getTimeout() {
    method setTimeout (line 49) | public void setTimeout(final int timeout) {
    method shutdown (line 53) | public void shutdown() {
    method start (line 77) | protected void start() {
    method getPort (line 86) | public int getPort() {
    method run (line 95) | public void run() {
    method handleConnection (line 117) | protected abstract void handleConnection(SocketChannel client);

FILE: src/lia/gsi/ClientTest.java
  class ClientTest (line 16) | public class ClientTest {
    method main (line 18) | public static void main(String[] args) throws UnknownHostException, IO...

FILE: src/lia/gsi/FDTGSIServer.java
  class FDTGSIServer (line 22) | public class FDTGSIServer extends GSIServer {
    method FDTGSIServer (line 27) | public FDTGSIServer() throws Exception {
    method FDTGSIServer (line 31) | public FDTGSIServer(int port) throws Exception {
    method FDTGSIServer (line 35) | public FDTGSIServer(GSSCredential cred, int port) throws Exception {
    method FDTGSIServer (line 39) | public FDTGSIServer(String serverKey, String serverCert, int port) thr...
    method start (line 43) | public void start() {
    method handleConversation (line 47) | protected void handleConversation(GSIServer parent, Socket client, Sub...

FILE: src/lia/gsi/GSIServer.java
  class GSIServer (line 30) | public class GSIServer extends GSIBaseServer {
    method GSIServer (line 40) | public GSIServer(int port) throws Exception {
    method GSIServer (line 49) | public GSIServer() throws Exception {
    method GSIServer (line 59) | public GSIServer(GSSCredential cred, int port) throws Exception {
    method GSIServer (line 71) | public GSIServer(String serverKey, String serverCert, int port) throws...
    method generateGSSCredential (line 75) | public static GSSCredential generateGSSCredential(String serverKey, St...
    method main (line 130) | public static void main(String[] args) throws Exception {
    method initialize (line 146) | protected void initialize() {
    method handleConnection (line 157) | protected void handleConnection(Peer peer) {
    method handleConversation (line 200) | protected void handleConversation(GSIServer parent, Socket client, Sub...
    method getContact (line 222) | public String getContact() {

FILE: src/lia/gsi/authz/GridMap.java
  class GridMap (line 18) | public class GridMap implements Serializable {
    method getGridMap (line 49) | public static GridMap getGridMap() throws IOException {
    method getGridMap (line 70) | public static synchronized GridMap getGridMap(String mapFile) throws I...
    method keyWordPresent (line 82) | private static boolean keyWordPresent(char[] args, int startIndex, cha...
    method normalizeDN (line 98) | public static String normalizeDN(String globusID) {
    method load (line 143) | public void load(String file) throws IOException {
    method load (line 153) | public synchronized void load(File file) throws IOException {
    method refresh (line 176) | public void refresh() throws IOException {
    method load (line 191) | public void load(InputStream input) throws IOException {
    method getUserID (line 253) | public synchronized String getUserID(String globusID) {
    method getUserIDs (line 268) | public synchronized String[] getUserIDs(String globusID) {
    method checkUser (line 302) | public synchronized boolean checkUser(String globusID, String userID) {
    method getGlobusID (line 338) | public synchronized String getGlobusID(String userID) {
    method getAllGlobusID (line 366) | public synchronized String[] getAllGlobusID(String userID) {
    method map (line 401) | public synchronized void map(String globusID, String userID) {
    class GridMapEntry (line 426) | static class GridMapEntry implements Serializable {
      method getFirstUserID (line 430) | public String getFirstUserID() {
      method getUserIDs (line 434) | public String[] getUserIDs() {
      method setUserIDs (line 438) | public void setUserIDs(String[] userIDs) {
      method getGlobusID (line 442) | public String getGlobusID() {
      method setGlobusID (line 446) | public void setGlobusID(String globusID) {
      method containsUserID (line 450) | public boolean containsUserID(String userID) {
      method addUserID (line 462) | public void addUserID(String userID) {
      method addUserIDs (line 471) | public void addUserIDs(String[] userIDs) {

FILE: src/lia/gsi/authz/GridMapAuthorization.java
  class GridMapAuthorization (line 18) | public class GridMapAuthorization extends LocalMappingAuthorization {
    method GridMapAuthorization (line 20) | public GridMapAuthorization() throws IOException {
    method getLocalID (line 24) | public String getLocalID(GSSContext context, String host) {

FILE: src/lia/gsi/authz/LocalMappingAuthorization.java
  class LocalMappingAuthorization (line 26) | public abstract class LocalMappingAuthorization extends Authorization {
    method getLocalID (line 36) | public abstract String getLocalID(GSSContext context, String host);
    method authorize (line 38) | public void authorize(GSSContext context, String host) throws Authoriz...
    method getPeerSubject (line 61) | public Subject getPeerSubject() {

FILE: src/lia/gsi/net/GSIBaseServer.java
  class GSIBaseServer (line 33) | public abstract class GSIBaseServer implements Runnable {
    method GSIBaseServer (line 60) | public GSIBaseServer() throws IOException {
    method GSIBaseServer (line 64) | public GSIBaseServer(final int port) throws IOException {
    method GSIBaseServer (line 68) | public GSIBaseServer(final GSSCredential cred, final int port) throws ...
    method GSIBaseServer (line 75) | public GSIBaseServer(final boolean secure, final int port) throws IOEx...
    method initialize (line 82) | protected void initialize() {
    method createAuthorizer (line 90) | private LocalMappingAuthorization createAuthorizer() {
    method getTimeout (line 109) | public int getTimeout() {
    method setTimeout (line 116) | public void setTimeout(final int timeout) {
    method shutdown (line 123) | public void shutdown() {
    method start (line 156) | protected void start() {
    method getCredentials (line 165) | public GSSCredential getCredentials() {
    method getProtocol (line 169) | public String getProtocol() {
    method getURL (line 178) | public String getURL() {
    method getPort (line 192) | public int getPort() {
    method getHostname (line 201) | public String getHostname() {
    method getHost (line 212) | public String getHost() {
    method run (line 222) | public void run() {
    method wrapSocket (line 282) | protected Peer wrapSocket(final Socket socket) throws GSSException {
    method setGssMode (line 302) | public void setGssMode(final Integer mode) {
    method setAuthorizationClass (line 306) | public void setAuthorizationClass(final String auth) {
    method handleConnection (line 315) | protected abstract void handleConnection(Peer peer);
    method registerDefaultDeactivator (line 322) | public void registerDefaultDeactivator() {
    method unregisterDefaultDeactivator (line 332) | public void unregisterDefaultDeactivator() {
  class AbstractServerDeactivator (line 340) | class AbstractServerDeactivator implements DeactivationHandler {
    method AbstractServerDeactivator (line 344) | public AbstractServerDeactivator(GSIBaseServer server) {
    method deactivate (line 348) | public void deactivate() {

FILE: src/lia/gsi/net/GSIGssSocketFactory.java
  class GSIGssSocketFactory (line 44) | public class GSIGssSocketFactory extends GssSocketFactory {
    method createSocket (line 62) | public static java.net.Socket createSocket(java.net.InetAddress inetAd...
    method getLocalSubject (line 136) | public static Subject getLocalSubject(Socket socket) throws GSSExcepti...
    method createUserCredential (line 154) | public static GSSCredential createUserCredential(String x509UserProxy)...
    method createUserCredential (line 166) | public static GSSCredential createUserCredential(String x509ServiceCer...
    method createSocket (line 179) | public Socket createSocket(Socket s, String host, int port, GSSContext...
    method createSocket (line 183) | public Socket createSocket(String host, int port, GSSContext context) ...

FILE: src/lia/gsi/net/Peer.java
  class Peer (line 16) | public class Peer {
    method Peer (line 20) | public Peer(Socket socket, LocalMappingAuthorization authz) {
    method getSocket (line 25) | public Socket getSocket() {
    method getPeerSubject (line 29) | public Subject getPeerSubject() {

FILE: src/lia/gsi/ssh/GSIAuthenticationClient.java
  class GSIAuthenticationClient (line 41) | public class GSIAuthenticationClient extends SshAuthenticationClient {
    method GSIAuthenticationClient (line 47) | public GSIAuthenticationClient() throws GSSException, IOException {
    method createUserCredential (line 84) | public static GSSCredential createUserCredential(String x509UserProxy)...
    method getMethodName (line 96) | public final String getMethodName() {
    method reset (line 100) | public void reset() {
    method authenticate (line 103) | public void authenticate(AuthenticationProtocolClient authenticationpr...
    method getPersistableProperties (line 182) | public Properties getPersistableProperties() {
    method setPersistableProperties (line 187) | public void setPersistableProperties(Properties properties) {
    method canAuthenticate (line 190) | public boolean canAuthenticate() {

FILE: src/lia/gsi/ssh/TextSSHClient.java
  class TextSSHClient (line 17) | public class TextSSHClient {
    method main (line 19) | public static void main(String[] args) throws Exception {

FILE: src/lia/util/net/common/AbstractBPool.java
  class AbstractBPool (line 26) | public abstract class AbstractBPool {
    method AbstractBPool (line 44) | public AbstractBPool(int bufferSize, int maxPollIter) {
    method AbstractBPool (line 48) | public AbstractBPool(int bufferSize, int maxPollIter, boolean trackAll...
    method AbstractBPool (line 52) | public AbstractBPool(int bufferSize, int maxPollIter, boolean trackAll...
    method getAddress (line 114) | private static long getAddress(ByteBuffer buffy) {
    method allocateAlignedByteBuffer (line 120) | private static ByteBuffer allocateAlignedByteBuffer(int capacity, long...
    method tryAllocateBuffer (line 149) | private ByteBuffer tryAllocateBuffer() {
    method totalAllocated (line 196) | public final long totalAllocated() {
    method take (line 200) | public ByteBuffer take() throws InterruptedException {
    method checkBuffer (line 253) | private final boolean checkBuffer(final ByteBuffer bb, final boolean e...
    method poll (line 264) | public ByteBuffer poll() {
    method poll (line 310) | public ByteBuffer poll(long timeout, TimeUnit unit) throws Interrupted...
    method put (line 355) | public boolean put(ByteBuffer buff) {
    method getBufferSize (line 399) | public int getBufferSize() {
    method getSize (line 403) | public int getSize() {
    method identityMapStats (line 407) | public String identityMapStats() {
    method getCapacity (line 417) | public int getCapacity() {

FILE: src/lia/util/net/common/AbstractFDTCloseable.java
  class AbstractFDTCloseable (line 17) | public abstract class AbstractFDTCloseable implements FDTCloseable {
    method AbstractFDTCloseable (line 56) | public AbstractFDTCloseable() {
    method close (line 60) | public boolean close(final String downMessage, final Throwable downCau...
    method isClosed (line 80) | public boolean isClosed() {
    method setClosed (line 84) | public void setClosed(boolean closed) {
    method downMessage (line 88) | public String downMessage() {
    method downCause (line 92) | public Throwable downCause() {
    method internalClose (line 100) | protected abstract void internalClose() throws Exception;
    class AsynchronousCloseThread (line 108) | private static final class AsynchronousCloseThread extends Thread {
      method AsynchronousCloseThread (line 112) | private AsynchronousCloseThread() {
      method run (line 118) | public void run() {

FILE: src/lia/util/net/common/AbstractFDTIOEntity.java
  class AbstractFDTIOEntity (line 16) | public abstract class AbstractFDTIOEntity extends AbstractFDTCloseable i...
    method AbstractFDTIOEntity (line 21) | public AbstractFDTIOEntity(long initialProcessedBytes, long initialUti...
    method AbstractFDTIOEntity (line 26) | public AbstractFDTIOEntity() {
    method addAndGetTotalBytes (line 30) | public long addAndGetTotalBytes(long delta) {
    method addAndGetUtilBytes (line 34) | public long addAndGetUtilBytes(long delta) {
    method getTotalBytes (line 38) | public long getTotalBytes() {
    method getUtilBytes (line 42) | public long getUtilBytes() {

FILE: src/lia/util/net/common/AcceptableTask.java
  class AcceptableTask (line 22) | public final class AcceptableTask implements Runnable {
    method AcceptableTask (line 34) | public AcceptableTask(final SocketChannel sc) throws IOException {
    method run (line 49) | public void run() {
    method configureSocket (line 88) | private void configureSocket(ByteBuffer firstByte, ByteBuffer clientID...

FILE: src/lia/util/net/common/Config.java
  class Config (line 30) | public class Config {
    method Config (line 214) | private Config(final Map<String, Object> configMap) throws InvalidFDTP...
    method getMonitor (line 557) | public String getMonitor()
    method initOpenTSDBMonitorClient (line 570) | public void initOpenTSDBMonitorClient()
    method getFDTTag (line 575) | public String getFDTTag()
    method setFDTTag (line 580) | public void setFDTTag(String fdtTag)
    method getOpenTSDBMonitorClient (line 586) | public HttpClientImpl getOpenTSDBMonitorClient()
    method getMinMTU (line 591) | private static final int getMinMTU() {
    method getBulkSockConnect (line 644) | public static int getBulkSockConnect() {
    method getBulkSockConnectWait (line 648) | public static long getBulkSockConnectWait() {
    method getUsage (line 652) | public static final String getUsage() {
    method getMaxTakePollIter (line 656) | public static int getMaxTakePollIter() {
    method getInstance (line 660) | public static final Config getInstance() {
    method initInstance (line 674) | public static final void initInstance(final Map<String, Object> config...
    method closeSessionRelatedSocks (line 684) | private static void closeSessionRelatedSocks(List<Object> socks) {
    method getLogFiles (line 719) | private String[] getLogFiles(String sessionID) {
    method getListFilesFrom (line 723) | public String getListFilesFrom() {
    method setListFilesFrom (line 727) | public void setListFilesFrom(String listFilesFrom) {
    method getFDTMode (line 731) | private String getFDTMode(Map<String, Object> configMap) {
    method getKeepAliveDelay (line 742) | public long getKeepAliveDelay(TimeUnit unit) {
    method getConfigMap (line 746) | public Map<String, Object> getConfigMap() {
    method setConfigMap (line 750) | public void setConfigMap(Map<String, Object> configMap) {
    method getReportingTaskDelay (line 754) | public long getReportingTaskDelay() {
    method getStatsLevel (line 758) | public Level getStatsLevel() {
    method getMonID (line 762) | public String getMonID() {
    method getRetryIOCount (line 766) | public int getRetryIOCount() {
    method getByteBufferSize (line 770) | public int getByteBufferSize() {
    method isNagleEnabled (line 774) | public boolean isNagleEnabled() {
    method isGSIModeEnabled (line 778) | public boolean isGSIModeEnabled() {
    method getSockNum (line 782) | public int getSockNum() {
    method getLisaReportingInterval (line 786) | public long getLisaReportingInterval() {
    method getApMonReportingInterval (line 790) | public long getApMonReportingInterval() {
    method getRateLimit (line 797) | public long getRateLimit() {
    method getRateLimitDelay (line 801) | public long getRateLimitDelay() {
    method getSockBufSize (line 805) | public int getSockBufSize() {
    method getLisaHost (line 809) | public String getLisaHost() {
    method getLisaPort (line 813) | public int getLisaPort() {
    method setLisaPort (line 817) | public void setLisaPort(int lisaPort) {
    method getSshKeyPath (line 821) | public String getSshKeyPath() {
    method isNoTmpFlagSet (line 825) | public boolean isNoTmpFlagSet() {
    method isNoLockFlagSet (line 829) | public boolean isNoLockFlagSet() {
    method getHostName (line 833) | public String getHostName() {
    method setHostName (line 840) | public void setHostName(String hostname) {
    method getPort (line 845) | public int getPort() {
    method getDefaultPort (line 849) | public int getDefaultPort() {
    method getGSIPort (line 853) | public int getGSIPort() {
    method setGSIPort (line 857) | public void setGSIPort(int port) {
    method getSSHPort (line 861) | public int getSSHPort() {
    method setSSHPort (line 865) | public void setSSHPort(int port) {
    method setPortNo (line 869) | public void setPortNo(int port) {
    method isStandAlone (line 873) | public boolean isStandAlone() {
    method getWriteMode (line 877) | public String getWriteMode() {
    method getFileList (line 881) | public String[] getFileList() {
    method setFileList (line 885) | public void setFileList(String[] fileList) {
    method getRemappedFileList (line 889) | public String[] getRemappedFileList() {
    method getPreFilters (line 893) | public String getPreFilters() {
    method getPostFilters (line 897) | public String getPostFilters() {
    method getDestinationDir (line 901) | public String getDestinationDir() {
    method setDestinationDir (line 905) | public void setDestinationDir(String destDir) {
    method getDestinationPort (line 909) | public int getDestinationPort() {
    method setDestinationPort (line 913) | public void setDestinationPort(int destPort) {
    method registerTransferPortForSession (line 917) | public void registerTransferPortForSession(int newTransferPort, String...
    method getNewRemoteTransferPort (line 921) | public int getNewRemoteTransferPort() {
    method getRandomPort (line 946) | private int getRandomPort(int defaultPort)
    method findAvailablePort (line 967) | private int findAvailablePort() {
    method setSessionSocket (line 987) | public void setSessionSocket(ServerSocketChannel ssc, ServerSocket ss,...
    method releaseRemoteTransferPort (line 996) | public void releaseRemoteTransferPort(String sessionID) {
    method getRemoteTransferPort (line 1012) | public int getRemoteTransferPort() {
    method getRemoteTransferPorts (line 1016) | public List<Object> getRemoteTransferPorts() {
    method setRemoteTransferPort (line 1020) | public void setRemoteTransferPort(int remoteTransferPort) {
    method getSourceIP (line 1024) | public String getSourceIP() {
    method getDestinationIP (line 1028) | public String getDestinationIP() {
    method setDestinationIP (line 1032) | public void setDestinationIP(String dIP) {
    method getNumberOfSelectors (line 1037) | public int getNumberOfSelectors() {
    method getApMonHosts (line 1041) | public String getApMonHosts() {
    method setApMonHosts (line 1045) | public void setApMonHosts(String apMonHosts) {
    method isCoordinatorMode (line 1049) | public boolean isCoordinatorMode() {
    method setCoordinatorMode (line 1053) | public void setCoordinatorMode(boolean coordinatorMode) {
    method isListFilesMode (line 1062) | public boolean isListFilesMode() {
    method isRetrievingLogFile (line 1066) | public boolean isRetrievingLogFile() {
    method setRetrievingLogFile (line 1070) | public void setRetrievingLogFile(Object sessionID) {
    method isPullMode (line 1079) | public boolean isPullMode() {
    method setPullMode (line 1083) | public void setPullMode(boolean pullMode) {
    method shouldUpdate (line 1092) | public boolean shouldUpdate() {
    method isRecursive (line 1096) | public boolean isRecursive() {
    method isLisaDisabled (line 1100) | public boolean isLisaDisabled() {
    method loop (line 1104) | public boolean loop() {
    method localLoop (line 1108) | public boolean localLoop() {
    method useFixedBlocks (line 1112) | public boolean useFixedBlocks() {
    method getSourceAddressFilter (line 1116) | public NetMatcher getSourceAddressFilter() {
    method computeMD5 (line 1120) | public boolean computeMD5() {
    method isSSHModeEnabled (line 1124) | public boolean isSSHModeEnabled() {
    method isGSISSHModeEnabled (line 1128) | public boolean isGSISSHModeEnabled() {
    method getReadersCount (line 1132) | public int getReadersCount() {
    method getWritersCount (line 1136) | public int getWritersCount() {
    method getMaxPartitionCount (line 1140) | public int getMaxPartitionCount() {
    method getSSHConfig (line 1144) | public int getSSHConfig() {
    method isBlocking (line 1167) | public boolean isBlocking() {
    method getDestinationUser (line 1171) | public String getDestinationUser() {
    method isLisaRestartEnabled (line 1175) | public boolean isLisaRestartEnabled() {
    method getLocalAddresses (line 1179) | public String getLocalAddresses() {
    method getRemoteCommand (line 1183) | public String getRemoteCommand() {
    method getSourceUsers (line 1187) | public String[] getSourceUsers() {
    method getSourceHosts (line 1191) | public String[] getSourceHosts() {
    method massStorageConfig (line 1195) | public String massStorageConfig() {
    method massStorageType (line 1199) | public String massStorageType() {
    method storageParams (line 1203) | public MassStorage storageParams() {
    method isNetTest (line 1207) | public boolean isNetTest() {
    method isGenTest (line 1211) | public boolean isGenTest() {
    method getLogLevel (line 1215) | public String getLogLevel() {
    method setLogLevel (line 1219) | public void setLogLevel(String logLevel) {
    method getFileChannelProviderFactory (line 1223) | public FileChannelProviderFactory getFileChannelProviderFactory() {
    method isThirdPartyCopyAgent (line 1227) | public boolean isThirdPartyCopyAgent() {
    method setThirdPartyCopyAgent (line 1231) | public void setThirdPartyCopyAgent(boolean isThirdPartyCopyAgent) {
    method getListenAddress (line 1240) | public String getListenAddress()
    method getOpentsdb (line 1245) | public String getOpentsdb() {
    method setOpentsdb (line 1249) | public void setOpentsdb(String opentsdb) {
    method getCustomShell (line 1253) | public String getCustomShell() {
    method isThrottlingEnabled (line 1257) | public boolean isThrottlingEnabled() {

FILE: src/lia/util/net/common/ControlStream.java
  type ControlStream (line 12) | public interface ControlStream {
    method connect (line 17) | void connect() throws IOException;
    method startProgram (line 19) | public void startProgram(String cmd, String customShell) throws IOExce...
    method getProgramStdOut (line 21) | public InputStream getProgramStdOut() throws IOException;
    method getProgramStdErr (line 23) | public InputStream getProgramStdErr() throws IOException;
    method waitForControlMessage (line 33) | public void waitForControlMessage(String expect, boolean allowEOF, boo...
    method waitForControlMessage (line 41) | public void waitForControlMessage(String expect, boolean allowEOF) thr...
    method waitForControlMessage (line 48) | public void waitForControlMessage(String expect) throws IOException;
    method saveStdErr (line 56) | public void saveStdErr() throws IOException;
    method getExitCode (line 58) | public int getExitCode();
    method close (line 60) | public void close();

FILE: src/lia/util/net/common/DDCopy.java
  class DDCopy (line 20) | public class DDCopy {
    method format (line 92) | private static final String format(final double number, final long fac...
    method printHelp (line 139) | private static final void printHelp() {
    method main (line 143) | public static void main(String[] args) throws Exception {
    class ReportingThread (line 347) | private static final class ReportingThread extends Thread {
      method ReportingThread (line 355) | public ReportingThread() {
      method run (line 360) | public void run() {
    class ShutdownHook (line 395) | private static final class ShutdownHook extends Thread {
      method run (line 396) | public void run() {

FILE: src/lia/util/net/common/DirectByteBufferPool.java
  class DirectByteBufferPool (line 18) | public class DirectByteBufferPool extends AbstractBPool {
    method DirectByteBufferPool (line 30) | private DirectByteBufferPool(int bufferSize, int maxPollIter, boolean ...
    method getInstance (line 35) | public static final DirectByteBufferPool getInstance() {
    method initInstance (line 52) | public static final boolean initInstance(final int buffSize, final int...

FILE: src/lia/util/net/common/FDTBuffer.java
  class FDTBuffer (line 15) | public class FDTBuffer {
    method FDTBuffer (line 20) | FDTBuffer() {
    method setBuffer (line 24) | void setBuffer(ByteBuffer[] buffers) {
    method free (line 32) | boolean free() {
    method get (line 36) | public ByteBuffer[] get() {
    method hasRemaining (line 40) | public boolean hasRemaining() {

FILE: src/lia/util/net/common/FDTBufferPool.java
  class FDTBufferPool (line 15) | public class FDTBufferPool {
    method FDTBufferPool (line 41) | private FDTBufferPool() {
    method getInstance (line 49) | public static final FDTBufferPool getInstance() {
    method initInstance (line 73) | public static final boolean initInstance(int buffSize) {
    method tryAllocateBuffer (line 89) | private ByteBuffer tryAllocateBuffer() {
    method getBufferSize (line 111) | public int getBufferSize() {
    method getSize (line 115) | public int getSize() {
    method getCapacity (line 119) | public int getCapacity() {
    method take (line 128) | public FDTBuffer take(int size) throws InterruptedException {
    method put (line 215) | public boolean put(FDTBuffer fdtBuffer) {

FILE: src/lia/util/net/common/FDTCloseable.java
  type FDTCloseable (line 15) | public interface FDTCloseable {
    method close (line 17) | public boolean close(String downMessage, Throwable downCause);
    method isClosed (line 19) | public boolean isClosed();

FILE: src/lia/util/net/common/FDTCommandLine.java
  class FDTCommandLine (line 16) | public class FDTCommandLine {
    method FDTCommandLine (line 29) | public FDTCommandLine(final String[] args) {
    method getOptionsMap (line 56) | public HashMap<String, String> getOptionsMap() {
    method getOption (line 60) | public String getOption(String key) {
    method getLeftArguments (line 64) | public ArrayList<String> getLeftArguments() {

FILE: src/lia/util/net/common/FDTVersion.java
  class FDTVersion (line 12) | public final class FDTVersion implements Comparable<FDTVersion> {
    method FDTVersion (line 26) | private FDTVersion(int major, int minor, int maintenance, String relea...
    method fromVersionString (line 34) | public static FDTVersion fromVersionString(final String versionString) {
    method toString (line 65) | @Override
    method compareTo (line 81) | @Override

FILE: src/lia/util/net/common/FileChannelProvider.java
  type FileChannelProvider (line 19) | public interface FileChannelProvider {
    method getFile (line 26) | public File getFile(final String fileName) throws IOException;
    method getPartitionID (line 33) | public int getPartitionID(final File file) throws IOException;
    method getFileChannel (line 40) | public FileChannel getFileChannel(final File file, final String openMo...

FILE: src/lia/util/net/common/FileChannelProviderFactory.java
  type FileChannelProviderFactory (line 16) | public interface FileChannelProviderFactory {
    method newReaderFileChannelProvider (line 17) | FileChannelProvider newReaderFileChannelProvider(FDTReaderSession read...
    method newWriterFileChannelProvider (line 19) | FileChannelProvider newWriterFileChannelProvider(FDTWriterSession writ...

FILE: src/lia/util/net/common/GSISSHControlStream.java
  class GSISSHControlStream (line 20) | public class GSISSHControlStream implements ControlStream {
    method GSISSHControlStream (line 44) | public GSISSHControlStream(String hostname, String username) {
    method GSISSHControlStream (line 56) | public GSISSHControlStream(String hostname, String username, int port) {
    method main (line 63) | public static void main(String[] args) throws IOException {
    method connect (line 80) | public void connect() throws IOException {
    method startProgram (line 116) | public void startProgram(String cmd, String customShell) throws IOExce...
    method getProgramStdOut (line 126) | public InputStream getProgramStdOut() {
    method getProgramStdErr (line 135) | public InputStream getProgramStdErr() throws IOException {
    method waitForControlMessage (line 144) | public void waitForControlMessage(String expect, boolean allowEOF, boo...
    method waitForControlMessage (line 174) | public void waitForControlMessage(String expect, boolean allowEOF) thr...
    method waitForControlMessage (line 183) | public void waitForControlMessage(String expect) throws IOException {
    method saveStdErr (line 192) | public void saveStdErr() throws IOException {
    method getExitCode (line 204) | public int getExitCode() {
    method close (line 213) | public void close() {
    class LogWriter (line 230) | static class LogWriter extends Thread {
      method LogWriter (line 234) | public LogWriter(BufferedReader br) {
      method LogWriter (line 239) | public LogWriter(BufferedReader br, String fileName) {
      method run (line 244) | public void run() {

FILE: src/lia/util/net/common/HeaderBufferPool.java
  class HeaderBufferPool (line 16) | public class HeaderBufferPool extends AbstractBPool {
    method HeaderBufferPool (line 28) | private HeaderBufferPool(int bufferSize, int maxPollIter, boolean trac...
    method getInstance (line 33) | public static final HeaderBufferPool getInstance() {
    method initInstance (line 50) | public static final boolean initInstance() {

FILE: src/lia/util/net/common/InvalidFDTParameterException.java
  class InvalidFDTParameterException (line 11) | public class InvalidFDTParameterException extends Exception {
    method InvalidFDTParameterException (line 15) | public InvalidFDTParameterException() {
    method InvalidFDTParameterException (line 19) | public InvalidFDTParameterException(String message) {
    method InvalidFDTParameterException (line 23) | public InvalidFDTParameterException(String message, Throwable cause) {
    method InvalidFDTParameterException (line 27) | public InvalidFDTParameterException(Throwable cause) {

FILE: src/lia/util/net/common/KernelTest.java
  class KernelTest (line 22) | public class KernelTest extends Thread {
    method KernelTest (line 35) | public KernelTest(int id) {
    method main (line 41) | public static final void main(String[] args) throws Exception {
    method run (line 85) | public void run() {

FILE: src/lia/util/net/common/LocalHost.java
  class LocalHost (line 18) | public class LocalHost {
    method getPublicIPs4 (line 20) | static public List<String> getPublicIPs4() {
    method getStringPublicIPs4 (line 48) | static public String getStringPublicIPs4() {
    method getPublicIPs6 (line 58) | static public List<String> getPublicIPs6() {
    method getPublicIP4 (line 81) | static public String getPublicIP4() {
    method getPublicIP6 (line 106) | static public String getPublicIP6() {
    method main (line 133) | public static void main(String[] args) {

FILE: src/lia/util/net/common/MassStorage.java
  class MassStorage (line 14) | public class MassStorage {
    method checkType (line 38) | static public boolean checkType(String type) {
    method siteStorageID (line 44) | public String siteStorageID() {
    method storageRoot (line 48) | public String storageRoot() {
    method storageType (line 52) | public String storageType() {
    method storageAccessCmd (line 56) | public String storageAccessCmd() {
    method storageCmdOptions (line 60) | public String storageCmdOptions() {
    method storageAccessPoint (line 64) | public String storageAccessPoint() {
    method localFilePrefix (line 68) | public String localFilePrefix() {
    method localFileDir (line 72) | public String localFileDir() {
    method nThreads (line 76) | public int nThreads() {
    method verbose (line 80) | public int verbose() {
    method init (line 84) | public boolean init(String configFile) {

FILE: src/lia/util/net/common/MonitoringUtils.java
  class MonitoringUtils (line 23) | public class MonitoringUtils {
    method MonitoringUtils (line 32) | public MonitoringUtils(Config config, FDTSession session) {
    method MonitoringUtils (line 39) | public MonitoringUtils(Config config) {
    method monitorStart (line 45) | public void monitorStart(long timeRequested, String clusterName) {
    method monitorFinish (line 54) | public void monitorFinish(long timeRequested, String clusterName) {
    method sendMetricsToServer (line 63) | private synchronized void sendMetricsToServer(MetricBuilder builder) {
    method monitorStartSession (line 90) | private void monitorStartSession(MetricBuilder builder, long timeStart...
    method monitorFinishSession (line 113) | private void monitorFinishSession(MetricBuilder builder, long timeStar...
    method monitorStartConfiguration (line 137) | public void monitorStartConfiguration(MetricBuilder builder, long time...
    method addTags (line 143) | private void addTags(Metric metric, String clusterName, String destIP) {
    method shareMetrics (line 152) | public synchronized void shareMetrics(String clusterName, String nodeN...
    method getHostName (line 180) | private String getHostName() {
    method getHostIP (line 194) | private String getHostIP() {
    method monitorEndStats (line 216) | public void monitorEndStats(boolean finishStatus, long totalBytes, lon...

FILE: src/lia/util/net/common/NetMatcher.java
  class NetMatcher (line 35) | public class NetMatcher {
    method NetMatcher (line 39) | public NetMatcher() {
    method NetMatcher (line 42) | public NetMatcher(final String[] nets) {
    method NetMatcher (line 46) | public NetMatcher(final Collection nets) {
    method initInetNetworks (line 50) | public void initInetNetworks(final Collection<String> nets) {
    method initInetNetworks (line 62) | public void initInetNetworks(final String[] nets) {
    method matchInetNetwork (line 74) | public boolean matchInetNetwork(final String hostIP) {
    method matchInetNetwork (line 92) | public boolean matchInetNetwork(final InetAddress ip) {
    method toString (line 102) | public String toString() {
    method log (line 106) | protected void log(String s) {
  class InetNetwork (line 110) | class InetNetwork {
    method InetNetwork (line 132) | public InetNetwork(InetAddress ip, InetAddress netmask) {
    method getFromString (line 137) | public static InetNetwork getFromString(String netspec) throws java.ne...
    method maskIP (line 150) | public static final InetAddress maskIP(final byte[] ip, final byte[] m...
    method maskIP (line 158) | public static InetAddress maskIP(final InetAddress ip, final InetAddre...
    method normalizeFromAsterisk (line 171) | static private String normalizeFromAsterisk(final String netspec) {
    method normalizeFromCIDR (line 187) | static private String normalizeFromCIDR(final String netspec) {
    method getByAddress (line 194) | private static InetAddress getByAddress(byte[] ip) throws java.net.Unk...
    method main (line 209) | public static void main(String[] args) {
    method contains (line 216) | public boolean contains(final String name) throws java.net.UnknownHost...
    method contains (line 220) | public boolean contains(final InetAddress ip) {
    method toString (line 224) | public String toString() {
    method hashCode (line 228) | public int hashCode() {
    method equals (line 232) | public boolean equals(Object obj) {

FILE: src/lia/util/net/common/NetloggerRecord.java
  class NetloggerRecord (line 10) | public class NetloggerRecord {
    method toULMDate (line 52) | public static String toULMDate(Date date) {
    method getBuffer (line 61) | public int getBuffer() {
    method setBuffer (line 65) | public void setBuffer(int buffer) {
    method getBlock (line 69) | public int getBlock() {
    method setBlock (line 73) | public void setBlock(int block) {
    method getCode (line 77) | public String getCode() {
    method setCode (line 81) | public void setCode(String code) {
    method getCompleted (line 85) | public Date getCompleted() {
    method setCompleted (line 89) | public void setCompleted(Date completed) {
    method getDestination (line 93) | public InetAddress getDestination() {
    method setDestination (line 97) | public void setDestination(InetAddress destination) {
    method getHost (line 101) | public InetAddress getHost() {
    method setHost (line 105) | public void setHost(InetAddress host) {
    method getNbytes (line 109) | public long getNbytes() {
    method setNbytes (line 113) | public void setNbytes(long nbytes) {
    method getStart (line 117) | public Date getStart() {
    method setStart (line 121) | public void setStart(Date start) {
    method getStreams (line 125) | public int getStreams() {
    method setStreams (line 129) | public void setStreams(int streams) {
    method getType (line 133) | public String getType() {
    method setType (line 137) | public void setType(String type) {
    method toULMString (line 141) | public String toULMString() {
    method toString (line 159) | @Override

FILE: src/lia/util/net/common/SSHControlStream.java
  class SSHControlStream (line 21) | public class SSHControlStream implements ControlStream {
    method SSHControlStream (line 49) | public SSHControlStream(String hostname, String username) {
    method SSHControlStream (line 61) | public SSHControlStream(String hostname, String username, int port) {
    method main (line 68) | public static void main(String[] args) throws IOException {
    method connect (line 86) | public void connect() throws IOException {
    method getPassword (line 244) | public String getPassword(String message) throws IOException {
    method startProgram (line 251) | public void startProgram(String cmd, String customShell) throws IOExce...
    method getProgramStdOut (line 259) | public InputStream getProgramStdOut() {
    method getProgramStdErr (line 266) | public InputStream getProgramStdErr() {
    method waitForControlMessage (line 273) | public void waitForControlMessage(String expect, boolean allowEOF, boo...
    method waitForControlMessage (line 300) | public void waitForControlMessage(String expect, boolean allowEOF) thr...
    method waitForControlMessage (line 307) | public void waitForControlMessage(String expect) throws IOException {
    method saveStdErr (line 314) | public void saveStdErr() throws IOException {
    method getExitCode (line 324) | public int getExitCode() {
    method close (line 331) | public void close() {
    class LogWriter (line 343) | static class LogWriter extends Thread {
      method LogWriter (line 348) | public LogWriter(BufferedReader br) {
      method LogWriter (line 353) | public LogWriter(BufferedReader br, String fileName) {
      method run (line 358) | public void run() {
    class InteractiveLogic (line 396) | class InteractiveLogic implements InteractiveCallback {
      method InteractiveLogic (line 402) | public InteractiveLogic(String lastError, String prefix) {
      method replyToChallenge (line 408) | public String[] replyToChallenge(String name, String instruction, in...
      method getPromptCount (line 446) | public int getPromptCount() {

FILE: src/lia/util/net/common/StoragePathDecoder.java
  class StoragePathDecoder (line 9) | public class StoragePathDecoder {
    method StoragePathDecoder (line 16) | public StoragePathDecoder(String path,
    method storageType (line 24) | public String storageType() {
    method siteStorageID (line 28) | public String siteStorageID() {
    method storageRoot (line 32) | public String storageRoot() {
    method pathToFileFromRoot (line 36) | public String pathToFileFromRoot() {
    method hasStorageInfo (line 40) | public boolean hasStorageInfo() {
    method decode (line 45) | private void decode(String path) {

FILE: src/lia/util/net/common/SystemLoadMonitor.java
  class SystemLoadMonitor (line 7) | public class SystemLoadMonitor implements Runnable {
    method SystemLoadMonitor (line 27) | private SystemLoadMonitor() {
    method getInstance (line 37) | public static SystemLoadMonitor getInstance() {
    method startMonitoring (line 41) | private void startMonitoring() {
    method run (line 47) | @Override
    method calculateCpuLoad (line 64) | private double calculateCpuLoad() {
    method calculatePerCoreCpuLoad (line 70) | private double[] calculatePerCoreCpuLoad() {
    method getSystemLoadAverage (line 76) | public double[] getSystemLoadAverage() {
    method getRawContextSwitches (line 85) | private long getRawContextSwitches() {
    method calculateContextSwitches (line 91) | private long calculateContextSwitches() {
    method getCpuLoad (line 98) | public double getCpuLoad() {
    method getPerCoreLoads (line 102) | public double[] getPerCoreLoads() {
    method getSystemLoadAverages (line 106) | public double[] getSystemLoadAverages() {
    method getContextSwitches (line 110) | public long getContextSwitches() {

FILE: src/lia/util/net/common/Test.java
  class Test (line 13) | public class Test {
    method main (line 14) | public static void main(String[] args) {

FILE: src/lia/util/net/common/Test2MD5Sum.java
  class Test2MD5Sum (line 20) | public class Test2MD5Sum {
    method Test2MD5Sum (line 25) | public Test2MD5Sum() {
    method main (line 28) | public static final void main(String[] args) throws Exception {
    method getMap (line 78) | private static final TreeMap<String, String> getMap(final String fName...

FILE: src/lia/util/net/common/Utils.java
  class Utils (line 36) | public final class Utils {
    method getStackTrace (line 94) | public static String getStackTrace(Throwable t) {
    method getSchedExecService (line 103) | public static ScheduledThreadPoolExecutor getSchedExecService(final St...
    method getStandardExecService (line 141) | public static ExecutorService getStandardExecService(final String name...
    method getStandardExecService (line 186) | public static ExecutorService getStandardExecService(final String name...
    method formatWithByteFactor (line 191) | public static String formatWithByteFactor(final double number, final l...
    method formatWithBitFactor (line 225) | public static String formatWithBitFactor(final double number, final lo...
    method speedDecimalFormat (line 259) | private static String speedDecimalFormat(final double no) {
    method percentDecimalFormat (line 265) | public static String percentDecimalFormat(final double no) {
    method getETA (line 271) | public static String getETA(final long seconds) {
    method getETA (line 325) | public static String getETA(final long value, TimeUnit unit) {
    method getMonitoringExecService (line 374) | public static ScheduledThreadPoolExecutor getMonitoringExecService() {
    method getDirectBufferPool (line 378) | public static DirectByteBufferPool getDirectBufferPool() {
    method availableProcessors (line 382) | public static int availableProcessors() {
    method getHeaderBufferPool (line 386) | public static HeaderBufferPool getHeaderBufferPool() {
    method initApMonInstance (line 390) | public static void initApMonInstance(ApMon apmon) throws Exception {
    method getApMon (line 403) | public static ApMon getApMon() {
    method isCustomLog (line 424) | public static boolean isCustomLog() {
    method buffToString (line 437) | public static String buffToString(final ByteBuffer bb) {
    method parseArguments (line 450) | public static Map<String, Object> parseArguments(final String args[], ...
    method getStringValue (line 633) | static String getStringValue(final Map<String, Object> configMap, Stri...
    method getLongValue (line 642) | public static long getLongValue(final Map<String, Object> configMap, f...
    method getDoubleValue (line 676) | public static double getDoubleValue(final Map<String, Object> configMa...
    method getIntValue (line 711) | public static int getIntValue(final Map<String, Object> configMap, fin...
    method createOrGetRWFile (line 745) | private static File createOrGetRWFile(final String parentDirName, fina...
    method updatePropertyAndStore (line 803) | public static void updatePropertyAndStore(String dirName, String fileN...
    method getFDTUpdateProperties (line 833) | private static Properties getFDTUpdateProperties() {
    method updateTotalCounter (line 856) | private static boolean updateTotalCounter(final long total, final Stri...
    method checkAndSetInstanceID (line 935) | private static void checkAndSetInstanceID(final Properties props) {
    method updateTotalReadCounter (line 978) | public static boolean updateTotalReadCounter(final long totalRead) thr...
    method updateTotalWriteCounter (line 982) | public static boolean updateTotalWriteCounter(final long totalWrite) t...
    method drainFileBlockQueue (line 990) | public static int drainFileBlockQueue(Queue<FileBlock> fileBlockQueue) {
    method checkForUpdate (line 1022) | public static boolean checkForUpdate(final String currentVersion, fina...
    method updateFDT (line 1116) | public static boolean updateFDT(final String currentVersion, final Str...
    method downloadFDT (line 1272) | private static void downloadFDT(FileOutputStream fos, String downloadU...
    method logAdditionalInfo (line 1293) | private static void logAdditionalInfo(JSONObject jsonObject) throws JS...
    method logReleaseName (line 1299) | private static void logReleaseName(JSONObject jsonObject) throws JSONE...
    method logReleaseNotes (line 1304) | private static void logReleaseNotes(JSONObject jsonObject) throws JSON...
    method getDownloadURL (line 1309) | private static String getDownloadURL(JSONObject jsonObject) throws JSO...
    method logPublishDate (line 1317) | private static String logPublishDate(JSONObject jsonObject) throws JSO...
    method getJsonInfo (line 1323) | private static JSONObject getJsonInfo(InputStream connInputStream) thr...
    method getTagName (line 1335) | private static String getTagName(JSONObject jsonObject) throws JSONExc...
    method getJsonString (line 1341) | private static String getJsonString(String response) {
    method connectTo (line 1349) | private static InputStream connectTo(String updateURL) throws IOExcept...
    method getUsage (line 1362) | public static String getUsage() {
    method md5ToString (line 1382) | public static String md5ToString(byte[] md5sum) {
    method copyFile2File (line 1399) | private static void copyFile2File(File s, File d, boolean noLock) thro...
    method getRecursiveFiles (line 1462) | public static void getRecursiveFiles(String fileName, String remappedF...
    method closeIgnoringExceptions (line 1497) | public static void closeIgnoringExceptions(FDTCloseable closeable, Str...
    method closeIgnoringExceptions (line 1514) | public static void closeIgnoringExceptions(Closeable closeable) {
    method closeIgnoringExceptions (line 1531) | public static void closeIgnoringExceptions(Selector selector) {
    method closeIgnoringExceptions (line 1548) | public static void closeIgnoringExceptions(Socket socket) {
    method cancelFutureIgnoringException (line 1560) | public static void cancelFutureIgnoringException(Future<?> f, boolean ...
    method closeIgnoringExceptions (line 1577) | public static void closeIgnoringExceptions(ServerSocket serverSocket) {
    method toStringSelectionKey (line 1589) | public static String toStringSelectionKey(final FDTSelectionKey fsk) {
    method toStringSelectionKey (line 1620) | private static String toStringSelectionKey(final SelectionKey sk) {
    method compareVersions (line 1640) | @SuppressWarnings("SameParameterValue")
    method toStringSelectionKeyOps (line 1660) | private static String toStringSelectionKeyOps(final int keyOps) {
    method joinString (line 1680) | static String joinString(CharSequence delimiter, CharSequence... eleme...
    method getLoopbackAddress (line 1693) | static InetAddress getLoopbackAddress() {
    method getTransportPortsValue (line 1706) | public static ArrayBlockingQueue<Integer> getTransportPortsValue(Map<S...
    method initLocalProps (line 1725) | private static void initLocalProps(String level, Properties localProps) {
    method initLogger (line 1761) | public static void initLogger(String level, File logFile, Properties l...
    method waitAndWork (line 1810) | public static void waitAndWork(ExecutorService executor, ServerSocket ...
    method getFDTTransferPort (line 1828) | public static int getFDTTransferPort(Config config) throws Exception {
    method waitForTask (line 1836) | private static void waitForTask(ExecutorService executor, ServerSocket...
    method isTransferPort (line 1878) | public static boolean isTransferPort(int localPort) {

FILE: src/lia/util/net/copy/Accountable.java
  type Accountable (line 12) | public interface Accountable {
    method getUtilBytes (line 14) | public long getUtilBytes();
    method getTotalBytes (line 16) | public long getTotalBytes();
    method getSize (line 18) | public long getSize();
    method addAndGetUtilBytes (line 20) | public long addAndGetUtilBytes(long delta);
    method addAndGetTotalBytes (line 22) | public long addAndGetTotalBytes(long delta);

FILE: src/lia/util/net/copy/AccountableEntity.java
  class AccountableEntity (line 13) | public abstract class AccountableEntity implements Accountable {
    method AccountableEntity (line 18) | public AccountableEntity() {
    method AccountableEntity (line 22) | public AccountableEntity(long initialProcessedBytes, long initialUtilB...
    method addAndGetTotalBytes (line 27) | public long addAndGetTotalBytes(long delta) {
    method addAndGetUtilBytes (line 31) | public long addAndGetUtilBytes(long delta) {
    method getTotalBytes (line 35) | public long getTotalBytes() {
    method getUtilBytes (line 39) | public long getUtilBytes() {
    method getSize (line 43) | public abstract long getSize();

FILE: src/lia/util/net/copy/FDT.java
  class FDT (line 35) | public class FDT {
    method FDT (line 53) | FDT() throws Exception {
    method initOpenTSDB (line 107) | public static void initOpenTSDB(Config config) throws Exception {
    method scheduleReportingTasks (line 156) | private static void scheduleReportingTasks() {
    method printOutResults (line 166) | private static void printOutResults(List<String> filesInDir) {
    method printHelp (line 177) | private static void printHelp() {
    method printVersion (line 181) | private static void printVersion() {
    method doWork (line 186) | private static int doWork() {
    method processSCPSyntax (line 267) | private static void processSCPSyntax(String[] args) throws Exception {
    method sshRemoteServerLocalClientPush (line 288) | private static void sshRemoteServerLocalClientPush(int sshPort) throws...
    method sshRemoteServerLocalClientPull (line 321) | private static void sshRemoteServerLocalClientPull(int sshPort) throws...
    method sshRemoteServerAndClientPush (line 367) | private static void sshRemoteServerAndClientPush(String[] args, int ss...
    method initManagement (line 438) | private static void initManagement() throws Exception {
    method main (line 443) | public static void main(String[] args) throws Exception {
    method checkAdditionalParams (line 499) | private static boolean checkAdditionalParams(Map<String, Object> argsM...
    method initConfig (line 515) | private static void initConfig(Map<String, Object> argsMap, String log...
    method updateOrSkip (line 529) | private static void updateOrSkip(String logLevel, Map<String, Object> ...
    method updateIfAvailable (line 569) | private static void updateIfAvailable(Map<String, Object> argsMap, boo...
    method checkMainParams (line 590) | private static void checkMainParams(Map<String, Object> argsMap) {
    method initLogging (line 606) | private static String initLogging(String[] args) throws IOException {
    method waitForTask (line 681) | private void waitForTask() throws Exception {
    method initApMon (line 717) | private void initApMon() throws Exception {
    class GracefulStopper (line 806) | private final static class GracefulStopper extends AbstractFDTCloseable {
      method internalClose (line 810) | protected synchronized void internalClose() throws Exception {

FILE: src/lia/util/net/copy/FDTMain.java
  class FDTMain (line 15) | public class FDTMain {
    method main (line 23) | public static void main(String[] args) throws Exception {

FILE: src/lia/util/net/copy/FDTReaderSession.java
  class FDTReaderSession (line 34) | public class FDTReaderSession extends FDTSession implements FileBlockPro...
    method FDTReaderSession (line 61) | public FDTReaderSession(int transferPort) throws Exception {
    method FDTReaderSession (line 89) | public FDTReaderSession(ControlChannel ctrlChannel) throws Exception {
    method localInit (line 124) | private void localInit() throws Exception {
    method internalInit (line 133) | private void internalInit(final String[] fileList, final String[] rema...
    method preProcess (line 275) | private void preProcess(ProcessorInfo processorInfo, String filterName...
    method getSize (line 305) | @Override
    method sendRemoteSessions (line 310) | private void sendRemoteSessions(final Map<String, String> initialMappi...
    method setControlChannel (line 363) | public void setControlChannel(ControlChannel controlChannel) {
    method finishReader (line 367) | public boolean finishReader(int partitionID, DiskReaderTask drt) {
    method notifyReaderDown (line 387) | public void notifyReaderDown(int partitionID) {
    method finishFileSession (line 391) | @Override
    method startReading (line 399) | public void startReading() {
    method doPostProcessing (line 478) | private boolean doPostProcessing() throws Exception {
    method notifySessionFinished (line 524) | private void notifySessionFinished() {
    method finalCleanup (line 561) | private void finalCleanup() {
    method internalClose (line 755) | @Override
    method handleInitFDTSessionConf (line 795) | @Override
    method handleFinalFDTSessionConf (line 806) | @Override
    method handleEndFDTSession (line 830) | @Override
    method handleStartFDTSession (line 860) | @Override
    method transportWorkerDown (line 892) | @Override
    method take (line 898) | @Override
    method poll (line 917) | @Override
    method poll (line 926) | @Override
    class FileSessionComparator (line 943) | private static class FileSessionComparator implements Comparator<FileS...
      method compare (line 945) | @Override

FILE: src/lia/util/net/copy/FDTServer.java
  class FDTServer (line 29) | public class FDTServer extends AbstractFDTCloseable {
    method FDTServer (line 51) | public FDTServer(int port) throws Exception {
    method filterSourceAddress (line 92) | public static final boolean filterSourceAddress(java.net.Socket socket) {
    method main (line 112) | public static final void main(String[] args) throws Exception {
    method stopServer (line 126) | public boolean stopServer() {
    method getFdtSessionID (line 130) | public UUID getFdtSessionID() {
    method doWork (line 134) | public void doWork() throws Exception {
    method run (line 202) | public void run() {
    method internalClose (line 216) | @Override
    class FDTServerMonitorTask (line 222) | static final class FDTServerMonitorTask implements Runnable {
      method run (line 224) | public void run() {

FILE: src/lia/util/net/copy/FDTSession.java
  class FDTSession (line 38) | public abstract class FDTSession extends IOSession implements ControlCha...
    method FDTSession (line 118) | public FDTSession(short role, int transferPort) throws Exception {
    method syncFDTConfig (line 174) | private void syncFDTConfig(Map<String, Object> remoteConf) {
    method getTransferPort (line 191) | public int getTransferPort() {
    method FDTSession (line 195) | public FDTSession(ControlChannel controlChannel, short role) throws Ex...
    method getListOfFiles (line 249) | public static List<String> getListOfFiles() {
    method getFileListEntry (line 265) | private static String getFileListEntry(File fileInDir) {
    method startControlThread (line 291) | final void startControlThread() {
    method getMonID (line 298) | public String getMonID() {
    method getMonitoringTask (line 302) | public FDTSessionMonitoringTask getMonitoringTask() {
    method setNewRateLimit (line 306) | public final void setNewRateLimit(final long newRate, boolean ctrlSet) {
    method setCurrentState (line 331) | protected final void setCurrentState(int newState) {
    method currentState (line 346) | public final int currentState() {
    method setMD5Sum (line 350) | public void setMD5Sum(UUID fileSessionID, byte[] md5Sum) {
    method getCurrentStatus (line 356) | public short getCurrentStatus() {
    method historyState (line 360) | protected final int historyState() {
    method getTransportProvider (line 364) | public TCPTransportProvider getTransportProvider() {
    method getRemoteAddress (line 368) | public InetAddress getRemoteAddress() {
    method getRemotePort (line 372) | public int getRemotePort() {
    method getRateLimit (line 379) | public long getRateLimit() {
    method getRateLimitDelay (line 383) | public long getRateLimitDelay() {
    method getLocalPort (line 387) | public int getLocalPort() {
    method toString (line 391) | @Override
    method getFileSession (line 396) | public FileSession getFileSession(UUID fileSessionID) {
    method handleInitFDTSessionConf (line 400) | public abstract void handleInitFDTSessionConf(final CtrlMsg ctrlMsg) t...
    method handleFinalFDTSessionConf (line 402) | public abstract void handleFinalFDTSessionConf(final CtrlMsg ctrlMsg) ...
    method handleStartFDTSession (line 404) | public abstract void handleStartFDTSession(final CtrlMsg ctrlMsg) thro...
    method handleEndFDTSession (line 406) | public abstract void handleEndFDTSession(final CtrlMsg ctrlMsg) throws...
    method notifyCtrlMsg (line 408) | @Override
    method handleFileNotFound (line 483) | private void handleFileNotFound(CtrlMsg ctrlMsg) {
    method handleCoordinatorMessage (line 487) | private void handleCoordinatorMessage(CtrlMsg ctrlMsg) {
    method getFDTTransferPort (line 516) | public int getFDTTransferPort(int destinationMsgPort) throws Exception {
    method handleListFilesMessage (line 524) | private void handleListFilesMessage(CtrlMsg ctrlMsg) {
    method handleGetRemoteTransferPortMessage (line 540) | private void handleGetRemoteTransferPortMessage(CtrlMsg ctrlMsg) {
    method openSocketForTransferPort (line 564) | private void openSocketForTransferPort(int port) throws IOException {
    method buildPartitionMap (line 589) | protected void buildPartitionMap() {
    method finishFileSession (line 609) | public void finishFileSession(UUID sessionID, Throwable downCause) {
    method useFixedBlockSize (line 662) | public boolean useFixedBlockSize() {
    method localLoop (line 666) | public boolean localLoop() {
    method loop (line 670) | public boolean loop() {
    method equals (line 674) | @Override
    method hashCode (line 683) | @Override
    method compareTo (line 688) | @Override
    method getUtilBytes (line 693) | @Override
    method getTotalBytes (line 698) | @Override
    method addAndGetUtilBytes (line 703) | @Override
    method addAndGetTotalBytes (line 708) | @Override
    method getSize (line 713) | @Override
    method internalClose (line 716) | @Override
    method notifyCtrlSessionDown (line 749) | @Override
    method notifyLisaCtrlMsg (line 754) | @Override
    method isNetTest (line 783) | public boolean isNetTest() {

FILE: src/lia/util/net/copy/FDTSessionManager.java
  class FDTSessionManager (line 32) | public class FDTSessionManager extends AbstractFDTCloseable implements C...
    method FDTSessionManager (line 52) | private FDTSessionManager() {
    method getInstance (line 59) | public static FDTSessionManager getInstance() {
    method addFDTClientSession (line 63) | public void addFDTClientSession(ControlChannel controlChannel) throws ...
    method addFDTClientSession (line 100) | public FDTSession addFDTClientSession(int transferPort) throws Excepti...
    method sessionsNumber (line 129) | public int sessionsNumber() {
    method isInited (line 133) | public boolean isInited() {
    method getSession (line 137) | public FDTSession getSession(UUID fdtSessionID) {
    method finishSession (line 141) | public boolean finishSession(UUID fdtSessionID, String downMessage, Th...
    method addWorker (line 167) | public void addWorker(final UUID fdtSessionID, final SocketChannel sc)...
    method notifyCtrlMsg (line 178) | public void notifyCtrlMsg(ControlChannel controlChannel, Object o) thr...
    method awaitTermination (line 191) | public void awaitTermination() throws InterruptedException {
    method getLasDownCause (line 206) | public Throwable getLasDownCause() {
    method getLasDownMessage (line 215) | public String getLasDownMessage() {
    method notifyCtrlSessionDown (line 224) | public void notifyCtrlSessionDown(ControlChannel controlChannel, Throw...
    method internalClose (line 231) | @Override

FILE: src/lia/util/net/copy/FDTWriterSession.java
  class FDTWriterSession (line 31) | public class FDTWriterSession extends FDTSession implements FileBlockCon...
    method FDTWriterSession (line 49) | public FDTWriterSession(int transferPort) throws Exception {
    method FDTWriterSession (line 63) | public FDTWriterSession(ControlChannel cc) throws Exception {
    method setControlChannel (line 70) | public void setControlChannel(ControlChannel controlChannel) {
    method notifyWriterDown (line 74) | public void notifyWriterDown(int partitionID) {
    method notifySessionFinished (line 80) | private void notifySessionFinished() {
    method finalCleanup (line 117) | private void finalCleanup() {
    method internalClose (line 299) | protected void internalClose() throws Exception {
    method sendInitConf (line 329) | private void sendInitConf() throws Exception {
    method sendFinishedSessions (line 342) | private void sendFinishedSessions() throws Exception {
    method handleInitFDTSessionConf (line 348) | @Override
    method handleFinalFDTSessionConf (line 358) | @Override
    method getSize (line 503) | public long getSize() {
    method handleStartFDTSession (line 507) | @Override
    method handleEndFDTSession (line 528) | @SuppressWarnings("unchecked")
    method doPreprocess (line 568) | private boolean doPreprocess(String[] preProcessFilters, Map<String, F...
    method doPostProcessing (line 650) | private boolean doPostProcessing() throws Exception {
    method postPprocess (line 712) | private void postPprocess(ProcessorInfo processorInfo, String filterNa...
    method checkFinished (line 741) | private void checkFinished(Throwable finishCause) {
    method finishFileSession (line 770) | public void finishFileSession(UUID sessionID, Throwable finishCause) {
    method offer (line 775) | public boolean offer(final FileBlock fileBlock, long delay, TimeUnit u...
    method put (line 789) | public void put(final FileBlock fileBlock) throws InterruptedException {

FILE: src/lia/util/net/copy/FileBlock.java
  class FileBlock (line 14) | public class FileBlock {
    method FileBlock (line 24) | private FileBlock(final UUID fdtSessionID, final UUID fileSessionID, f...
    method getInstance (line 45) | public static FileBlock getInstance(UUID fdtSessionID, UUID fileSessio...
    method toString (line 49) | public String toString() {

FILE: src/lia/util/net/copy/FileBlockConsumer.java
  type FileBlockConsumer (line 16) | public interface FileBlockConsumer {
    method offer (line 18) | public boolean offer(final FileBlock fileBlock, long delay, TimeUnit u...
    method put (line 20) | public void put(FileBlock fileBlock) throws InterruptedException;

FILE: src/lia/util/net/copy/FileBlockProducer.java
  type FileBlockProducer (line 16) | public interface FileBlockProducer {
    method take (line 18) | public FileBlock take() throws InterruptedException;
    method poll (line 20) | public FileBlock poll();
    method poll (line 22) | public FileBlock poll(long delay, TimeUnit unit) throws InterruptedExc...
    method transportWorkerDown (line 24) | public void transportWorkerDown() throws Exception;

FILE: src/lia/util/net/copy/FileReaderSession.java
  class FileReaderSession (line 18) | public class FileReaderSession extends FileSession {
    method FileReaderSession (line 20) | public FileReaderSession(String fileName, FDTSession fdtSession, boole...
    method FileReaderSession (line 25) | public FileReaderSession(UUID uid, FDTSession fdtSession, String fileN...
    method toString (line 56) | @Override
    method getChannel (line 62) | @Override
    method internalClose (line 88) | @Override

FILE: src/lia/util/net/copy/FileSession.java
  class FileSession (line 21) | public abstract class FileSession extends IOSession {
    method FileSession (line 38) | public FileSession(UUID uid, FDTSession fdtSession, String fileName, b...
    method getChannel (line 80) | public abstract FileChannel getChannel() throws Exception;
    method partitionID (line 82) | public int partitionID() {
    method lastModified (line 86) | public long lastModified() {
    method isNull (line 90) | public final boolean isNull() {
    method isZero (line 94) | public final boolean isZero() {
    method getFile (line 98) | public File getFile() {
    method isLoop (line 102) | public final boolean isLoop() {
    method setLastModified (line 106) | public void setLastModified(long lastModified) {
    method internalClose (line 110) | @Override
    method fileName (line 124) | public String fileName() {
    method setFileName (line 132) | public void setFileName(String fileName) throws IOException {

FILE: src/lia/util/net/copy/FileWriterSession.java
  class FileWriterSession (line 21) | public class FileWriterSession extends FileSession {
    method FileWriterSession (line 31) | public FileWriterSession(UUID uid,
    method fromFileWriterSession (line 88) | public static FileWriterSession fromFileWriterSession(FileWriterSessio...
    method toString (line 101) | @Override
    method getChannel (line 107) | public FileChannel getChannel() throws Exception {
    method internalClose (line 186) | @Override
    method setFileName (line 276) | @Override

FILE: src/lia/util/net/copy/IOSession.java
  class IOSession (line 15) | public abstract class IOSession extends AbstractFDTCloseable {
    method IOSession (line 35) | public IOSession() {
    method IOSession (line 43) | public IOSession(UUID sessionID) {
    method IOSession (line 52) | public IOSession(UUID sessionID, long sessionSize) {
    method sessionID (line 57) | public UUID sessionID() {
    method sessionSize (line 61) | public long sessionSize() {
    method setSessionSize (line 65) | public void setSessionSize(long sessionSize) {

FILE: src/lia/util/net/copy/PartitionMap.java
  class PartitionMap (line 23) | public class PartitionMap {
    method getPartition (line 32) | public static final int getPartition(String fileName) {
    method runICommand (line 79) | private static String runICommand(final String[] cmd) {
    method getPartitionFromCache (line 161) | public static int getPartitionFromCache(File file) {

FILE: src/lia/util/net/copy/PosixFSFileChannelProviderFactory.java
  class PosixFSFileChannelProviderFactory (line 16) | public class PosixFSFileChannelProviderFactory implements FileChannelPro...
    method PosixFSFileChannelProviderFactory (line 23) | public PosixFSFileChannelProviderFactory() {
    method newReaderFileChannelProvider (line 32) | public FileChannelProvider newReaderFileChannelProvider(FDTReaderSessi...
    method newWriterFileChannelProvider (line 39) | public FileChannelProvider newWriterFileChannelProvider(FDTWriterSessi...
    class PosixFSReaderFileChannelProvider (line 50) | private static final class PosixFSReaderFileChannelProvider implements...
      method getFile (line 55) | public File getFile(String fileName) throws IOException {
      method getPartitionID (line 62) | public int getPartitionID(File file) throws IOException {
      method getFileChannel (line 69) | @SuppressWarnings("resource")
    class PosixFSWriterFileChannelProvider (line 76) | private static final class PosixFSWriterFileChannelProvider implements...
      method getFile (line 81) | public File getFile(String fileName) throws IOException {
      method getPartitionID (line 88) | public int getPartitionID(File file) throws IOException {
      method getFileChannel (line 96) | @SuppressWarnings("resource")
    class PosixFSCoordinatorChannelProvider (line 107) | private static final class PosixFSCoordinatorChannelProvider implement...
      method getFile (line 112) | public File getFile(String fileName) throws IOException {
      method getPartitionID (line 119) | public int getPartitionID(File file) throws IOException {
      method getFileChannel (line 127) | @SuppressWarnings("resource")

FILE: src/lia/util/net/copy/disk/DiskReaderManager.java
  class DiskReaderManager (line 16) | public class DiskReaderManager extends GenericDiskManager {
    method DiskReaderManager (line 21) | private DiskReaderManager() {
    method getInstance (line 26) | public static final DiskReaderManager getInstance() {
    method internalClose (line 30) | protected void internalClose() {
    method getSize (line 34) | public long getSize() {

FILE: src/lia/util/net/copy/disk/DiskReaderTask.java
  class DiskReaderTask (line 29) | public class DiskReaderTask extends GenericDiskTask {
    method DiskReaderTask (line 62) | public DiskReaderTask(final int partitionID, final int taskIndex, fina...
    method stopIt (line 93) | public void stopIt() {
    method run (line 100) | public void run() {

FILE: src/lia/util/net/copy/disk/DiskWriterManager.java
  class DiskWriterManager (line 23) | public class DiskWriterManager extends GenericDiskManager {
    method DiskWriterManager (line 48) | private DiskWriterManager() {
    method getInstance (line 80) | public static final DiskWriterManager getInstance() {
    method internalClose (line 93) | @Override
    method getWritersMap (line 100) | public Map<Integer, List<DiskWriterTask>> getWritersMap() {
    method stopWritersForPartition (line 104) | synchronized void stopWritersForPartition(Integer partitionID) {
    method startWritersForPartition (line 120) | private synchronized boolean startWritersForPartition(int partitionID) {
    method getQueueSize (line 155) | public int getQueueSize(int partitionID) {
    method offerFileBlock (line 165) | public boolean offerFileBlock(FileBlock fileBlock, int partitionID, lo...
    method putFileBlock (line 189) | public void putFileBlock(FileBlock fileBlock, int partitionID) throws ...

FILE: src/lia/util/net/copy/disk/DiskWriterTask.java
  class DiskWriterTask (line 30) | public class DiskWriterTask extends GenericDiskTask {
    method DiskWriterTask (line 51) | DiskWriterTask(int partitionID, int writerID, BlockingQueue<FileBlock>...
    method stopIt (line 62) | public void stopIt() {
    method getCountersRLock (line 71) | public final Lock getCountersRLock() {
    method partitionID (line 75) | public int partitionID() {
    method queue (line 79) | public BlockingQueue<FileBlock> queue() {
    method writerID (line 83) | public final int writerID() {
    method run (line 87) | @Override

FILE: src/lia/util/net/copy/disk/GenericDiskManager.java
  class GenericDiskManager (line 19) | abstract class GenericDiskManager extends AbstractFDTIOEntity {
    method removeSession (line 23) | public boolean removeSession(FDTSession fdtSession, String downMessage...
    method addSession (line 32) | public boolean addSession(FDTSession fdtSession) {
    method sessionsSize (line 36) | public final int sessionsSize() {
    method getSessions (line 40) | public Set<FDTSession> getSessions() {
    method getSize (line 44) | public long getSize() {

FILE: src/lia/util/net/copy/disk/GenericDiskTask.java
  class GenericDiskTask (line 14) | public abstract class GenericDiskTask extends AccountableEntity implemen...
    method GenericDiskTask (line 21) | public GenericDiskTask(final int partitionID, final int taskID) {
    method getSize (line 26) | public long getSize() {

FILE: src/lia/util/net/copy/disk/ResumeManager.java
  class ResumeManager (line 20) | public class ResumeManager {
    method getInstance (line 29) | public static final ResumeManager getInstance() {
    method isFinished (line 33) | public boolean isFinished(FileSession fileSession) {

FILE: src/lia/util/net/copy/filters/Postprocessor.java
  type Postprocessor (line 14) | public interface Postprocessor {
    method postProcessFileList (line 15) | public void postProcessFileList(ProcessorInfo processorInfo, Subject p...

FILE: src/lia/util/net/copy/filters/Preprocessor.java
  type Preprocessor (line 14) | public interface Preprocessor {
    method preProcessFileList (line 15) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/filters/ProcessorInfo.java
  class ProcessorInfo (line 18) | public class ProcessorInfo {
    method toString (line 51) | @Override

FILE: src/lia/util/net/copy/filters/examples/FirewallFileExtension.java
  class FirewallFileExtension (line 27) | public class FirewallFileExtension implements Preprocessor {
    method preProcessFileList (line 38) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/filters/examples/FirewallFileNames.java
  class FirewallFileNames (line 25) | public class FirewallFileNames implements Preprocessor {
    method preProcessFileList (line 31) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/filters/examples/FixUserHome.java
  class FixUserHome (line 16) | public class FixUserHome implements Preprocessor {
    method preProcessFileList (line 23) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/filters/examples/PostRename.java
  class PostRename (line 15) | public class PostRename implements Postprocessor {
    method postProcessFileList (line 24) | public void postProcessFileList(ProcessorInfo processorInfo, Subject p...

FILE: src/lia/util/net/copy/filters/examples/PostZipFilter.java
  class PostZipFilter (line 23) | public class PostZipFilter implements Postprocessor {
    method postProcessFileList (line 25) | public void postProcessFileList(ProcessorInfo processorInfo, Subject p...

FILE: src/lia/util/net/copy/filters/examples/PreRename.java
  class PreRename (line 15) | public class PreRename implements Preprocessor {
    method preProcessFileList (line 24) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/filters/examples/PreZipFilter.java
  class PreZipFilter (line 23) | public class PreZipFilter implements Preprocessor {
    method preProcessFileList (line 25) | public void preProcessFileList(ProcessorInfo processorInfo, Subject pe...

FILE: src/lia/util/net/copy/gui/AboutDialog.java
  class AboutDialog (line 17) | public class AboutDialog extends JDialog {
    method AboutDialog (line 26) | public AboutDialog(JFrame parent) {
    method showDocument (line 85) | public static boolean showDocument(URL url) {
    method getBasicServiceObject (line 99) | private static Object getBasicServiceObject() {
    method getBasicServiceClass (line 109) | private static Class getBasicServiceClass() {
    method setVisible (line 124) | public void setVisible(boolean b) {
    method getCaltechIcon (line 133) | public Icon getCaltechIcon() {

FILE: src/lia/util/net/copy/gui/ClientSessionManager.java
  class ClientSessionManager (line 27) | public class ClientSessionManager {
    method formatNetSpeed (line 47) | private static final String formatNetSpeed(final double number, final ...
    method initTransfer (line 79) | public String initTransfer(final String host, final int port, final bo...
    method currentSession (line 97) | public FDTSession currentSession() {
    method cancelTransfer (line 101) | public void cancelTransfer() {
    method end (line 108) | public void end() {
    method transferProgress (line 120) | public double transferProgress() {
    method currentSpeed (line 159) | public String currentSpeed() {
    method constructConfig (line 176) | private final void constructConfig(final String host, final int port, ...

FILE: src/lia/util/net/copy/gui/ConnectDialog.java
  class ConnectDialog (line 13) | public class ConnectDialog extends JDialog implements KeyListener, ItemL...
    method ConnectDialog (line 23) | public ConnectDialog(JFrame f) {
    method itemStateChanged (line 144) | public void itemStateChanged(ItemEvent e) {
    method keyTyped (line 156) | public void keyTyped(KeyEvent e) {
    method keyPressed (line 159) | public void keyPressed(KeyEvent e) {
    method keyReleased (line 162) | public void keyReleased(KeyEvent e) {
    method setVisible (line 203) | public void setVisible(boolean v) {

FILE: src/lia/util/net/copy/gui/CustomLogHandler.java
  class CustomLogHandler (line 13) | public class CustomLogHandler extends Handler {
    method CustomLogHandler (line 18) | public CustomLogHandler(final StatusBar status) {
    method setStatus (line 24) | private void setStatus(String status) {
    method publish (line 32) | public void publish(LogRecord record) {
    method flush (line 42) | public void flush() {
    method close (line 48) | public void close() throws SecurityException {
    class MyCustomFormatter (line 51) | class MyCustomFormatter extends Formatter {
      method MyCustomFormatter (line 53) | public MyCustomFormatter() {
      method format (line 57) | public String format(LogRecord record) {

FILE: src/lia/util/net/copy/gui/CustomPrintStream.java
  class CustomPrintStream (line 11) | public class CustomPrintStream extends PrintStream {
    method CustomPrintStream (line 16) | public CustomPrintStream(final StatusBar status, OutputStream out, Str...
    method setStatus (line 22) | private void setStatus(String status) {
    method println (line 28) | public void println(String string) {
    method println (line 34) | public void println() {
    method print (line 39) | public void print(String string) {

FILE: src/lia/util/net/copy/gui/DummyRemoteSessionManager.java
  class DummyRemoteSessionManager (line 15) | public class DummyRemoteSessionManager extends RemoteSessionManager {
    method DummyRemoteSessionManager (line 19) | public DummyRemoteSessionManager(FDTPropsDialog props) {
    method getWorkingDirectory (line 26) | public String getWorkingDirectory() {
    method getOSName (line 33) | public String getOSName() {
    method isRoot (line 40) | public boolean isRoot() {
    method getFileList (line 47) | public Vector<FileHandler> getFileList() {
    method setAbsoluteDir (line 67) | public void setAbsoluteDir(String dir) {
    method setRelativeDir (line 73) | public void setRelativeDir(String dir) {
    method setUpDir (line 83) | public void setUpDir() {
    method getRoots (line 89) | public String[] getRoots() {
    method getShortRootName (line 96) | public String getShortRootName(String rootFolder) {
    method initiateTransfer (line 103) | public String initiateTransfer(String files[], boolean push) {
    method getTransferPercent (line 111) | public double getTransferPercent() {

FILE: src/lia/util/net/copy/gui/EnhancedJPanel.java
  class EnhancedJPanel (line 12) | public class EnhancedJPanel extends JPanel {
    method paintComponent (line 21) | public void paintComponent(Graphics g) {

FILE: src/lia/util/net/copy/gui/FDTPropsDialog.java
  class FDTPropsDialog (line 14) | public class FDTPropsDialog extends JDialog implements KeyListener {
    method FDTPropsDialog (line 47) | public FDTPropsDialog(JFrame f) {
    method checkParams (line 194) | private final boolean checkParams() {
    method loadPrefs (line 290) | private final void loadPrefs() {
    method savePrefs (line 329) | private final void savePrefs() {
    method keyTyped (line 341) | public void keyTyped(KeyEvent e) {
    method keyPressed (line 344) | public void keyPressed(KeyEvent e) {
    method keyReleased (line 347) | public void keyReleased(KeyEvent e) {
    method setVisible (line 362) | public void setVisible(boolean v) {
    method isBComputeMD5 (line 370) | public boolean isBComputeMD5() {
    method isBUseFixedBlocks (line 374) | public boolean isBUseFixedBlocks() {
    method getMaxPartit
Condensed preview — 436 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,809K chars).
[
  {
    "path": "LICENSE.md",
    "chars": 11461,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "LICENSE_GANYMED_SSH2.txt",
    "chars": 3010,
    "preview": "Copyright (c) 2005 - 2006 Swiss Federal Institute of Technology (ETH Zurich),\r\n  Department of Computer Science (http://"
  },
  {
    "path": "MANIFEST.MF",
    "chars": 1501,
    "preview": "Manifest-Version: 1.0\nClass-Path: io-2.2.0.jar bcprov-jdk15on-157.jar gss-2.2.0.jar gram-2.2.0.jar jsse-2.2.0.jar\n axisg"
  },
  {
    "path": "README",
    "chars": 428,
    "preview": "\nFDT uses third-party libraries which are not distributed with this source code.\n\nPlease check the Security section on t"
  },
  {
    "path": "README.md",
    "chars": 1116,
    "preview": "FDT is an Application for Efficient Data Transfers which is capable of reading and writing at disk speed over wide area "
  },
  {
    "path": "add-lib-to-local-maven.sh",
    "chars": 4314,
    "preview": "#!/usr/bin/env bash\n# Adding lib directory contents to a local maven repository then later we could use them in fdt buil"
  },
  {
    "path": "build-all.sh",
    "chars": 505,
    "preview": "#!/usr/bin/env bash\n\nif command -v yum > /dev/null 2>&1; then\n    OS=\"Centos\"\n    CMD=yum\nelif command -v zypper > /dev/"
  },
  {
    "path": "classpath",
    "chars": 835,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src\"/>\n\t<classpathentry kind=\"con\" "
  },
  {
    "path": "docs/_config.yml",
    "chars": 363,
    "preview": "title: Fast Data Transfer\ndescription: FDT is an application for efficient data transfers, which is capable of reading a"
  },
  {
    "path": "docs/doc-examples.md",
    "chars": 5877,
    "preview": "[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[[FDT & DDCopy](doc-fdt-ddcopy.md)]   "
  },
  {
    "path": "docs/doc-fdt-ddcopy.md",
    "chars": 11469,
    "preview": "[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[FDT & DDCopy]  [[Examples](doc-exampl"
  },
  {
    "path": "docs/doc-opentsdb.md",
    "chars": 1777,
    "preview": "[[Home](index.md)]   [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[[FDT & DDCopy](doc-fdt-ddcopy.md)]  "
  },
  {
    "path": "docs/doc-security.md",
    "chars": 8248,
    "preview": "[[Home](index.md)]   [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[[FDT & DDCopy](doc-fdt-ddcopy.md)]  "
  },
  {
    "path": "docs/doc-system-tuning.md",
    "chars": 3303,
    "preview": "[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[[FDT & DDCopy](doc-fdt-ddcopy.md)]   "
  },
  {
    "path": "docs/doc-user-extensions.md",
    "chars": 4947,
    "preview": "[[Home](index.md)]  [Documentation]  [[Performance Tests](perf-disk-to-disk.md)]\n\n[[FDT & DDCopy](doc-fdt-ddcopy.md)]   "
  },
  {
    "path": "docs/index.md",
    "chars": 1200,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]  [[Performance Tests](perf-disk-to-disk.md)]\n\n### Fast Data Tr"
  },
  {
    "path": "docs/monitoring-opentsdb.txt",
    "chars": 764,
    "preview": "Monitor net test metrics to specified OpenTSDB server:\n#SERVER2\njava -jar fdt.jar -opentsdb <opentsdb-ip:port> -nettest\n"
  },
  {
    "path": "docs/perf-disk-to-disk.md",
    "chars": 3477,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]\n\n[Disk to Disk]   [[Memmory to Memmory]("
  },
  {
    "path": "docs/perf-memory-to-memory.md",
    "chars": 3625,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]\n\n[[Disk to Disk](perf-disk-to-disk.md)] "
  },
  {
    "path": "docs/perf-sc06.md",
    "chars": 735,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]\n\n[[Disk to Disk](perf-disk-to-disk.md)] "
  },
  {
    "path": "docs/perf-sc08.md",
    "chars": 1952,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]\n\n[[Disk to Disk](perf-disk-to-disk.md)] "
  },
  {
    "path": "docs/perf-sc09.md",
    "chars": 1054,
    "preview": "[[Home](index.md)]   [[Documentation](doc-fdt-ddcopy.md)]   [Performance Tests]\n\n[[Disk to Disk](perf-disk-to-disk.md)] "
  },
  {
    "path": "lgtm.yml",
    "chars": 75,
    "preview": "extraction:\n  java:\n    index:\n      build_command:\n      - ./build-all.sh\n"
  },
  {
    "path": "lib/globus/bouncycastle.LICENSE",
    "chars": 1109,
    "preview": "Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) \n\nPermission is hereby granted, free of"
  },
  {
    "path": "lib/globus/commons-logging.LICENSE",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "lib/globus/cryptix.LICENSE",
    "chars": 1370,
    "preview": "Cryptix General Licence\n\nCopyright (C) 1995, 1996, 1997, 1998, 1999, 2000 \nThe Cryptix Foundation Limited. All rights re"
  },
  {
    "path": "lib/globus/junit.LICENSE",
    "chars": 11579,
    "preview": "Common Public License Version 0.5 \n\nTHE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("
  },
  {
    "path": "lib/globus/log4j.LICENSE",
    "chars": 11366,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "lib/globus/puretls.LICENSE",
    "chars": 1623,
    "preview": "  This package is a SSLv3/TLS implementation written by Eric Rescorla\n   <ekr\\@rtfm.com> and licensed by Claymore System"
  },
  {
    "path": "lib/globus/version.txt",
    "chars": 113,
    "preview": "PureTLS (custom): 0.9b4\nJUnit version: 3.8.1\n\nTested with:\n - JNDI: 1.2.1\n - LDAP provider: 1.2.3\n - JAAS 1.0_01\n"
  },
  {
    "path": "open_direct.c",
    "chars": 2538,
    "preview": "/*\n * LD_PRELOAD shim to force files to be opened with the O_DIRECT flag,\n * avoiding cache thrashing and allowing for 0"
  },
  {
    "path": "pom.xml",
    "chars": 8031,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLoca"
  },
  {
    "path": "src/apmon/ApMon.java",
    "chars": 69327,
    "preview": "/*\n * ApMon - Application Monitoring Tool\n * Version: 2.2.7\n *\n * Copyright (C) 2006 - 2010 California Institute of Tech"
  },
  {
    "path": "src/apmon/ApMonException.java",
    "chars": 1884,
    "preview": "/*\n * ApMon - Application Monitoring Tool\n * Version: 2.2.7\n *\n * Copyright (C) 2006 - 2010 California Institute of Tech"
  },
  {
    "path": "src/apmon/ApMonMonitoringConstants.java",
    "chars": 17292,
    "preview": "/*\n * ApMon - Application Monitoring Tool\n * Version: 2.2.7\n *\n * Copyright (C) 2006 - 2010 California Institute of Tech"
  },
  {
    "path": "src/apmon/BkThread.java",
    "chars": 37715,
    "preview": "/*\n * ApMon - Application Monitoring Tool\n * Version: 2.2.7\n *\n * Copyright (C) 2006 - 2010 California Institute of Tech"
  },
  {
    "path": "src/apmon/MonitoredJob.java",
    "chars": 11013,
    "preview": "/*\n * ApMon - Application Monitoring Tool\n * Version: 2.2.7\n *\n * Copyright (C) 2006 - 2010 California Institute of Tech"
  },
  {
    "path": "src/apmon/XDRDataOutput.java",
    "chars": 1029,
    "preview": "package apmon;\n\nimport java.io.DataOutput;\nimport java.io.IOException;\n\n\n/**\n * An interface implemented by output strea"
  },
  {
    "path": "src/apmon/XDROutputStream.java",
    "chars": 3423,
    "preview": "package apmon;\n\nimport java.io.DataOutputStream;\nimport java.io.FilterOutputStream;\nimport java.io.IOException;\nimport j"
  },
  {
    "path": "src/apmon/host/HostPropertiesMonitor.java",
    "chars": 9392,
    "preview": "package apmon.host;\n\nimport java.util.HashMap;\nimport java.util.Hashtable;\n\npublic class HostPropertiesMonitor {\n\n    fi"
  },
  {
    "path": "src/apmon/host/MacHostPropertiesMonitor.java",
    "chars": 20966,
    "preview": "package apmon.host;\n\nimport java.util.Enumeration;\nimport java.util.Hashtable;\nimport java.util.StringTokenizer;\n\n/**\n *"
  },
  {
    "path": "src/apmon/host/Parser.java",
    "chars": 4080,
    "preview": "package apmon.host;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java.io.FileReader;\nimport java.util.Str"
  },
  {
    "path": "src/apmon/host/ProcReader.java",
    "chars": 41139,
    "preview": "package apmon.host;\n\nimport apmon.ApMonMonitoringConstants;\n\nimport java.util.Enumeration;\nimport java.util.HashMap;\nimp"
  },
  {
    "path": "src/apmon/host/cmdExec.java",
    "chars": 21843,
    "preview": "package apmon.host;\n\nimport java.io.BufferedReader;\nimport java.io.FileReader;\nimport java.io.InputStream;\nimport java.i"
  },
  {
    "path": "src/ch/ethz/ssh2/ChannelCondition.java",
    "chars": 2108,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * Contains constants that can be used to specify what conditions to wait for on\r\n * a SSH"
  },
  {
    "path": "src/ch/ethz/ssh2/Connection.java",
    "chars": 48622,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.auth.AuthenticationManager;\r\nimport ch.ethz.ssh2.channel.ChannelManager;\r\ni"
  },
  {
    "path": "src/ch/ethz/ssh2/ConnectionInfo.java",
    "chars": 1481,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * In most cases you probably do not need the information contained in here.\r\n *\r\n * @auth"
  },
  {
    "path": "src/ch/ethz/ssh2/ConnectionMonitor.java",
    "chars": 1274,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>ConnectionMonitor</code> is used to get notified when the\r\n * underlying socket"
  },
  {
    "path": "src/ch/ethz/ssh2/DHGexParameters.java",
    "chars": 3989,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>DHGexParameters</code> object can be used to specify parameters for\r\n * the dif"
  },
  {
    "path": "src/ch/ethz/ssh2/HTTPProxyData.java",
    "chars": 3454,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>HTTPProxyData</code> object is used to specify the needed connection data\r\n * t"
  },
  {
    "path": "src/ch/ethz/ssh2/HTTPProxyException.java",
    "chars": 805,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * May be thrown upon connect() if a HTTP proxy is being us"
  },
  {
    "path": "src/ch/ethz/ssh2/InteractiveCallback.java",
    "chars": 2520,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * An <code>InteractiveCallback</code> is used to respond to challenges sent\r\n * by the se"
  },
  {
    "path": "src/ch/ethz/ssh2/KnownHosts.java",
    "chars": 25331,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.crypto.Base64;\r\nimport ch.ethz.ssh2.crypto.digest.Digest;\r\nimport ch.ethz.s"
  },
  {
    "path": "src/ch/ethz/ssh2/LocalPortForwarder.java",
    "chars": 1315,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.channel.ChannelManager;\r\nimport ch.ethz.ssh2.channel.LocalAcceptThread;\r\n\r\n"
  },
  {
    "path": "src/ch/ethz/ssh2/LocalStreamForwarder.java",
    "chars": 2472,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.channel.Channel;\r\nimport ch.ethz.ssh2.channel.ChannelManager;\r\nimport ch.et"
  },
  {
    "path": "src/ch/ethz/ssh2/ProxyData.java",
    "chars": 313,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * An abstract marker interface implemented by all proxy data implementations.\r\n *\r\n * @au"
  },
  {
    "path": "src/ch/ethz/ssh2/SCPClient.java",
    "chars": 21246,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport java.io.*;\r\n\r\n/**\r\n * A very basic <code>SCPClient</code> that can be used to copy files"
  },
  {
    "path": "src/ch/ethz/ssh2/SFTPException.java",
    "chars": 2342,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.sftp.ErrorCodes;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * Used in combinat"
  },
  {
    "path": "src/ch/ethz/ssh2/SFTPv3Client.java",
    "chars": 44051,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.packets.TypesReader;\r\nimport ch.ethz.ssh2.packets.TypesWriter;\r\nimport ch.e"
  },
  {
    "path": "src/ch/ethz/ssh2/SFTPv3DirectoryEntry.java",
    "chars": 1290,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>SFTPv3DirectoryEntry</code> as returned by {@link SFTPv3Client#ls(String)}.\r\n *"
  },
  {
    "path": "src/ch/ethz/ssh2/SFTPv3FileAttributes.java",
    "chars": 4282,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>SFTPv3FileAttributes</code> object represents detail information\r\n * about a fi"
  },
  {
    "path": "src/ch/ethz/ssh2/SFTPv3FileHandle.java",
    "chars": 1026,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A <code>SFTPv3FileHandle</code>.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz."
  },
  {
    "path": "src/ch/ethz/ssh2/ServerHostKeyVerifier.java",
    "chars": 1329,
    "preview": "package ch.ethz.ssh2;\r\n\r\n/**\r\n * A callback interface used to implement a client specific method of checking\r\n * server "
  },
  {
    "path": "src/ch/ethz/ssh2/Session.java",
    "chars": 16087,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport ch.ethz.ssh2.channel.Channel;\r\nimport ch.ethz.ssh2.channel.ChannelManager;\r\nimport ch.et"
  },
  {
    "path": "src/ch/ethz/ssh2/StreamGobbler.java",
    "chars": 6614,
    "preview": "package ch.ethz.ssh2;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\n/**\r\n * A <code>StreamGobbler</code"
  },
  {
    "path": "src/ch/ethz/ssh2/auth/AuthenticationManager.java",
    "chars": 12015,
    "preview": "package ch.ethz.ssh2.auth;\r\n\r\nimport ch.ethz.ssh2.InteractiveCallback;\r\nimport ch.ethz.ssh2.crypto.PEMDecoder;\r\nimport c"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/Channel.java",
    "chars": 6496,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\n/**\r\n * Channel.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @version "
  },
  {
    "path": "src/ch/ethz/ssh2/channel/ChannelInputStream.java",
    "chars": 1854,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\n/**\r\n * ChannelInputStream."
  },
  {
    "path": "src/ch/ethz/ssh2/channel/ChannelManager.java",
    "chars": 49679,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport ch.ethz.ssh2.ChannelCondition;\r\nimport ch.ethz.ssh2.log.Logger;\r\nimport ch.ethz."
  },
  {
    "path": "src/ch/ethz/ssh2/channel/ChannelOutputStream.java",
    "chars": 1564,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\n/**\r\n * ChannelOutputStrea"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/IChannelWorkerThread.java",
    "chars": 280,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\n/**\r\n * IChannelWorkerThread.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/LocalAcceptThread.java",
    "chars": 2968,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport java.io.IOException;\r\nimport java.net.ServerSocket;\r\nimport java.net.Socket;\r\n\r\n"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/RemoteAcceptThread.java",
    "chars": 2861,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport ch.ethz.ssh2.log.Logger;\r\n\r\nimport java.io.IOException;\r\nimport java.net.Socket;"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/RemoteForwardingData.java",
    "chars": 401,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\n/**\r\n * RemoteForwardingData. Data about a requested remote forwarding.\r\n *\r\n * @author"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/RemoteX11AcceptThread.java",
    "chars": 8178,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport ch.ethz.ssh2.log.Logger;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStr"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/StreamForwarder.java",
    "chars": 2484,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r"
  },
  {
    "path": "src/ch/ethz/ssh2/channel/X11ServerData.java",
    "chars": 413,
    "preview": "package ch.ethz.ssh2.channel;\r\n\r\n/**\r\n * X11ServerData. Data regarding an x11 forwarding target.\r\n *\r\n * @author Christi"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/Base64.java",
    "chars": 3868,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\nimport java.io.CharArrayWriter;\r\nimport java.io.IOException;\r\n\r\n/**\r\n * Basic Base64 Sup"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/CryptoWishList.java",
    "chars": 818,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\nimport ch.ethz.ssh2.crypto.cipher.BlockCipherFactory;\r\nimport ch.ethz.ssh2.crypto.digest"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/KeyMaterial.java",
    "chars": 2902,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\n\r\nimport ch.ethz.ssh2.crypto.digest.HashForSSH2Types;\r\n\r\nimport java.math.BigInteger;\r\n\r"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/PEMDecoder.java",
    "chars": 11015,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\nimport ch.ethz.ssh2.crypto.cipher.*;\r\nimport ch.ethz.ssh2.crypto.digest.MD5;\r\nimport ch."
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/PEMStructure.java",
    "chars": 317,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\n/**\r\n * Parsed PEM structure.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/SimpleDERReader.java",
    "chars": 3437,
    "preview": "package ch.ethz.ssh2.crypto;\r\n\r\nimport java.io.IOException;\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * SimpleDERReader.\r\n "
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/AES.java",
    "chars": 49447,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/*\r\n This file was shamelessly taken from the Bouncy Castle Crypto package.\r\n The"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/BlockCipher.java",
    "chars": 409,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/**\r\n * BlockCipher.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n *"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/BlockCipherFactory.java",
    "chars": 3682,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\nimport java.util.Vector;\r\n\r\n/**\r\n * BlockCipherFactory.\r\n *\r\n * @author Christian"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/BlowFish.java",
    "chars": 22525,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/*\r\n This file was shamelessly taken from the Bouncy Castle Crypto package.\r\n The"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/CBCMode.java",
    "chars": 2128,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/**\r\n * CBCMode.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @ve"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/CTRMode.java",
    "chars": 1451,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/**\r\n * This is CTR mode as described in draft-ietf-secsh-newmodes-XY.txt\r\n *\r\n *"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/CipherInputStream.java",
    "chars": 3556,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\n/**\r\n * CipherInputSt"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/CipherOutputStream.java",
    "chars": 3550,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\n\r\n/**\r\n * CipherOutput"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/DES.java",
    "chars": 16554,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/*\r\n This file is based on the 3DES implementation from the Bouncy Castle Crypto "
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/DESede.java",
    "chars": 3028,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/*\r\n This file was shamelessly taken (and modified) from the Bouncy Castle Crypto"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/cipher/NullCipher.java",
    "chars": 696,
    "preview": "package ch.ethz.ssh2.crypto.cipher;\r\n\r\n/**\r\n * NullCipher.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * "
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/dh/DhExchange.java",
    "chars": 4185,
    "preview": "package ch.ethz.ssh2.crypto.dh;\r\n\r\nimport ch.ethz.ssh2.crypto.digest.HashForSSH2Types;\r\nimport ch.ethz.ssh2.log.Logger;\r"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/dh/DhGroupExchange.java",
    "chars": 2785,
    "preview": "package ch.ethz.ssh2.crypto.dh;\r\n\r\nimport ch.ethz.ssh2.DHGexParameters;\r\nimport ch.ethz.ssh2.crypto.digest.HashForSSH2Ty"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/Digest.java",
    "chars": 496,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\n/**\r\n * Digest.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @ver"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/HMAC.java",
    "chars": 1815,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\n/**\r\n * HMAC.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @versi"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/HashForSSH2Types.java",
    "chars": 1749,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * HashForSSH2Types.\r\n *\r\n * @author Christi"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/MAC.java",
    "chars": 2047,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\n/**\r\n * MAC.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @versio"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/MD5.java",
    "chars": 9119,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\n/**\r\n * MD5. Based on the example code in RFC 1321. Optimized (...a little).\r\n *\r"
  },
  {
    "path": "src/ch/ethz/ssh2/crypto/digest/SHA1.java",
    "chars": 6873,
    "preview": "package ch.ethz.ssh2.crypto.digest;\r\n\r\n/**\r\n * SHA-1 implementation based on FIPS PUB 180-1.\r\n * <p>\r\n * (http://www.itl"
  },
  {
    "path": "src/ch/ethz/ssh2/log/Logger.java",
    "chars": 1126,
    "preview": "package ch.ethz.ssh2.log;\r\n\r\n/**\r\n * Logger - a very simple logger, mainly used during development.\r\n * Is not based on "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketChannelOpenConfirmation.java",
    "chars": 2160,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketChannelOpenConfirmation.\r\n *\r\n * @author C"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketChannelOpenFailure.java",
    "chars": 2044,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketChannelOpenFailure.\r\n *\r\n * @author Christ"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketChannelWindowAdjust.java",
    "chars": 1678,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketChannelWindowAdjust.\r\n *\r\n * @author Chris"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketDisconnect.java",
    "chars": 1448,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketDisconnect.\r\n *\r\n * @author Christian Plat"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketGlobalCancelForwardRequest.java",
    "chars": 1055,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketGlobalCancelForwardRequest.\r\n *\r\n * @author Christian Plattner, plattner@"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketGlobalForwardRequest.java",
    "chars": 1024,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketGlobalForwardRequest.\r\n *\r\n * @author Christian Plattner, plattner@inf.et"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketIgnore.java",
    "chars": 1186,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketIgnore.\r\n *\r\n * @author Christian Plattner"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDHInit.java",
    "chars": 668,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * PacketKexDHInit.\r\n *\r\n * @author Christian Plat"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDHReply.java",
    "chars": 1269,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * PacketKexDHReply.\r"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDhGexGroup.java",
    "chars": 1194,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * PacketKexDhGexGrou"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDhGexInit.java",
    "chars": 685,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * PacketKexDhGexInit.\r\n *\r\n * @author Christian P"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDhGexReply.java",
    "chars": 1288,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * PacketKexDhGexRepl"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDhGexRequest.java",
    "chars": 919,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport ch.ethz.ssh2.DHGexParameters;\r\n\r\n/**\r\n * PacketKexDhGexRequest.\r\n *\r\n * @author "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexDhGexRequestOld.java",
    "chars": 749,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport ch.ethz.ssh2.DHGexParameters;\r\n\r\n/**\r\n * PacketKexDhGexRequestOld.\r\n *\r\n * @auth"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketKexInit.java",
    "chars": 5289,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport ch.ethz.ssh2.crypto.CryptoWishList;\r\nimport ch.ethz.ssh2.transport.KexParameters"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketNewKeys.java",
    "chars": 1146,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketNewKeys.\r\n *\r\n * @author Christian Plattne"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketOpenDirectTCPIPChannel.java",
    "chars": 1746,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n\r\n/**\r\n * PacketOpenDirectTCPIPChannel.\r\n *\r\n * @author Christian Plattner, plattner@in"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketOpenSessionChannel.java",
    "chars": 1812,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketOpenSessionChannel.\r\n *\r\n * @author Christ"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketServiceAccept.java",
    "chars": 1374,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketServiceAccept.\r\n *\r\n * @author Christian P"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketServiceRequest.java",
    "chars": 1383,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketServiceRequest.\r\n *\r\n * @author Christian "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketSessionExecCommand.java",
    "chars": 1036,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n\r\n/**\r\n * PacketSessionExecCommand.\r\n *\r\n * @author Christian Plattner, plattner@inf.et"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketSessionPtyRequest.java",
    "chars": 1836,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n\r\n/**\r\n * PacketSessionPtyRequest.\r\n *\r\n * @author Christian Plattner, plattner@inf.eth"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketSessionStartShell.java",
    "chars": 916,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketSessionStartShell.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz."
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketSessionSubsystemRequest.java",
    "chars": 1106,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n\r\n/**\r\n * PacketSessionSubsystemRequest.\r\n *\r\n * @author Christian Plattner, plattner@i"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketSessionX11Request.java",
    "chars": 1651,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketSessionX11Request.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz."
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthBanner.java",
    "chars": 1563,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthBanner.\r\n *\r\n * @author Christian "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthFailure.java",
    "chars": 1435,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthBanner.\r\n *\r\n * @author Christian "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthInfoRequest.java",
    "chars": 1865,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthInfoRequest.\r\n *\r\n * @author Chris"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthInfoResponse.java",
    "chars": 841,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketUserauthInfoResponse.\r\n *\r\n * @author Christian Plattner, plattner@inf.et"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthRequestInteractive.java",
    "chars": 1171,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * PacketUserauthRequestInteractive.\r\n *\r\n * @author Christian Plattner, plattner@"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthRequestNone.java",
    "chars": 1759,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthRequestPassword.\r\n *\r\n * @author C"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthRequestPassword.java",
    "chars": 1944,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthRequestPassword.\r\n *\r\n * @author C"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/PacketUserauthRequestPublicKey.java",
    "chars": 1914,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * PacketUserauthRequestPublicKey.\r\n *\r\n * @author "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/Packets.java",
    "chars": 6386,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\n/**\r\n * Packets.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @version "
  },
  {
    "path": "src/ch/ethz/ssh2/packets/TypesReader.java",
    "chars": 4421,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport ch.ethz.ssh2.util.Tokenizer;\r\n\r\nimport java.io.IOException;\r\nimport java.math.Bi"
  },
  {
    "path": "src/ch/ethz/ssh2/packets/TypesWriter.java",
    "chars": 3574,
    "preview": "package ch.ethz.ssh2.packets;\r\n\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * T"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/AttrTextHints.java",
    "chars": 1136,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * Values for the 'text-hint' field in the SFTP ATTRS data type.\r\n *\r\n * @author Chri"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/AttribBits.java",
    "chars": 5496,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * SFTP Attribute Bits for the \"attrib-bits\" and \"attrib-bits-valid\" fields\r\n * of th"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/AttribFlags.java",
    "chars": 3487,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * Attribute Flags. The 'valid-attribute-flags' field in\r\n * the SFTP ATTRS data type"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/AttribPermissions.java",
    "chars": 1070,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * Permissions for the 'permissions' field in the SFTP ATTRS data type.\r\n * <p>\r\n * \""
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/AttribTypes.java",
    "chars": 1087,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * Types for the 'type' field in the SFTP ATTRS data type.\r\n * <p>\r\n * \"<i>On a POSIX"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/ErrorCodes.java",
    "chars": 5590,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * SFTP Error Codes\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @ver"
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/OpenFlags.java",
    "chars": 8359,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * SFTP Open Flags.\r\n * <p>\r\n * The following table is provided to assist in mapping "
  },
  {
    "path": "src/ch/ethz/ssh2/sftp/Packet.java",
    "chars": 1569,
    "preview": "package ch.ethz.ssh2.sftp;\r\n\r\n/**\r\n * SFTP Paket Types\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @ver"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/DSAPrivateKey.java",
    "chars": 1032,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * DSAPrivateKey.\r\n *\r\n * @author Christian Plat"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/DSAPublicKey.java",
    "chars": 783,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * DSAPublicKey.\r\n *\r\n * @author Christian Platt"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/DSASHA1Verify.java",
    "chars": 6002,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport ch.ethz.ssh2.crypto.digest.SHA1;\r\nimport ch.ethz.ssh2.log.Logger;\r\nimport ch.e"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/DSASignature.java",
    "chars": 541,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * DSASignature.\r\n *\r\n * @author Christian Platt"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/RSAPrivateKey.java",
    "chars": 756,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * RSAPrivateKey.\r\n *\r\n * @author Christian Plat"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/RSAPublicKey.java",
    "chars": 523,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n/**\r\n * RSAPublicKey.\r\n *\r\n * @author Christian Platt"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/RSASHA1Verify.java",
    "chars": 8136,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport ch.ethz.ssh2.crypto.SimpleDERReader;\r\nimport ch.ethz.ssh2.crypto.digest.SHA1;\r"
  },
  {
    "path": "src/ch/ethz/ssh2/signature/RSASignature.java",
    "chars": 413,
    "preview": "package ch.ethz.ssh2.signature;\r\n\r\nimport java.math.BigInteger;\r\n\r\n\r\n/**\r\n * RSASignature.\r\n *\r\n * @author Christian Pla"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/ClientServerHello.java",
    "chars": 2714,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\nimport ch.ethz.ssh2.Connection;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputS"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/KexManager.java",
    "chars": 20343,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\nimport ch.ethz.ssh2.ConnectionInfo;\r\nimport ch.ethz.ssh2.DHGexParameters;\r\nimport ch."
  },
  {
    "path": "src/ch/ethz/ssh2/transport/KexParameters.java",
    "chars": 876,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\n/**\r\n * KexParameters.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r\n * @"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/KexState.java",
    "chars": 752,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\n\r\nimport ch.ethz.ssh2.DHGexParameters;\r\nimport ch.ethz.ssh2.crypto.dh.DhExchange;\r\nim"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/MessageHandler.java",
    "chars": 345,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * MessageHandler.\r\n *\r\n * @author Christian Plat"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/NegotiateException.java",
    "chars": 337,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\n/**\r\n * NegotiateException.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.ch\r"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/NegotiatedParameters.java",
    "chars": 714,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\n/**\r\n * NegotiatedParameters.\r\n *\r\n * @author Christian Plattner, plattner@inf.ethz.c"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/TransportConnection.java",
    "chars": 8991,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\nimport ch.ethz.ssh2.crypto.cipher.BlockCipher;\r\nimport ch.ethz.ssh2.crypto.cipher.Cip"
  },
  {
    "path": "src/ch/ethz/ssh2/transport/TransportManager.java",
    "chars": 22210,
    "preview": "package ch.ethz.ssh2.transport;\r\n\r\nimport ch.ethz.ssh2.*;\r\nimport ch.ethz.ssh2.crypto.Base64;\r\nimport ch.ethz.ssh2.crypt"
  },
  {
    "path": "src/ch/ethz/ssh2/util/PasswordField.java",
    "chars": 3675,
    "preview": "package ch.ethz.ssh2.util;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.PushbackInputStream;\n"
  },
  {
    "path": "src/ch/ethz/ssh2/util/PasswordReader.java",
    "chars": 624,
    "preview": "package ch.ethz.ssh2.util;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;"
  },
  {
    "path": "src/ch/ethz/ssh2/util/TimeoutService.java",
    "chars": 4090,
    "preview": "package ch.ethz.ssh2.util;\r\n\r\nimport ch.ethz.ssh2.log.Logger;\r\n\r\nimport java.io.PrintWriter;\r\nimport java.io.StringWrite"
  },
  {
    "path": "src/ch/ethz/ssh2/util/Tokenizer.java",
    "chars": 1279,
    "preview": "package ch.ethz.ssh2.util;\r\n\r\n/**\r\n * Tokenizer. Why? Because StringTokenizer is not available in J2ME.\r\n *\r\n * @author "
  },
  {
    "path": "src/edu/caltech/hep/dcapj/Config.java",
    "chars": 4673,
    "preview": "package edu.caltech.hep.dcapj;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.net.Inet4Address;\nimpor"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/PnfsUtil.java",
    "chars": 6212,
    "preview": "/**\n * A utility class for extracting useful information\n * from the pnfs filesystem by reading pnfs files.\n *\n * @autho"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/dCacheFile.java",
    "chars": 31679,
    "preview": "package edu.caltech.hep.dcapj;\n\nimport edu.caltech.hep.dcapj.util.*;\n\nimport java.io.*;\nimport java.nio.BufferOverflowEx"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/dCacheFileChannelProviderFactory.java",
    "chars": 6154,
    "preview": "/*\n * Created on Jan 10, 2010\n */\npackage edu.caltech.hep.dcapj;\n\nimport edu.caltech.hep.dcapj.util.InvalidConfiguration"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/dCapLayer.java",
    "chars": 2232,
    "preview": "package edu.caltech.hep.dcapj;\n\nimport edu.caltech.hep.dcapj.util.ControlConnection;\nimport edu.caltech.hep.dcapj.util.I"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/io/dCacheFileInputStream.java",
    "chars": 2244,
    "preview": "package edu.caltech.hep.dcapj.io;\n\nimport edu.caltech.hep.dcapj.dCacheFile;\nimport edu.caltech.hep.dcapj.nio.dCacheFileC"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/io/dCacheFileOutputStream.java",
    "chars": 2266,
    "preview": "package edu.caltech.hep.dcapj.io;\n\nimport edu.caltech.hep.dcapj.dCacheFile;\nimport edu.caltech.hep.dcapj.nio.dCacheFileC"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/nio/dCacheFileChannel.java",
    "chars": 8793,
    "preview": "package edu.caltech.hep.dcapj.nio;\n\nimport edu.caltech.hep.dcapj.dCacheFile;\nimport edu.caltech.hep.dcapj.io.dCacheFileI"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/test/Main.java",
    "chars": 925,
    "preview": "package edu.caltech.hep.dcapj.test;\n\nimport edu.caltech.hep.dcapj.dCapLayer;\nimport edu.caltech.hep.dcapj.io.dCacheFileO"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/test/Main2.java",
    "chars": 1944,
    "preview": "package edu.caltech.hep.dcapj.test;\n\nimport edu.caltech.hep.dcapj.dCapLayer;\nimport edu.caltech.hep.dcapj.io.dCacheFileI"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/test/Main3.java",
    "chars": 4092,
    "preview": "package edu.caltech.hep.dcapj.test;\n\nimport edu.caltech.hep.dcapj.PnfsUtil;\nimport edu.caltech.hep.dcapj.dCapLayer;\nimpo"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/ControlCommandCallback.java",
    "chars": 134,
    "preview": "package edu.caltech.hep.dcapj.util;\n\npublic interface ControlCommandCallback {\n    public void handleDoorCommand(String "
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/ControlConnection.java",
    "chars": 8291,
    "preview": "package edu.caltech.hep.dcapj.util;\n\nimport edu.caltech.hep.dcapj.Config;\nimport edu.caltech.hep.dcapj.PnfsUtil;\nimport "
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/DataConnectionCallback.java",
    "chars": 333,
    "preview": "package edu.caltech.hep.dcapj.util;\n\nimport java.io.DataInputStream;\nimport java.io.DataOutputStream;\nimport java.nio.ch"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/IOCallback.java",
    "chars": 3068,
    "preview": "package edu.caltech.hep.dcapj.util;\n\nimport java.io.DataInputStream;\nimport java.io.DataOutputStream;\nimport java.io.IOE"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/InvalidConfigurationException.java",
    "chars": 464,
    "preview": "package edu.caltech.hep.dcapj.util;\n\npublic class InvalidConfigurationException extends Exception {\n\n    public InvalidC"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/Server.java",
    "chars": 2810,
    "preview": "package edu.caltech.hep.dcapj.util;\n\nimport java.io.IOException;\nimport java.net.ServerSocket;\nimport java.net.Socket;\ni"
  },
  {
    "path": "src/edu/caltech/hep/dcapj/util/ServerNIO.java",
    "chars": 3199,
    "preview": "package edu.caltech.hep.dcapj.util;\n\nimport java.io.IOException;\nimport java.net.InetSocketAddress;\nimport java.net.Serv"
  },
  {
    "path": "src/lia/gsi/ClientTest.java",
    "chars": 856,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi;\n\nimport lia.gsi.net.GSIGssSocketFactory;\n\nimport java.io.*;\nimport java.net.InetAddress;"
  },
  {
    "path": "src/lia/gsi/FDTGSIServer.java",
    "chars": 1914,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi;\n\nimport lia.util.net.copy.FDTSessionManager;\nimport lia.util.net.copy.transport.ControlC"
  },
  {
    "path": "src/lia/gsi/GSIServer.java",
    "chars": 8621,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi;\n\nimport lia.gsi.net.GSIBaseServer;\nimport lia.gsi.net.Peer;\nimport org.globus.gsi.Creden"
  },
  {
    "path": "src/lia/gsi/authz/GridMap.java",
    "chars": 15601,
    "preview": "/*\n * Portions of this file Copyright 1999-2005 University of Chicago\n * Portions of this file Copyright 1999-2005 The U"
  },
  {
    "path": "src/lia/gsi/authz/GridMapAuthorization.java",
    "chars": 1192,
    "preview": "//----------------------------------------------------------------------\n//This code is developed as part of the Java Co"
  },
  {
    "path": "src/lia/gsi/authz/LocalMappingAuthorization.java",
    "chars": 2320,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi.authz;\n\nimport org.globus.gsi.gssapi.JaasGssUtil;\nimport org.globus.gsi.gssapi.auth.Autho"
  },
  {
    "path": "src/lia/gsi/net/GSIBaseServer.java",
    "chars": 10921,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi.net;\n\nimport lia.gsi.authz.LocalMappingAuthorization;\nimport org.globus.gsi.GSIConstants;"
  },
  {
    "path": "src/lia/gsi/net/GSIGssSocketFactory.java",
    "chars": 8064,
    "preview": "/*\n * Copyright 1999-2006 University of Chicago\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n "
  },
  {
    "path": "src/lia/gsi/net/Peer.java",
    "chars": 777,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi.net;\n\nimport lia.gsi.authz.LocalMappingAuthorization;\n\nimport javax.security.auth.Subject"
  },
  {
    "path": "src/lia/gsi/ssh/GSIAuthenticationClient.java",
    "chars": 11126,
    "preview": "package lia.gsi.ssh;\n\n/**\n * Copyright (c) 2004, National Research Council of Canada All rights reserved. Permission is "
  },
  {
    "path": "src/lia/gsi/ssh/TextSSHClient.java",
    "chars": 2298,
    "preview": "/*\n * $Id$\n */\npackage lia.gsi.ssh;\n\nimport com.sshtools.common.configuration.SshToolsConnectionProfile;\nimport com.ssht"
  },
  {
    "path": "src/lia/util/net/common/AbstractBPool.java",
    "chars": 16406,
    "preview": "/*\n * Created on Nov 11, 2009\n */\npackage lia.util.net.common;\n\nimport java.nio.ByteBuffer;\nimport java.util.IdentityHas"
  },
  {
    "path": "src/lia/util/net/common/AbstractFDTCloseable.java",
    "chars": 4550,
    "preview": "/*\n * $Id$\n */\npackage lia.util.net.common;\n\nimport java.util.concurrent.BlockingQueue;\nimport java.util.concurrent.Link"
  },
  {
    "path": "src/lia/util/net/common/AbstractFDTIOEntity.java",
    "chars": 1139,
    "preview": "/*\n * $Id$\n */\npackage lia.util.net.common;\n\nimport lia.util.net.copy.Accountable;\n\nimport java.util.concurrent.atomic.A"
  }
]

// ... and 236 more files (download for full content)

About this extraction

This page contains the full source code of the fast-data-transfer/fdt GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 436 files (2.5 MB), approximately 687.8k tokens, and a symbol index with 3917 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!