Error processing SSI file
LEADTOOLS Multimedia (Leadtools.MediaStreaming assembly)

Show in webframe

ProtocolVersion Property






Retrieves the protocol version that the client used.
Syntax
string ProtocolVersion {get;}
'Declaration
 
ReadOnly Property ProtocolVersion As String
'Usage
 
Dim instance As ILtmsLogInformation
Dim value As String
 
value = instance.ProtocolVersion
property String^ ProtocolVersion {
   String^ get();
}

Property Value

A string that represents the protocol version that the client used. For example "HTTP/1.1" or "RTMP/3.0".
Remarks

If the method fails, an error is raised. For more information, refer to the Error Codes.

Example
Copy Code  
Imports Leadtools
Imports Leadtools.MediaStreaming

Private Enum W3CLOG
  [date] = &H1
  time = &H2
  c_ip = &H4
  cs_username = &H8
  s_sitename = &H10
  s_computername = &H20
  s_ip = &H40
  s_port = &H80
  cs_method = &H100
  cs_uri_stem = &H200
  cs_uri_query = &H400
  sc_status = &H800
  sc_win32_status = &H1000
  sc_bytes = &H2000
  cs_bytes = &H4000
  time_taken = &H8000
  cs_version = &H10000
  cs_host = &H20000
  cs_user_agent = &H40000
  cs_cookie = &H80000
  cs_referer = &H100000
  sc_substatus = &H200000
End Enum

