using System; using System.Net; using System.Net.Sockets; #if W32 using sscs.communication.win.NamedPipes; #endif using sscs.common; namespace sscs.communication { abstract class IPCChannel { /* This must check for the platform and return an * appropriate IPCChannel. */ #if LINUX internal static IPCChannel Create(Socket socket) { if(( (int)Environment.OSVersion.Platform) == 128) return (new UnixIPCChannel(socket) ); else return null; } #endif #if W32 internal static IPCChannel Create(ServerPipeConnection serverPipe) { return (new WinIPCChannel(serverPipe)); } #endif abstract internal UserIdentifier GetIPCChannelUserId(); abstract internal int Read(byte[] buf); abstract internal byte[] Read(); abstract internal int Write(byte[] buf); abstract internal void Close(); } }