Moving micasa 1.5 trunk to Novell forge.
This commit is contained in:
102
c_micasad/communication/WinIPCChannel.cs
Normal file
102
c_micasad/communication/WinIPCChannel.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
using sscs.communication.win.NamedPipes;
|
||||
using sscs.common;
|
||||
using sscs.verbs;
|
||||
using sscs.constants;
|
||||
|
||||
|
||||
namespace sscs.communication
|
||||
{
|
||||
|
||||
class WinIPCChannel : IPCChannel
|
||||
{
|
||||
// Data
|
||||
private ServerPipeConnection m_serverPipeConnection;
|
||||
private WinUserIdentifier userId = null;
|
||||
|
||||
//Methods
|
||||
|
||||
public WinIPCChannel(ServerPipeConnection serverPipeConnection)
|
||||
{
|
||||
m_serverPipeConnection = serverPipeConnection;
|
||||
}
|
||||
|
||||
override internal UserIdentifier GetIPCChannelUserId()
|
||||
{
|
||||
CSSSLogger.DbgLog("In WinIPCChannel::GetIPCChannelUserId");
|
||||
return userId;
|
||||
}
|
||||
|
||||
private WinIPCChannel()
|
||||
{
|
||||
CSSSLogger.DbgLog("WinIPCChannel constructor must be called with a serverPipe");
|
||||
|
||||
}
|
||||
~WinIPCChannel()
|
||||
{
|
||||
// Console.WriteLine("WinIPCChannel::~~WinIPCChannel");
|
||||
}
|
||||
|
||||
override internal byte[] Read()
|
||||
{
|
||||
int localUserIDLow = 0;
|
||||
int localUserIDHigh = 0;
|
||||
string sSIDString = "";
|
||||
|
||||
byte[] incoming = null;
|
||||
try
|
||||
{
|
||||
|
||||
incoming = m_serverPipeConnection.ReadBytes();
|
||||
|
||||
// get local Userid and SID
|
||||
m_serverPipeConnection.GetLocalUserID(ref localUserIDLow, ref localUserIDHigh, ref sSIDString);
|
||||
|
||||
if (localUserIDLow != 0 || localUserIDHigh !=0)
|
||||
{
|
||||
userId = new WinUserIdentifier(localUserIDLow, localUserIDHigh, sSIDString);
|
||||
}
|
||||
|
||||
return incoming;
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
return null;
|
||||
//CSSSLogger.DbgLog("Exception in reading data from client" + e.ToString());
|
||||
//throw new CommunicationException(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
override internal int Read(byte[] buf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
override internal int Write(byte[] buf)
|
||||
{
|
||||
|
||||
int bytesSent = 0;
|
||||
try
|
||||
{
|
||||
m_serverPipeConnection.WriteBytes(buf);
|
||||
bytesSent = buf.Length;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
CSSSLogger.DbgLog("WinIPCChannel::Write - Bytes sent is {0}" +bytesSent);
|
||||
return bytesSent;
|
||||
|
||||
}
|
||||
override internal void Close()
|
||||
{
|
||||
CSSSLogger.DbgLog("WinIPCChannel Closed");
|
||||
//clientSocket.Close();
|
||||
m_serverPipeConnection.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user