Public Class CW3CLogHandler : Implements ILtmsLogHandler
  Private m_enable As Boolean
  Private m_fields As Integer
  Private m_localtime As Boolean
  Private m_dtfile As DateTime
  Private m_software As String
  Private m_folder As String
  Private m_prefix As String
  Private m_sw As StreamWriter

  Public Sub New(ByVal prefix As String, ByVal software As String, ByVal enable As Boolean, ByVal folder As String, ByVal fields As Integer, ByVal localtime As Boolean)
     m_prefix = prefix
     m_software = software
     m_enable = enable
     m_folder = folder
     m_fields = fields
     m_localtime = localtime
  End Sub
  Protected Overrides Sub Finalize()

  End Sub

  Private Sub WriteString(ByVal str As String)
     m_sw.Write(str)
  End Sub

  Private Function GetTime(ByVal dTime As Double) As DateTime
     Dim dt As DateTime = DateTime.FromOADate(dTime)

     If m_localtime Then
       Return dt.ToLocalTime()
     End If

     Return dt
  End Function

  Private Function GetLogPath(ByVal timestamp As Double) As String
     Dim dt As DateTime = GetTime(timestamp)
     Dim strFullPath As String

     Try
       Dim resolver As PathResolver = New PathResolver()
       strFullPath = resolver.Resolve(m_folder)
     Catch
       Return ""
     End Try

     strFullPath &= "\"
     strFullPath &= m_prefix

     If (Not m_localtime) Then
       strFullPath &= dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") & "UTC.log"
     Else
       strFullPath &= dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") & ".log"
     End If

     Return strFullPath
  End Function

  Public Sub LoadConfig(ByVal server As Server)
     Dim enable As Boolean = m_enable
     Dim localtime As Boolean = m_localtime
     Dim folder As String = m_folder
     Dim fields As Integer = m_fields
     Dim dirty As Boolean = False

     Dim AppProps As ApplicationProperties = server.GetApplicationProperties()

     Try
       enable = AppProps.GetBoolean("LogEnable")
     Catch
       AppProps.AddBoolean("LogEnable", enable)
       dirty = True
     End Try

     Try
       localtime = AppProps.GetBoolean("LogLocalTime")
     Catch
       AppProps.AddBoolean("LogLocalTime", localtime)
       dirty = True
     End Try

     Try
       folder = AppProps.GetString("LogFolder")
     Catch
       AppProps.AddString("LogFolder", folder)
       dirty = True
     End Try

     Try
       fields = AppProps.GetInteger("LogFields")
     Catch
       AppProps.AddInteger("LogFields", fields)
       dirty = True
     End Try

     If dirty Then
       server.SetApplicationProperties(AppProps)
     End If

     ' if anything has changed then we need to close the current file
     If (Not enable) AndAlso (String.Compare(m_folder, folder, True) <> 0) OrElse fields <> m_fields OrElse m_localtime <> localtime Then
       If Not m_sw Is Nothing Then
         m_sw.Close()
       End If
     End If

     m_folder = folder
     m_localtime = localtime
     m_enable = enable
     m_fields = fields
  End Sub

  Private Function CreateLog(ByVal timestamp As Double) As Boolean
     If Not m_sw Is Nothing Then
       m_sw.Close()
     End If

     If (Not m_enable) Then
       Return False
     End If

     Try
       m_sw = File.CreateText(GetLogPath(timestamp))
     Catch
       Return False
     End Try

     m_dtfile = GetTime(timestamp)

     Dim s As String
     s = "#Software: " & m_software & Constants.vbCrLf
     WriteString(s)
     WriteString("#Version: 1.0" & Constants.vbCrLf)
     Dim dt As DateTime = GetTime(timestamp)
     s = "#Date: " & dt.ToString("yyyy-MM-dd HH:mm:ss") & Constants.vbCrLf
     WriteString(s)

     s = "#Fields:"

     If (m_fields And CInt(W3CLOG.date)) = CInt(W3CLOG.date) Then
       s &= " date"
     End If
     If (m_fields And CInt(W3CLOG.time)) = CInt(W3CLOG.time) Then
       s &= " time"
     End If
     If (m_fields And CInt(W3CLOG.s_sitename)) = CInt(W3CLOG.s_sitename) Then
       s &= " s-sitename"
     End If
     If (m_fields And CInt(W3CLOG.s_computername)) = CInt(W3CLOG.s_computername) Then
       s &= " s-computername"
     End If
     If (m_fields And CInt(W3CLOG.s_ip)) = CInt(W3CLOG.s_ip) Then
       s &= " s-ip"
     End If
     If (m_fields And CInt(W3CLOG.cs_method)) = CInt(W3CLOG.cs_method) Then
       s &= " cs-method"
     End If
     If (m_fields And CInt(W3CLOG.cs_uri_stem)) = CInt(W3CLOG.cs_uri_stem) Then
       s &= " cs-uri-stem"
     End If
     If (m_fields And CInt(W3CLOG.cs_uri_query)) = CInt(W3CLOG.cs_uri_query) Then
       s &= " cs-uri-query"
     End If
     If (m_fields And CInt(W3CLOG.s_port)) = CInt(W3CLOG.s_port) Then
       s &= " s-port"
     End If
     If (m_fields And CInt(W3CLOG.cs_username)) = CInt(W3CLOG.cs_username) Then
       s &= " cs-username"
     End If
     If (m_fields And CInt(W3CLOG.c_ip)) = CInt(W3CLOG.c_ip) Then
       s &= " c-ip"
     End If
     If (m_fields And CInt(W3CLOG.cs_version)) = CInt(W3CLOG.cs_version) Then
       s &= " cs-version"
     End If
     If (m_fields And CInt(W3CLOG.cs_user_agent)) = CInt(W3CLOG.cs_user_agent) Then
       s &= " cs(User-Agent)"
     End If
     If (m_fields And CInt(W3CLOG.cs_cookie)) = CInt(W3CLOG.cs_cookie) Then
       s &= " cs(Cookie)"
     End If
     If (m_fields And CInt(W3CLOG.cs_referer)) = CInt(W3CLOG.cs_referer) Then
       s &= " cs(Referer)"
     End If
     If (m_fields And CInt(W3CLOG.cs_host)) = CInt(W3CLOG.cs_host) Then
       s &= " cs-host"
     End If
     If (m_fields And CInt(W3CLOG.sc_status)) = CInt(W3CLOG.sc_status) Then
       s &= " sc-status"
     End If
     If (m_fields And CInt(W3CLOG.sc_substatus)) = CInt(W3CLOG.sc_substatus) Then
       s &= " sc-substatus"
     End If
     If (m_fields And CInt(W3CLOG.sc_win32_status)) = CInt(W3CLOG.sc_win32_status) Then
       s &= " sc-win32-status"
     End If
     If (m_fields And CInt(W3CLOG.sc_bytes)) = CInt(W3CLOG.sc_bytes) Then
       s &= " sc-bytes"
     End If
     If (m_fields And CInt(W3CLOG.cs_bytes)) = CInt(W3CLOG.cs_bytes) Then
       s &= " cs-bytes"
     End If
     If (m_fields And CInt(W3CLOG.time_taken)) = CInt(W3CLOG.time_taken) Then
       s &= " time-taken"
     End If
     s &= Constants.vbCrLf
     WriteString(s)

     m_sw.Flush()

     Return True
  End Function

  Private Function escape(ByVal s As String) As String
     Dim t As String = ""
     For Each c As Char In s
       If (Not Char.IsControl(c)) AndAlso (Not Char.IsWhiteSpace(c)) Then
         t &= c
       Else
         t &= "+"
       End If
     Next c

     Return t
  End Function

  Public Sub InitializeLog(ByVal timestamp As Double) Implements ILtmsLogHandler.InitializeLog
     CreateLog(timestamp)
  End Sub

  Public Sub TerminateLog() Implements ILtmsLogHandler.TerminateLog
     If Not m_sw Is Nothing Then
       m_sw.Close()
     End If
  End Sub

  Public Sub LogInformation(ByVal info As ILtmsLogInformation) Implements ILtmsLogHandler.LogInformation
     Dim s As String = ""

     If (Not m_enable) Then
       Return
     End If

     ' check if we need to roll to a new file
       Dim dt As DateTime = GetTime(info.TimeStamp)

       If m_sw Is Nothing OrElse dt.Day <> m_dtfile.Day OrElse dt.Month <> m_dtfile.Month OrElse dt.Year <> m_dtfile.Year Then
         If (Not CreateLog(info.TimeStamp)) Then
           Return
         End If
       End If
     If (m_fields And CInt(W3CLOG.date)) = CInt(W3CLOG.date) Then
       Dim dtDate As DateTime = GetTime(info.TimeStamp)

       If s.Length > 0 Then
         s &= " "
       End If
       s &= dtDate.ToString("yyyy-MM-dd")
     End If
     If (m_fields And CInt(W3CLOG.time)) = CInt(W3CLOG.time) Then
       Dim dtTime As DateTime = GetTime(info.TimeStamp)

       If s.Length > 0 Then
         s &= " "
       End If
       s &= dtTime.ToString("HH:mm:ss")
     End If
     If (m_fields And CInt(W3CLOG.s_sitename)) = CInt(W3CLOG.s_sitename) Then
       Dim str As String = info.SiteName
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If

     End If
     If (m_fields And CInt(W3CLOG.s_computername)) = CInt(W3CLOG.s_computername) Then
       Dim str As String = info.ComputerName
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.s_ip)) = CInt(W3CLOG.s_ip) Then
       Dim str As String = info.ServerIP
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_method)) = CInt(W3CLOG.cs_method) Then
       Dim str As String = info.Method
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_uri_stem)) = CInt(W3CLOG.cs_uri_stem) Then
       Dim str As String = info.URIStem
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_uri_query)) = CInt(W3CLOG.cs_uri_query) Then
       Dim str As String = info.URIQuery
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.s_port)) = CInt(W3CLOG.s_port) Then
       Dim n As Integer = info.ServerPort
       If s.Length > 0 Then
         s &= " "
       End If
       s &= n.ToString()
     End If
     If (m_fields And CInt(W3CLOG.cs_username)) = CInt(W3CLOG.cs_username) Then
       Dim str As String = info.UserName
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.c_ip)) = CInt(W3CLOG.c_ip) Then
       Dim str As String = info.ClientIP
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_version)) = CInt(W3CLOG.cs_version) Then
       Dim str As String = info.ProtocolVersion
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_user_agent)) = CInt(W3CLOG.cs_user_agent) Then
       Dim str As String = info.UserAgent
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_cookie)) = CInt(W3CLOG.cs_cookie) Then
       Dim str As String = info.Cookie
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_referer)) = CInt(W3CLOG.cs_referer) Then
       Dim str As String = info.Referrer
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_host)) = CInt(W3CLOG.cs_host) Then
       Dim str As String = info.Host
       If s.Length > 0 Then
         s &= " "
       End If
       If str.Length = 0 Then
         s &= "-"
       Else
         s &= escape(str)
       End If
     End If
     If (m_fields And CInt(W3CLOG.sc_status)) = CInt(W3CLOG.sc_status) Then
       Dim n As Integer = info.Status
       If s.Length > 0 Then
         s &= " "
       End If
       s &= n.ToString()
     End If
     If (m_fields And CInt(W3CLOG.sc_substatus)) = CInt(W3CLOG.sc_substatus) Then
       Dim n As Integer = info.ProtocolSubStatus
       If s.Length > 0 Then
         s &= " "
       End If
       s &= n.ToString()
     End If
     If (m_fields And CInt(W3CLOG.sc_win32_status)) = CInt(W3CLOG.sc_win32_status) Then
       Dim n As Integer = info.Win32Status
       If s.Length > 0 Then
         s &= " "
       End If
       s &= n.ToString()
     End If
     If (m_fields And CInt(W3CLOG.sc_bytes)) = CInt(W3CLOG.sc_bytes) Then
       Dim n As Integer = info.BytesSent
       If s.Length > 0 Then
         s &= " "
       End If
       If n < 0 Then
         s &= "-"
       Else
         s &= n.ToString()
       End If
     End If
     If (m_fields And CInt(W3CLOG.cs_bytes)) = CInt(W3CLOG.cs_bytes) Then
       Dim n As Integer = info.BytesReceived
       If s.Length > 0 Then
         s &= " "
       End If
       If n < 0 Then
         s &= "-"
       Else
         s &= n.ToString()
       End If
     End If
     If (m_fields And CInt(W3CLOG.time_taken)) = CInt(W3CLOG.time_taken) Then
       Dim n As Integer = info.TimeTaken
       If s.Length > 0 Then
         s &= " "
       End If
       If n < 0 Then
         s &= "-"
       Else
         s &= n.ToString()
       End If
     End If

     s &= Constants.vbCrLf
     WriteString(s)
     m_sw.Flush()
  End Sub
