Option Strict On
Imports System.Net.Sockets
'''
''' This call contains shared methods that any class can use.
'''
Public Class SharedMethods
'''
''' Raises an error on the parent Winsock object.
'''
''' The parent Winsock object to raise the error on.
''' A String containing a message describing the error being raised.
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
'''
''' Raises an error on the parent Winsock object.
'''
''' The parent Winsock object to raise the error on.
''' A String containing a message describing the error being raised.
''' A String containing extra details describing the error being raised.
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
'''
''' Raises an error on the parent Winsock object.
'''
''' The parent Winsock object to raise the error on.
''' A String containing a message describing the error being raised.
''' A String containing extra details describing the error being raised.
''' A value containing the socket's error code.
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
'''
''' Removes items from the beginning of an array.
'''
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