86 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
| Option Strict On
 | |
| 
 | |
| Imports System.Net.Sockets
 | |
| 
 | |
| ''' <summary>
 | |
| ''' This call contains shared methods that any class can use.
 | |
| ''' </summary>
 | |
| Public Class SharedMethods
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' Raises an error on the parent Winsock object.
 | |
|     ''' </summary>
 | |
|     ''' <param name="iParent">The parent Winsock object to raise the error on.</param>
 | |
|     ''' <param name="msg">A String containing a message describing the error being raised.</param>
 | |
|     Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String)
 | |
|         ' First use the StackTrace to get the calling class and function.
 | |
|         Dim CurrentStack As New System.Diagnostics.StackTrace()
 | |
|         Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name
 | |
|         Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString()
 | |
|         Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction))
 | |
|         ' Create the event arguement
 | |
|         Dim e As New WinsockErrorReceivedEventArgs(msg, caller)
 | |
|         ' Raise the event only if there really is a parent
 | |
|         If iParent IsNot Nothing Then
 | |
|             iParent.OnErrorReceived(e)
 | |
|         End If
 | |
|     End Sub
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' Raises an error on the parent Winsock object.
 | |
|     ''' </summary>
 | |
|     ''' <param name="iParent">The parent Winsock object to raise the error on.</param>
 | |
|     ''' <param name="msg">A String containing a message describing the error being raised.</param>
 | |
|     ''' <param name="details">A String containing extra details describing the error being raised.</param>
 | |
|     Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String)
 | |
|         ' First use the StackTrace to get the calling class and function
 | |
|         Dim CurrentStack As New System.Diagnostics.StackTrace()
 | |
|         Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name
 | |
|         Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString()
 | |
|         Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction))
 | |
|         ' Create the event arguement
 | |
|         Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details)
 | |
|         ' Raise the event only if there really is a parent
 | |
|         If iParent IsNot Nothing Then
 | |
|             iParent.OnErrorReceived(e)
 | |
|         End If
 | |
|     End Sub
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' Raises an error on the parent Winsock object.
 | |
|     ''' </summary>
 | |
|     ''' <param name="iParent">The parent Winsock object to raise the error on.</param>
 | |
|     ''' <param name="msg">A String containing a message describing the error being raised.</param>
 | |
|     ''' <param name="details">A String containing extra details describing the error being raised.</param>
 | |
|     ''' <param name="errCode">A value containing the socket's error code.</param>
 | |
|     Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String, ByVal errCode As SocketError)
 | |
|         ' First use the StackTrace to get the calling class and function
 | |
|         Dim CurrentStack As New System.Diagnostics.StackTrace()
 | |
|         Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name
 | |
|         Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString()
 | |
|         Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction))
 | |
|         ' Create the event arguement
 | |
|         Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details, errCode)
 | |
|         ' Raise the event only if there really is a parent
 | |
|         If iParent IsNot Nothing Then
 | |
|             iParent.OnErrorReceived(e)
 | |
|         End If
 | |
|     End Sub
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' Removes items from the beginning of an array.
 | |
|     ''' </summary>
 | |
|     Protected Friend Shared Function ShrinkArray(Of arrayType)(ByRef arr() As arrayType, ByVal desiredLengthToTrim As Integer) As arrayType()
 | |
|         ' Grab desired length from array - this will be returned
 | |
|         Dim retArr(desiredLengthToTrim - 1) As arrayType
 | |
|         Array.Copy(arr, 0, retArr, 0, desiredLengthToTrim)
 | |
|         ' Trim what we grabbed out of the array
 | |
|         Dim tmpArr(arr.GetUpperBound(0) - desiredLengthToTrim) As arrayType
 | |
|         Array.Copy(arr, desiredLengthToTrim, tmpArr, 0, arr.Length - desiredLengthToTrim)
 | |
|         arr = DirectCast(tmpArr.Clone(), arrayType())
 | |
|         ' Return the data
 | |
|         Return retArr
 | |
|     End Function
 | |
| 
 | |
| End Class
 | 