End Class


Public _server As Server = Nothing
Public _result As Boolean = False

Public Sub W3CLogHandlerExample()
  Try
     Dim enumState As State
     Dim _loghandler As CW3CLogHandler

     ' create an instance of the server object
     _server = New Leadtools.MediaStreaming.Server()

     ' create the log handler
     _loghandler = New CW3CLogHandler("ltmsServer_", "LEADTOOLS Media Streaming Server", True, "ltmsLogFolder", 0, False)

     ' set the log handler
     _server.ILogHandler = _loghandler

       ' for demonstration, compare the interface we just set
       Dim ihandler As ILtmsLogHandler = Nothing
       ihandler = _server.ILogHandler
       If Not ihandler Is CType(_loghandler, ILtmsLogHandler) Then
         _result = False
         Return
       End If

     ' load the config file located in the config subfolder under the executable folder
     ' or comment this section out to run with the server�s default settings
     _server.ImportConfigFile("ltmsConfigFolder\LeadtoolsMediaStreamingServer.xml")

     ' start the server
     _server.Start()

     ' confirm the running state for demonstration purposes
     enumState = _server.State

     If enumState = State.Started Then
       ' display a message that the server is running and wait for OK
       MessageBox.Show("The server has started. Press OK to stop.", "LEADTOOLS Media Streaming Examples", MessageBoxButtons.OK, MessageBoxIcon.Information)
     End If

     ' stop the server
     _server.Stop()

     ' remove the log handler
     _server.ILogHandler = Nothing

     _result = True
  Catch e1 As Exception
     _result = False
  End Try
