#Region "Microsoft.VisualBasic::7182b9666930cdd483b68fba5b04f627, ComputingServices\FileSystem\FileSystemHost.vb"
' Author:
'
' asuka (amethyst.asuka@gcmodeller.org)
' xie (genetics@smrucc.org)
' xieguigang (xie.guigang@live.com)
'
' Copyright (c) 2018 GPL3 Licensed
'
'
' GNU GENERAL PUBLIC LICENSE (GPL3)
'
'
' This program is free software: you can redistribute it and/or modify
' it under the terms of the GNU General Public License as published by
' the Free Software Foundation, either version 3 of the License, or
' (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
' GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program. If not, see .
' /********************************************************************************/
' Summaries:
' Class FileSystemHost
'
' Properties: OpenedHandles, Portal
'
' Constructor: (+1 Overloads) Sub New
' Function: CloseHandle, CombinePath, CopyDirectory, CopyFile, CreateDirectory
' CurrentDirectory, DeleteDirectory, DeleteFile, DirectoryExists, Drives
' FileExists, FindInFiles, Flush, GetDirectories, GetDirectoryInfo
' GetDriveInfo, GetFileInfo, GetFiles, GetName, GetParentPath
' GetSetLength, GetSetPosition, GetStreamInfo, GetTempFileName, Lock
' MoveDirectory, MoveFile, OpenFileHandle, ReadBuffer, RenameDirectory
' RenameFile, Seek, WriteBuffer
'
'
' /********************************************************************************/
#End Region
Imports System.IO
Imports Microsoft.VisualBasic.Linq
Imports Microsoft.VisualBasic.Net
Imports Microsoft.VisualBasic.Net.Http
Imports Microsoft.VisualBasic.Net.Protocols
Imports Microsoft.VisualBasic.Net.Protocols.Reflection
Imports Microsoft.VisualBasic.Parallel
Imports Microsoft.VisualBasic.Serialization.JSON
Imports sciBASIC.ComputingServices.ComponentModel
Imports sciBASIC.ComputingServices.FileSystem.Protocols
Namespace FileSystem
Public Class FileSystemHost : Inherits IHostBase
'''
''' 远程服务器上面已经打开的文件句柄
'''
'''
Public ReadOnly Property OpenedHandles As Dictionary(Of String, FileStream) =
New Dictionary(Of String, FileStream)
'''
'''
'''
'''
Sub New(port As Integer)
Dim protocols As New ProtocolHandler(Me)
__host = New TcpSynchronizationServicesSocket(port)
__host.Responsehandler = AddressOf protocols.HandleRequest
Call RunTask(AddressOf __host.Run)
End Sub
Public Overrides ReadOnly Property Portal As IPEndPoint
Get
Return New IPEndPoint(AsynInvoke.LocalIPAddress, __host.LocalPort)
End Get
End Property
#Region "FileStream"
Private Function Lock(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As LockArgs = args.LoadObject(Of LockArgs)
Dim uid As String = params.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Call params.LockOrNot(stream)
Return NetResponse.RFC_OK
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function Seek(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As SeekArgs = args.LoadObject(Of SeekArgs)
Dim uid As String = params.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Dim l As Long = params.Seek(stream)
Dim value As RequestStream = RequestStream.CreatePackage(BitConverter.GetBytes(l))
Return value
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function Flush(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim handle = args.GetUTF8String.LoadObject(Of ReadBuffer)
Dim uid As String = handle.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Call stream.Flush()
Return NetResponse.RFC_OK
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function ReadBuffer(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim handle = args.GetUTF8String.LoadObject(Of ReadBuffer)
Dim uid As String = handle.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Dim buffer As Byte() = handle.CreateBuffer
Dim n As Integer = stream.Read(buffer, handle.offset, handle.length)
Dim value As RequestStream = RequestStream.CreatePackage(buffer)
value.Protocol = CLng(n)
Return value
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function WriteBuffer(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As WriteStream = args.GetRawStream(Of WriteStream)
Dim uid As String = params.Handle.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Call stream.Write(params.buffer, params.offset, params.length)
Return NetResponse.RFC_OK
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function OpenFileHandle(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As FileOpen = JsonContract.LoadObject(Of FileOpen)(args.GetUTF8String)
Dim stream As FileStream = params.OpenHandle
Dim handle = FileStreamInfo.GetInfo(stream)
handle.FileName = params.FileName
Call OpenedHandles.Add(handle.Handle, stream)
Return New RequestStream(handle.GetJson)
End Function
Private Function GetStreamInfo(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim handle = args.GetUTF8String.LoadObject(Of FileHandle)
Dim uid As String = handle.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Dim info As FileStreamInfo = FileStreamInfo.GetInfo(stream)
info.FileName = handle.FileName
Dim json As String = info.GetJson
Return New RequestStream(json)
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function CloseHandle(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim handle = args.GetUTF8String.LoadObject(Of FileHandle)
Dim uid As String = handle.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
Call stream.Free
Call OpenedHandles.Remove(uid)
Return NetResponse.RFC_OK
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function GetSetPosition(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As FileStreamPosition = args.LoadObject(Of FileStreamPosition)
Dim uid As String = params.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
If params.Position = FileStreamPosition.GET Then
Return RequestStream.CreatePackage(stream.Position)
Else
stream.Position = params.Position
Return NetResponse.RFC_OK
End If
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
Private Function GetSetLength(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim params As FileStreamPosition = args.LoadObject(Of FileStreamPosition)
Dim uid As String = params.Handle
If OpenedHandles.ContainsKey(uid) Then
Dim stream As FileStream = OpenedHandles(uid)
If params.Position = FileStreamPosition.GET Then
Return RequestStream.CreatePackage(stream.Length)
Else
stream.SetLength(params.Position)
Return NetResponse.RFC_OK
End If
Else
Return New RequestStream(Scan0, HTTP_RFC.RFC_TOKEN_INVALID, $"File handle {uid} is not opened!")
End If
End Function
#End Region
' Exceptions:
' T:System.IO.DirectoryNotFoundException:
' The path is not valid.
'
' T:System.UnauthorizedAccessException:
' The user lacks necessary permissions.
'''
''' Gets or sets the current directory.
'''
'''
'''
'''
''' The current directory for file I/O operations.
Private Function CurrentDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim DIR As String = args.GetUTF8String
If String.IsNullOrEmpty(DIR) Then
DIR = FileIO.FileSystem.CurrentDirectory ' GET
Return New RequestStream(DIR)
Else
Try
FileIO.FileSystem.CurrentDirectory = DIR 'SET
Catch ex As Exception
Return New RequestStream(HTTP_RFC.RFC_OK, HTTP_RFC.RFC_INTERNAL_SERVER_ERROR, ex.ToString)
End Try
Return NetResponse.RFC_OK
End If
End Function
'''
''' Returns a read-only collection of all available drive names.
'''
'''
'''
'''
''' A read-only collection of all available drives as System.IO.DriveInfo objects.
Private Function Drives(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
Dim lst = FileIO.FileSystem.Drives.Select(Function(x) x.GetJson).ToArray
Return New RequestStream(lst.GetJson)
End Function
' Parameters:
' sourceDirectoryName:
' The directory to be copied.
'
' destinationDirectoryName:
' The location to which the directory contents should be copied.
'
' Exceptions:
' T:System.ArgumentException:
' The new name specified for the directory contains a colon (:) or slash (\ or
' /).
'
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' destinationDirectoryName or sourceDirectoryName is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The source directory does not exist.
'
' T:System.IO.IOException:
' The source directory is a root directory
'
' T:System.IO.IOException:
' The combined path points to an existing file.
'
' T:System.IO.IOException:
' The source path and target path are the same.
'
' T:System.InvalidOperationException:
' The operation is cyclic.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A folder name in the path contains a colon (:) or is in an invalid format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' A destination file exists but cannot be accessed.
'''
''' Copies the contents of a directory to another directory.
'''
'''
'''
'''
'''
Private Function CopyDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Copies a file to a new location.
'
' Parameters:
' sourceFileName:
' The file to be copied.
'
' destinationFileName:
' The location to which the file should be copied.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentException:
' The system could not retrieve the absolute path.
'
' T:System.ArgumentException:
' destinationFileName contains path information.
'
' T:System.ArgumentNullException:
' destinationFileName or sourceFileName is Nothing or an empty string.
'
' T:System.IO.FileNotFoundException:
' The source file is not valid or does not exist.
'
' T:System.IO.IOException:
' The combined path points to an existing directory.
'
' T:System.IO.IOException:
' The user does not have sufficient permissions to access the file.
'
' T:System.IO.IOException:
' A file in the target directory with the same name is in use.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.UnauthorizedAccessException:
' The user does not have required permission.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
Private Function CopyFile(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Creates a directory.
'
' Parameters:
' directory:
' Name and location of the directory.
'
' Exceptions:
' T:System.ArgumentException:
' The directory name is malformed. For example, it contains illegal characters
' or is only white space.
'
' T:System.ArgumentNullException:
' directory is Nothing or an empty string.
'
' T:System.IO.PathTooLongException:
' The directory name is too long.
'
' T:System.NotSupportedException:
' The directory name is only a colon (:).
'
' T:System.IO.IOException:
' The parent directory of the directory to be created is read-only
'
' T:System.UnauthorizedAccessException:
' The user does not have permission to create the directory.
Private Function CreateDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Deletes a directory.
'
' Parameters:
' directory:
' Directory to be deleted.
'
' onDirectoryNotEmpty:
' Specifies what should be done when a directory that is to be deleted contains
' files or directories. Default is DeleteDirectoryOption.DeleteAllContents.
'
' Exceptions:
' T:System.ArgumentException:
' The path is a zero-length string, is malformed, contains only white space, or
' contains invalid characters (including wildcard characters). The path is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' directory is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The directory does not exist or is a file.
'
' T:System.IO.IOException:
' The directory is not empty, and onDirectoryNotEmpty is set to ThrowIfDirectoryNonEmpty.
'
' T:System.IO.IOException:
' The user does not have permission to delete the directory or subdirectory.
'
' T:System.IO.IOException:
' A file in the directory or subdirectory is in use.
'
' T:System.NotSupportedException:
' The directory name contains a colon (:).
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.Security.SecurityException:
' The user does not have required permissions.
'
' T:System.OperationCanceledException:
' The user cancels the operation or the directory cannot be deleted.
Private Function DeleteDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Deletes a file.
'
' Parameters:
' file:
' Name and path of the file to be deleted.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; it has a trailing
' slash where a file must be specified; or it is a device path (starts with \\.\).
'
' T:System.ArgumentNullException:
' file is Nothing or an empty string.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.IO.IOException:
' The file is in use.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.IO.FileNotFoundException:
' The file does not exist.
'
' T:System.UnauthorizedAccessException:
' The user does not have permission to delete the file or the file is read-only.
Private Function DeleteFile(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Moves a directory from one location to another.
'
' Parameters:
' sourceDirectoryName:
' Path of the directory to be moved.
'
' destinationDirectoryName:
' Path of the directory to which the source directory is being moved.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' sourceDirectoryName or destinationDirectoryName is Nothing or an empty string.
'
' T:System.ArgumentNullException:
' sourceDirectoryName or destinationDirectoryName is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The directory does not exist.
'
' T:System.IO.IOException:
' The source is a root directory or The source path and the target path are the
' same.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.InvalidOperationException:
' The operation is cyclic.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user does not have required permission.
Private Function MoveDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Moves a file to a new location.
'
' Parameters:
' sourceFileName:
' Path of the file to be moved.
'
' destinationFileName:
' Path of the directory into which the file should be moved.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\); it ends with a trailing slash.
'
' T:System.ArgumentNullException:
' destinationFileName is Nothing or an empty string.
'
' T:System.IO.FileNotFoundException:
' The source file is not valid or does not exist.
'
' T:System.IO.IOException:
' The file is in use by another process, or an I/O error occurs.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
Private Function MoveFile(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Renames a directory.
'
' Parameters:
' directory:
' Path and name of directory to be renamed.
'
' newName:
' New name for directory.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentException:
' newName contains path information.
'
' T:System.ArgumentNullException:
' directory is Nothing.-or-newName is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The directory does not exist.
'
' T:System.IO.IOException:
' There is an existing file or directory with the name specified in newName.
'
' T:System.IO.PathTooLongException:
' The path exceeds 248 characters.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user does not have required permission.
Private Function RenameDirectory(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Renames a file.
'
' Parameters:
' file:
' File to be renamed.
'
' newName:
' New name of file.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentException:
' newName contains path information or ends with a backslash (\).
'
' T:System.ArgumentNullException:
' file is Nothing.-or-newName is Nothing or an empty string.
'
' T:System.IO.FileNotFoundException:
' The directory does not exist.
'
' T:System.IO.IOException:
' There is an existing file or directory with the name specified in newName.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user does not have required permission.
Private Function RenameFile(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Combines two paths and returns a properly formatted path.
'
' Parameters:
' baseDirectory:
' String. First path to be combined.
'
' relativePath:
' String. Second path to be combined.
'
' Returns:
' The combination of the specified paths.
'
' Exceptions:
' T:System.ArgumentException:
' baseDirectory or relativePath are malformed paths.
Private Function CombinePath(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns True if the specified directory exists.
'
' Parameters:
' directory:
' Path of the directory.
'
' Returns:
' True if the directory exists; otherwise False.
Private Function DirectoryExists(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns True if the specified file exists.
'
' Parameters:
' file:
' Name and path of the file.
'
' Returns:
' Returns True if the file exists; otherwise this method returns False.
'
' Exceptions:
' T:System.ArgumentException:
' The name of the file ends with a backslash (\).
Private Function FileExists(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a read-only collection of strings representing the names of files containing
' the specified text.
'
' Parameters:
' directory:
' The directory to be searched.
'
' containsText:
' The search text.
'
' ignoreCase:
' True if the search should be case-sensitive; otherwise False. Default is True.
'
' searchType:
' Whether to include subfolders. Default is SearchOption.SearchTopLevelOnly.
'
' Returns:
' Read-only collection of the names of files containing the specified text..
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' directory is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The specified directory does not exist.
'
' T:System.IO.IOException:
' The specified directory points to an existing file.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' The specified directory path contains a colon (:) or is in an invalid format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user lacks necessary permissions.
Private Function FindInFiles(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a collection of strings representing the path names of subdirectories
' within a directory.
'
' Parameters:
' directory:
' Name and path of directory.
'
' Returns:
' Read-only collection of the path names of subdirectories within the specified
' directory..
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' directory is Nothing or an empty string.
'
' T:System.IO.DirectoryNotFoundException:
' The specified directory does not exist.
'
' T:System.IO.IOException:
' The specified directory points to an existing file.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user lacks necessary permissions.
Private Function GetDirectories(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a System.IO.DirectoryInfo object for the specified path.
'
' Parameters:
' directory:
' String. Path of directory.
'
' Returns:
' System.IO.DirectoryInfo object for the specified path.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' directory is Nothing or an empty string.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' The directory path contains a colon (:) or is in an invalid format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path
Private Function GetDirectoryInfo(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a System.IO.DriveInfo object for the specified drive.
'
' Parameters:
' drive:
' Drive to be examined.
'
' Returns:
' System.IO.DriveInfo object for the specified drive.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' drive is Nothing or an empty string.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path
Private Function GetDriveInfo(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a System.IO.FileInfo object for the specified file.
'
' Parameters:
' file:
' Name and path of the file.
'
' Returns:
' System.IO.FileInfo object for the specified file
'
' Exceptions:
' T:System.ArgumentException:
' The path name is malformed. For example, it contains invalid characters or is
' only white space. The file name has a trailing slash mark.
'
' T:System.ArgumentNullException:
' file is Nothing or an empty string.
'
' T:System.NotSupportedException:
' The path contains a colon in the middle of the string.
'
' T:System.IO.PathTooLongException:
' The path is too long.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions.
'
' T:System.UnauthorizedAccessException:
' The user lacks ACL (access control list) access to the file.
Private Function GetFileInfo(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns a read-only collection of strings representing the names of files within
' a directory.
'
' Parameters:
' directory:
' Directory to be searched.
'
' Returns:
' Read-only collection of file names from the specified directory.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentNullException:
' directory is Nothing.
'
' T:System.IO.DirectoryNotFoundException:
' The directory to search does not exist.
'
' T:System.IO.IOException:
' directory points to an existing file.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
'
' T:System.Security.SecurityException:
' The user lacks necessary permissions to view the path.
'
' T:System.UnauthorizedAccessException:
' The user lacks necessary permissions.
Private Function GetFiles(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Parses the file name out of the path provided.
'
' Parameters:
' path:
' Required. Path to be parsed. String.
'
' Returns:
' The file name from the specified path.
Private Function GetName(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Returns the parent path of the provided path.
'
' Parameters:
' path:
' Path to be examined.
'
' Returns:
' The parent path of the provided path.
'
' Exceptions:
' T:System.ArgumentException:
' The path is not valid for one of the following reasons: it is a zero-length string;
' it contains only white space; it contains invalid characters; or it is a device
' path (starts with \\.\).
'
' T:System.ArgumentException:
' Path does not have a parent path because it is a root path.
'
' T:System.ArgumentNullException:
' path is Nothing.
'
' T:System.IO.PathTooLongException:
' The path exceeds the system-defined maximum length.
'
' T:System.NotSupportedException:
' A file or directory name in the path contains a colon (:) or is in an invalid
' format.
Private Function GetParentPath(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
'
' Summary:
' Creates a uniquely named zero-byte temporary file on disk and returns the full
' path of that file.
'
' Returns:
' String containing the full path of the temporary file.
Private Function GetTempFileName(CA As Long, args As RequestStream, remote As System.Net.IPEndPoint) As RequestStream
End Function
End Class
End Namespace