Added Method "GetServiceItemsBandwidth" to obtain a real time summary of BytesSent and BytesReceived from a Array of MailAccount

This commit is contained in:
vfportero 2011-08-18 13:17:01 +02:00
parent c83fa3ecda
commit acb6af5778

View file

@ -189,7 +189,7 @@ Public Class Merak
domainItem.AbuseAccount = ""
domainItem.Enabled = CInt(domainObjectClass.GetProperty("D_DisableLogin")) = 0
domainItem.MaxMailboxSizeInMB = CStr(domainObjectClass.GetProperty("D_UserMailbox"))
domainItem.MaxMailboxSizeInMB = CInt(domainObjectClass.GetProperty("D_UserMailbox"))
'Dim abuseEmail As String = "abuse@" + domainName
@ -1239,6 +1239,76 @@ ContinueFor1:
Next
End Sub
Public Overrides Function GetServiceItemsBandwidth(items() As ServiceProviderItem, since As Date) As ServiceProviderItemBandwidth()
Dim itemsBandwidth As List(Of ServiceProviderItemBandwidth) = New List(Of ServiceProviderItemBandwidth)
Dim item As ServiceProviderItem
For Each item In items
If TypeOf item Is MailAccount Then
Dim name As String = item.Name
Dim bandwidth As New ServiceProviderItemBandwidth()
bandwidth.ItemId = item.Id
bandwidth.Days = GetDailyStatistics(since, name)
itemsBandwidth.Add(bandwidth)
End If
Next item
Return itemsBandwidth.ToArray()
End Function
Public Function GetDailyStatistics(since As Date, mailAccount As String) As DailyStatistics()
Dim days As List(Of DailyStatistics) = New List(Of DailyStatistics)
Dim currentDate As DateTime = since
Dim now As DateTime = DateTime.Now
While currentDate < now
days.Add(GetSingleDayBandwidthStatistics(currentDate, mailAccount))
' advance day
currentDate = currentDate.AddDays(1)
End While
Return days.ToArray()
End Function
Public Function GetSingleDayBandwidthStatistics(day As Date, mailAccount As String) As DailyStatistics
Const ReceivedAmmountPositionInString As Int32 = 18
Const SentOutAmmountPositionInString As Int32 = 22
Dim apiObject = CreateObject(API_PROGID)
Dim result As New DailyStatistics()
Dim formatedDate As String
formatedDate = Format(day, "yyyy/MM/dd")
result.Day = day.Day
result.Month = day.Month
result.Year = day.Year
result.BytesReceived = 0
result.BytesSent = 0
Try
Dim apiResult As String = apiObject.GetUserStatistics(formatedDate, formatedDate, mailAccount)
Dim apiResultSplit As String() = apiResult.Split(",")
result.BytesReceived = apiResultSplit(ReceivedAmmountPositionInString)
result.BytesSent = apiResultSplit(SentOutAmmountPositionInString)
Catch ex As Exception
Log.WriteError(String.Format("Merak: Error calculating '{0}' bandwidth at {1}", mailAccount, day.ToShortDateString()), ex)
End Try
Return result
End Function
Public Overrides Function GetServiceItemsDiskSpace(ByVal items() As ServiceProviderItem) As ServiceProviderItemDiskSpace()
Dim itemsDiskspace As List(Of ServiceProviderItemDiskSpace) = New List(Of ServiceProviderItemDiskSpace)
Dim item As ServiceProviderItem
@ -1302,8 +1372,6 @@ ContinueFor1:
#End Region
'/ Provides constant values for easier interoperability with Merak COM library
'/ </summary>
Private Class MerakInterop