End Sub
using Leadtools;
using Leadtools.MediaStreaming;

enum W3CLOG
{
   date = 0x00000001,
   time = 0x00000002,
   c_ip = 0x00000004,
   cs_username = 0x00000008,
   s_sitename = 0x00000010,
   s_computername = 0x00000020,
   s_ip = 0x00000040,
   s_port = 0x00000080,
   cs_method = 0x00000100,
   cs_uri_stem = 0x00000200,
   cs_uri_query = 0x00000400,
   sc_status = 0x00000800,
   sc_win32_status = 0x00001000,
   sc_bytes = 0x00002000,
   cs_bytes = 0x00004000,
   time_taken = 0x00008000,
   cs_version = 0x00010000,
   cs_host = 0x00020000,
   cs_user_agent = 0x00040000,
   cs_cookie = 0x00080000,
   cs_referer = 0x00100000,
   sc_substatus = 0x00200000,
};

public class CW3CLogHandler : ILtmsLogHandler
{
   bool m_enable;
   int m_fields;
   bool m_localtime;
   DateTime m_dtfile;
   string m_software;
   string m_folder;
   string m_prefix;
   StreamWriter m_sw;

   public CW3CLogHandler(string prefix, string software, bool enable, string folder, int fields, bool localtime)
   {
      m_prefix = prefix;
      m_software = software;
      m_enable = enable;
      m_folder = folder;
      m_fields = fields;
      m_localtime = localtime;
   }
   ~CW3CLogHandler()
   {

   }

   void WriteString(string str)
   {
      m_sw.Write(str);
   }

