/*
Media File XStream, Network file stream server supporting XBMSP
Copyright (C) 2004 j3g
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 2 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, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
This project can be found on SourceForge.
http://sourceforge.net/projects/mfxstream
*/
using System;
using System.ComponentModel;
using System.Configuration.Install;
using System.Collections;
using System.ServiceProcess;
namespace MFXStream{
public class CServiceHandler
{
private String m_strServicePath;
private String m_strServiceName;
private Boolean m_blnIsStarted;
public Boolean IsStarted { get { CheckStatus(); return(m_blnIsStarted); } }
private Boolean m_blnIsInstalled;
public Boolean IsInstalled { get { CheckStatus(); return(m_blnIsInstalled); } }
public CServiceHandler(String ServicePath, String ServiceName)
{
this.m_blnIsStarted = false;
this.m_blnIsInstalled = false;
this.m_strServiceName = ServiceName;
this.m_strServicePath = ServicePath;
}
private void CheckStatus()
{
try
{
this.m_blnIsInstalled = false;
this.m_blnIsStarted = false;
ServiceController sc = new ServiceController(this.m_strServiceName);
if (sc.ServiceName.Equals(this.m_strServiceName))
this.m_blnIsInstalled = true;
if (ServiceControllerStatus.Running == sc.Status)
this.m_blnIsStarted = true;
}
catch {}
// {
// CLogFile.Log(ex.Message, "CServiceHandler", LogLevel.DebugLevel2);
// }
}
public Boolean Start()
{
try
{
ServiceController sc = new ServiceController(this.m_strServiceName);
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 30));
if (ServiceControllerStatus.Running == sc.Status)
return (true);
else
return (false);
}
catch
{
return (false);
}
}
public void CreateFileAndFolderCount()
{
try
{
ServiceController sc = new ServiceController(this.m_strServiceName);
sc.ExecuteCommand(128);
}
catch {}
}
public void StartListen()
{
try
{
ServiceController sc = new ServiceController(this.m_strServiceName);
sc.ExecuteCommand(129);
}
catch {}
}
public Boolean Stop()
{
try
{
ServiceController sc = new ServiceController(this.m_strServiceName);
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 30));
if (ServiceControllerStatus.Stopped == sc.Status)
return (true);
else
return (false);
}
catch
{
return (false);
}
}
public bool Restart()
{
try
{
ServiceController sc = new ServiceController(this.m_strServiceName);
sc.ExecuteCommand(130);
return(true);
}
catch
{
return(false);
}
}
public void Install()
{
try
{
AssemblyInstaller ai = new AssemblyInstaller();
System.Collections.IDictionary savedState = new Hashtable();
ai.Path = this.m_strServicePath;
ai.UseNewContext = true;
ai.Install(savedState);
ai.Commit(savedState);
}
catch {}
}
public void UnInstall()
{
try
{
AssemblyInstaller ai = new AssemblyInstaller();
System.Collections.IDictionary savedState = new Hashtable();
ai.Path = this.m_strServicePath;
ai.UseNewContext = true;
ai.Uninstall(savedState);
ai.Commit(savedState);
}
catch {}
}
public string Start(bool ThrowResult)
{
string strMsg = "";
if (!this.IsInstalled)
{
strMsg = "MFXStream service is not installed";
}
else
{
if (this.IsStarted)
{
strMsg = "MFXStream service is already started";
}
else
{
if(this.Start())
strMsg = "MFXStream service has been started";
else
strMsg = "MFXStream service could not be started";
}
}
if (ThrowResult)
throw(new Exception(strMsg));
else
return(strMsg);
}
public string Stop(bool ThrowResult)
{
string strMsg = "";
if (!this.IsInstalled)
{
strMsg = "MFXStream service is not installed";
}
else
{
if (!this.IsStarted)
{
strMsg = "MFXStream service is not started";
}
else
{
if(this.Stop())
strMsg = "MFXStream service has been stoped";
else
strMsg = "MFXStream service could not be stoped";
}
}
if (ThrowResult)
throw(new Exception(strMsg));
else
return(strMsg);
}
public string Restart(bool ThrowResult)
{
string strMsg = "";
if (!this.IsInstalled)
{
strMsg = "MFXStream service is not installed";
}
else
{
if (!this.IsStarted)
{
strMsg = "MFXStream service is not started";
}
else
{
if(this.Stop())
{
if(this.Start())
{
strMsg = "MFXStream service has been restarted";
}
else
{
strMsg = "MFXStream service has been stoped, but could not be started";
}
}
else
strMsg = "MFXStream service could not be restarted";
}
}
if (ThrowResult)
throw(new Exception(strMsg));
else
return(strMsg);
}
public string Install(bool ThrowResult)
{
string strMsg = "";
if (this.IsInstalled)
{
strMsg = "MFXStream service is already installed";
}
else
{
this.Install();
if(this.IsInstalled)
strMsg = "MFXStream service has been installed";
else
strMsg = "MFXStream service could not be installed";
}
if (ThrowResult)
throw(new Exception(strMsg));
else
return(strMsg);
}
public string UnInstall(bool ThrowResult)
{
string strMsg = "";
if (!this.IsInstalled)
{
strMsg = "MFXStream service is not installed";
}
else
{
this.UnInstall();
if(!this.IsInstalled)
strMsg = "MFXStream service has been removed";
else
strMsg = "MFXStream service could not be removed";
}
if (ThrowResult)
throw(new Exception(strMsg));
else
return(strMsg);
}
}
}
|