   DateTime GetTime(double dTime)
   {
      DateTime dt = DateTime.FromOADate(dTime);

      if (m_localtime)
         return dt.ToLocalTime();

      return dt;
   }

   string GetLogPath(double timestamp)
   {
      DateTime dt = GetTime(timestamp);
      string strFullPath;

      try
      {
         PathResolver resolver = new PathResolver();
         strFullPath = resolver.Resolve(m_folder);
      }
      catch
      {
         return "";
      }

      strFullPath += "\\";
      strFullPath += m_prefix;

      if (!m_localtime)
      {
         strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + "UTC.log";
      }
      else
      {
         strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + ".log";
      }

      return strFullPath;
   }

   public void LoadConfig(Server server)
   {
      bool enable = m_enable;
      bool localtime = m_localtime;
      string folder = m_folder;
      int fields = m_fields;
      bool dirty = false;

      ApplicationProperties AppProps = server.GetApplicationProperties();

      try
      {
         enable = AppProps.GetBoolean("LogEnable");
      }
      catch
      {
         AppProps.AddBoolean("LogEnable", enable);
         dirty = true;
      }

      try
      {
         localtime = AppProps.GetBoolean("LogLocalTime");
      }
      catch
      {
         AppProps.AddBoolean("LogLocalTime", localtime);
         dirty = true;
      }

      try
      {
         folder = AppProps.GetString("LogFolder");
      }
      catch
      {
         AppProps.AddString("LogFolder", folder);
         dirty = true;
      }

      try
      {
         fields = AppProps.GetInteger("LogFields");
      }
      catch
      {
         AppProps.AddInteger("LogFields", fields);
         dirty = true;
      }

      if (dirty)
         server.SetApplicationProperties(AppProps);

      // if anything has changed then we need to close the current file
      if (!enable && (string.Compare(m_folder, folder, true) != 0) || fields != m_fields || m_localtime != localtime)
      {
         if (m_sw != null)
            m_sw.Close();
      }

      m_folder = folder;
      m_localtime = localtime;
      m_enable = enable;
      m_fields = fields;
   }

   bool CreateLog(double timestamp)
   {
      if (m_sw != null)
         m_sw.Close();

      if (!m_enable)
         return false;

      try
      {
         m_sw = File.CreateText(GetLogPath(timestamp));
      }
      catch
      {
         return false;
      }

      m_dtfile = GetTime(timestamp);

      string s;
      s = "#Software: " + m_software + "\r\n";
      WriteString(s);
      WriteString("#Version: 1.0\r\n");
      DateTime dt = GetTime(timestamp);
      s = "#Date: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";
      WriteString(s);

      s = "#Fields:";

      if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date)
      {
         s += " date";
      }
      if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time)
      {
         s += " time";
      }
      if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename)
      {
         s += " s-sitename";
      }
      if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername)
      {
         s += " s-computername";
      }
      if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip)
      {
         s += " s-ip";
      }
      if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method)
      {
         s += " cs-method";
      }
      if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem)
      {
         s += " cs-uri-stem";
      }
      if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query)
      {
         s += " cs-uri-query";
      }
      if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port)
      {
         s += " s-port";
      }
      if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username)
      {
         s += " cs-username";
      }
      if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip)
      {
         s += " c-ip";
      }
      if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version)
      {
         s += " cs-version";
      }
      if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent)
      {
         s += " cs(User-Agent)";
      }
      if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie)
      {
         s += " cs(Cookie)";
      }
      if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer)
      {
         s += " cs(Referer)";
      }
      if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host)
      {
         s += " cs-host";
      }
      if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status)
      {
         s += " sc-status";
      }
      if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus)
      {
         s += " sc-substatus";
      }
      if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status)
      {
         s += " sc-win32-status";
      }
      if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes)
      {
         s += " sc-bytes";
      }
      if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes)
      {
         s += " cs-bytes";
      }
      if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken)
      {
         s += " time-taken";
      }
      s += "\r\n";
      WriteString(s);

      m_sw.Flush();

      return true;
   }

   string escape(string s)
   {
      string t = "";
      foreach (char c in s)
      {
         if (!char.IsControl(c) && !char.IsWhiteSpace(c))
            t += c;
         else
            t += "+";
      }

      return t;
   }

   public void InitializeLog(double timestamp)
   {
      CreateLog(timestamp);
   }

   public void TerminateLog()
   {
      if (m_sw != null)
         m_sw.Close();
   }

   public void LogInformation(ILtmsLogInformation info)
   {
      string s = "";

      if (!m_enable)
         return;

      // check if we need to roll to a new file
      {
         DateTime dt = GetTime(info.TimeStamp);

         if (m_sw == null || dt.Day != m_dtfile.Day || dt.Month != m_dtfile.Month || dt.Year != m_dtfile.Year)
         {
            if (!CreateLog(info.TimeStamp))
               return;
         }
      }
      if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date)
      {
         DateTime dt = GetTime(info.TimeStamp);

         if (s.Length > 0)
            s += " ";
         s += dt.ToString("yyyy-MM-dd");
      }
      if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time)
      {
         DateTime dt = GetTime(info.TimeStamp);

         if (s.Length > 0)
            s += " ";
         s += dt.ToString("HH:mm:ss");
      }
      if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename)
      {
         string str = info.SiteName;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);

      }
      if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername)
      {
         string str = info.ComputerName;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip)
      {
         string str = info.ServerIP;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method)
      {
         string str = info.Method;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem)
      {
         string str = info.URIStem;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query)
      {
         string str = info.URIQuery;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port)
      {
         int n = info.ServerPort;
         if (s.Length > 0)
            s += " ";
         s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username)
      {
         string str = info.UserName;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip)
      {
         string str = info.ClientIP;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version)
      {
         string str = info.ProtocolVersion;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent)
      {
         string str = info.UserAgent;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie)
      {
         string str = info.Cookie;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer)
      {
         string str = info.Referrer;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host)
      {
         string str = info.Host;
         if (s.Length > 0)
            s += " ";
         if (str.Length == 0)
            s += "-";
         else
            s += escape(str);
      }
      if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status)
      {
         int n = info.Status;
         if (s.Length > 0)
            s += " ";
         s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus)
      {
         int n = info.ProtocolSubStatus;
         if (s.Length > 0)
            s += " ";
         s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status)
      {
         int n = info.Win32Status;
         if (s.Length > 0)
            s += " ";
         s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes)
      {
         int n = info.BytesSent;
         if (s.Length > 0)
            s += " ";
         if (n < 0)
            s += "-";
         else
            s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes)
      {
         int n = info.BytesReceived;
         if (s.Length > 0)
            s += " ";
         if (n < 0)
            s += "-";
         else
            s += n.ToString();
      }
      if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken)
      {
         int n = info.TimeTaken;
         if (s.Length > 0)
            s += " ";
         if (n < 0)
            s += "-";
         else
            s += n.ToString();
      }

      s += "\r\n";
      WriteString(s);
      m_sw.Flush();
   }
}


public Server _server = null;
public bool _result = false;

public void W3CLogHandlerExample()
{
   try
   {
      State enumState;
      CW3CLogHandler _loghandler;

      // create an instance of the server object
      _server = new Leadtools.MediaStreaming.Server();

      // create the log handler
      _loghandler = new CW3CLogHandler("ltmsServer_", "LEADTOOLS Media Streaming Server", true, "ltmsLogFolder", 0, false);

      // set the log handler
      _server.ILogHandler = _loghandler;

      {
         // for demonstration, compare the interface we just set
         ILtmsLogHandler ihandler = null;
         ihandler = _server.ILogHandler;

         if (ihandler != (ILtmsLogHandler)_loghandler)
         {
            _result = false;
            return;
         }
      }

      // load the config file located in the config subfolder under the executable folder
      // or comment this section out to run with the server�s default settings
      _server.ImportConfigFile("ltmsConfigFolder\\LeadtoolsMediaStreamingServer.xml");

      // start the server
      _server.Start();

      // confirm the running state for demonstration purposes
      enumState = _server.State;

      if (enumState == State.Started)
      {
         // display a message that the server is running and wait for OK
         MessageBox.Show("The server has started. Press OK to stop.", "LEADTOOLS Media Streaming Examples", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }

      // stop the server
      _server.Stop();

      // remove the log handler
      _server.ILogHandler = null;

      _result = true;
   }
   catch (Exception)
   {
      _result = false;
   }
}
Requirements

Target Platforms

See Also

Reference

ILtmsLogInformation Interface
ILtmsLogInformation Members

Error processing SSI file
Leadtools.MediaStreaming requires a Multimedia or Multimedia Suite license and unlock key. For more information, refer to: LEADTOOLS Toolkit Features