GHStreamSocketSSL.jvm.cs :  » 2.6.4-mono-.net-core » System.Net » System » Net » Sockets » C# / CSharp Open Source

Home
C# / CSharp Open Source
1.2.6.4 mono .net core
2.2.6.4 mono core
3.Aspect Oriented Frameworks
4.Bloggers
5.Build Systems
6.Business Application
7.Charting Reporting Tools
8.Chat Servers
9.Code Coverage Tools
10.Content Management Systems CMS
11.CRM ERP
12.Database
13.Development
14.Email
15.Forum
16.Game
17.GIS
18.GUI
19.IDEs
20.Installers Generators
21.Inversion of Control Dependency Injection
22.Issue Tracking
23.Logging Tools
24.Message
25.Mobile
26.Network Clients
27.Network Servers
28.Office
29.PDF
30.Persistence Frameworks
31.Portals
32.Profilers
33.Project Management
34.RSS RDF
35.Rule Engines
36.Script
37.Search Engines
38.Sound Audio
39.Source Control
40.SQL Clients
41.Template Engines
42.Testing
43.UML
44.Web Frameworks
45.Web Service
46.Web Testing
47.Wiki Engines
48.Windows Presentation Foundation
49.Workflows
50.XML Parsers
C# / C Sharp
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source » 2.6.4 mono .net core » System.Net 
System.Net » System » Net » Sockets » GHStreamSocketSSL.jvm.cs
using System;
using System.Net;

namespace System.Net.Sockets{
  /// <summary>
  /// Summary description for GHStreamSocket.
  /// </summary>
  internal class GHStreamSocketSSL : GHSocket
  {
    java.net.Socket jSocket;

    public GHStreamSocketSSL(java.net.Socket sslSocket)
    {
      jSocket = sslSocket;
    }

    public override int GetHashCode ()
    {
      if (jSocket == null)
        return -1;

      return jSocket.ToString().GetHashCode();
    }

    public int Available_internal(out int error)
    {
      error = 0;
      int r = 0;

      if (jSocket == null || !jSocket.isConnected())
      {
        return r;
      }

      try
      {
        r = jSocket.getInputStream().available();
      }
      catch (Exception e)
      {
        error = 10054; //WSAECONNRESET (Connection reset by peer)
        r = 0;
#if DEBUG
        Console.WriteLine("Caught exception during Available_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }

      return r;
    }

    public void Blocking_internal(bool block, out int error)
    {
      //SVETA: see in the non-blocking io
      error = 0;

      if (block == false)
        throw new NotSupportedException();
    }

    public EndPoint LocalEndPoint_internal(out int error)
    {
      error = 0;
      java.net.InetSocketAddress localAddr = null;

      try
      {
        localAddr = (java.net.InetSocketAddress)jSocket.getLocalSocketAddress();
      }
      catch (Exception e)
      {
        localAddr = null;
#if DEBUG
        Console.WriteLine("Caught exception during LocalEndPoint_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }

      if (localAddr == null || localAddr.getAddress() == null || localAddr.getPort() < 0)
      {
                return null;
      }

      IPHostEntry lipa = Dns.Resolve(localAddr.getHostName());
      IPEndPoint ret = new IPEndPoint(lipa.AddressList[0], localAddr.getPort());
      return ret;
    }

    public EndPoint RemoteEndPoint_internal(out int error)
    {
      error = 0;
      java.net.InetSocketAddress remoteAddr = null;

      if (jSocket == null || !jSocket.isBound())
      {
        return null;
      }

      try
      {
        remoteAddr = (java.net.InetSocketAddress)jSocket.getRemoteSocketAddress();
      }
      catch (Exception e)
      {
        remoteAddr = null;
#if DEBUG
        Console.WriteLine("Caught exception during RemoteEndPoint_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }

      if (remoteAddr == null || remoteAddr.getAddress() == null || remoteAddr.getPort() <= 0)
      {
        error = 10057; //WSAENOTCONN (Socket is not connected)
        return null;
      }

      IPHostEntry lipa = Dns.Resolve(remoteAddr.getHostName());
      IPEndPoint ret = new IPEndPoint(lipa.AddressList[0], remoteAddr.getPort());
      return ret;
    }

    public GHSocket Accept_internal(out int error)
    {
      error = 10022; //WSAEINVAL (Invalid argument)
      return null;
    }

    public void Bind_internal(EndPoint sa, out int error)
    {
      error = 0;
      IPEndPoint addr = sa as IPEndPoint;
      if (addr == null)
      {
        error = 10044; //WSAESOCKTNOSUPPORT (Socket type not supported)
        return;
      }

      if (jSocket == null || jSocket.isBound() || jSocket.isConnected())
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        return;
      }

      try
      {
        jSocket.bind(new java.net.InetSocketAddress(java.net.InetAddress.getByName(addr.Address.ToString()),
                                          addr.Port));
      }
      catch (Exception e)
      {
        error = 10048; //WSAEADDRINUSE (Address already in use)
#if DEBUG
        Console.WriteLine("Caught exception during Bind_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }
    }

    public void Close_internal(out int error)
    {
      error = 0;

      try
      {
        if (jSocket != null)
        {
          jSocket.close();
          jSocket = null;
        }
      }
      catch (Exception e)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
#if DEBUG
        Console.WriteLine("Caught exception during Close_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }
    }

    public void Connect_internal(EndPoint sa, out int error)
    {
      error = 0;

      IPEndPoint addr = sa as IPEndPoint;
      if (addr == null)
      {
        error = 10044; //WSAESOCKTNOSUPPORT (Socket type not supported)
        return;
      }

      if (jSocket == null)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        return;
      }

      if (jSocket.isConnected())
      {
        error = 10056; //WSAEISCONN (Socket is already connected)
        return;
      }

      try
      {
        jSocket.connect(new java.net.InetSocketAddress(
                  java.net.InetAddress.getByName(addr.Address.ToString()), 
                  addr.Port));
      }
      catch (Exception e)
      {        
        error = 10061; //WSAECONNREFUSED (Connection refused)
#if DEBUG
        Console.WriteLine("Caught exception during Connect_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }
    }

    public void Listen_internal(int backlog, out int error)
    {
      error = 10022; //WSAEINVAL (Invalid argument)
      return;
    }

    public bool Poll_internal (SelectMode mode, int timeout, Socket source, out int error)
    {
      error = 0;
      throw new NotImplementedException();
    }

    public int Receive_internal(byte[] buffer,  int offset,  int count, SocketFlags flags,
      out int error)
    {
      error = 0;
      int ret = 0;

      if (jSocket == null || !jSocket.isConnected())
      {
        error = 10057; //WSAENOTCONN (Socket is not connected)
        return ret;
      }

      try
      {
        ret = jSocket.getInputStream().read(vmw.common.TypeUtils.ToSByteArray(buffer), offset, count);
        if (ret < 0) ret = 0;
      }
      catch (Exception e)
      {
        error = 10054; //WSAECONNRESET (Connection reset by peer)
        ret = 0;
#if DEBUG
        Console.WriteLine("Caught exception during Receive_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }

      return ret;
    }

    public int RecvFrom_internal(byte[] buffer, int offset, int count,  SocketFlags flags,
      ref SocketAddress sockaddr, out int error)
    {
      return Receive_internal(buffer, offset, count, flags, out error);
    }

    public int Send_internal(byte[] buf, int offset, int count, SocketFlags flags,
      out int error)
    {
      error = 0;
      int ret = 0;

      if (jSocket == null || !jSocket.isConnected())
      {
        error = 10057; //WSAENOTCONN (Socket is not connected)
        return ret;
      }

      try
      {
        jSocket.getOutputStream().write(vmw.common.TypeUtils.ToSByteArray(buf), offset, count);
        ret = count;
      }
      catch (Exception e)
      {
        error = 10054; //WSAECONNRESET (Connection reset by peer)
        ret = 0;
#if DEBUG
        Console.WriteLine("Caught exception during Send_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }

      return ret;
    }

    public int SendTo_internal(byte[] buffer, int offset, int count,
      SocketFlags flags,  SocketAddress sa, out int error)
    {
      return Send_internal(buffer, offset, count, flags, out error);
    }

    public void SetSocketOption_internal (SocketOptionLevel level,
      SocketOptionName name, object obj_val,
      byte [] byte_val, int int_val, out int error)
    {
      error = 0;

      if (byte_val != null)
      {
        error = -1;
        throw new NotImplementedException();
      }

      if (jSocket == null)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        return;
      }

      switch (level)
      {
        case SocketOptionLevel.IPv6:
          error = 10042; //WSAENOPROTOOPT (Bad protocol option)
          return;
        case SocketOptionLevel.IP:
          if (name != SocketOptionName.NoDelay)
          {
            error = 10042; //WSAENOPROTOOPT (Bad protocol option)
            return;
          }
          break;
        case SocketOptionLevel.Udp:
          if (name == SocketOptionName.NoDelay)
          {
            error = 10042; //WSAENOPROTOOPT (Bad protocol option)
          }
          else
          {
            error = 10022; //WSAEINVAL (Invalid argument)
          }
          return;
        case SocketOptionLevel.Tcp:
          if (name != SocketOptionName.NoDelay)
          {
            error = 10022; //WSAEINVAL (Invalid argument)
            return;
          }
          break;
      }

      try
      {
        bool bval = false;
        int ival = 0;
        switch (name)
        {
          case SocketOptionName.DontLinger:
            jSocket.setSoLinger(false, 0);
            break;
          case SocketOptionName.Linger:
            LingerOption lval = obj_val as LingerOption;
            if (lval != null)
            {
              jSocket.setSoLinger(lval.Enabled, lval.LingerTime);
            }
            else
            {
              error = 10022; //WSAEINVAL (Invalid argument)
            }
            break;
          case SocketOptionName.KeepAlive:
            if (obj_val != null)
            {
              bval = ((int)obj_val == 0)?false:true;
            }
            else
            {
              bval = (int_val == 0)?false:true;
            }
            jSocket.setKeepAlive(bval);
            break;
          case SocketOptionName.NoDelay:
            if (obj_val != null)
            {
              bval = ((int)obj_val == 0)?false:true;
            }
            else
            {
              bval = (int_val == 0)?false:true;
            }
            jSocket.setTcpNoDelay(bval);
            break;
          case SocketOptionName.ReceiveBuffer:
            ival = int_val;
            if (obj_val != null)
            {
              ival = (int) obj_val;
            }
            jSocket.setReceiveBufferSize(ival);
            break;
          case SocketOptionName.ReceiveTimeout:
            ival = int_val;
            if (obj_val != null)
            {
              ival = (int) obj_val;
            }
            jSocket.setSoTimeout(ival);
            break;
          case SocketOptionName.ReuseAddress:
            if (obj_val != null)
            {
              bval = ((int)obj_val == 0)?false:true;
            }
            else
            {
              bval = (int_val == 0)?false:true;
            }
            jSocket.setReuseAddress(bval);
            break;
          case SocketOptionName.SendBuffer:
            ival = int_val;
            if (obj_val != null)
            {
              ival = (int) obj_val;
            }
            jSocket.setSendBufferSize(ival);
            break;
          case SocketOptionName.OutOfBandInline:
            if (obj_val != null)
            {
              bval = ((int)obj_val == 0)?false:true;
            }
            else
            {
              bval = (int_val == 0)?false:true;
            }
            jSocket.setOOBInline(bval);
            break;
          default:
            error = 10022; //WSAEINVAL (Invalid argument)
            break;
        }
      }
      catch (Exception e)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        obj_val = null;
      }
    }

    public void GetSocketOption_obj_internal(SocketOptionLevel level, SocketOptionName name, 
      out object obj_val, out int error)
    {
      obj_val = null;
      error = 0;

      if (jSocket == null)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        return;
      }

      switch (level)
      {
        case SocketOptionLevel.IPv6:
          error = 10042; //WSAENOPROTOOPT (Bad protocol option)
          return;
        case SocketOptionLevel.IP:
          if (name != SocketOptionName.NoDelay)
          {
            error = 10042; //WSAENOPROTOOPT (Bad protocol option)
            return;
          }
          break;
        case SocketOptionLevel.Udp:
          if (name == SocketOptionName.NoDelay)
          {
            error = 10042; //WSAENOPROTOOPT (Bad protocol option)
          }
          else
          {
            error = 10022; //WSAEINVAL (Invalid argument)
          }
          return;
        case SocketOptionLevel.Tcp:
          if (name != SocketOptionName.NoDelay)
          {
            error = 10022; //WSAEINVAL (Invalid argument)
            return;
          }
          break;
      }

      try
      {
        bool bval = false;
        int ival = 0;
        switch (name)
        {
          case SocketOptionName.DontLinger:
            ival = jSocket.getSoLinger();
            if (ival == -1)
            {
              obj_val = 1;
            }
            else
            {
              obj_val = 0;
            }
            break;
          case SocketOptionName.Linger:
            ival = jSocket.getSoLinger();
            if (ival == -1)
            {
              ival = 0;
            }
            LingerOption ret = new LingerOption((ival != 0), ival);
            obj_val = ret;
            break;
          case SocketOptionName.KeepAlive:
            bval = jSocket.getKeepAlive();
            obj_val = ((bval)?1:0);
            break;
          case SocketOptionName.NoDelay:
            bval = jSocket.getTcpNoDelay();
            obj_val = ((bval)?1:0);
            break;
          case SocketOptionName.ReceiveBuffer:
            ival = jSocket.getReceiveBufferSize();
            obj_val = ival;
            break;
          case SocketOptionName.ReceiveTimeout:
            ival = jSocket.getSoTimeout();
            obj_val = ival;
            break;
          case SocketOptionName.ReuseAddress:
            bval = jSocket.getReuseAddress();
            obj_val = ((bval)?1:0);
            break;
          case SocketOptionName.SendBuffer:
            ival = jSocket.getSendBufferSize();
            obj_val = ival;
            break;
          case SocketOptionName.OutOfBandInline:
            bval = jSocket.getOOBInline();
            obj_val = ((bval)?1:0);
            break;
          default:
            error = 10022; //WSAEINVAL (Invalid argument)
            break;
        }
      }
      catch (Exception e)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
        obj_val = null;
      }
    }
    
    public void GetSocketOption_arr_internal(SocketOptionLevel level, SocketOptionName name, 
      ref byte[] byte_val, out int error)
    {
      error = -1;
      throw new NotImplementedException();
    }

    public int WSAIoctl (int ioctl_code, byte [] input, byte [] output, out int error)
    {
      error = -1;
      throw new NotImplementedException();
    }

    public void Shutdown_internal(SocketShutdown how, out int error)
    {
      error = 0;

      if (jSocket == null || !jSocket.isConnected())
      {
        error = 10057; //WSAENOTCONN (Socket is not connected)
        return;
      }

      try
      {
        switch (how)
        {
          case SocketShutdown.Receive: 
                            jSocket.shutdownInput();
                            break;
          case SocketShutdown.Send: 
                    jSocket.shutdownOutput();
                    break;
          case SocketShutdown.Both: 
                    jSocket.shutdownInput();
                    jSocket.shutdownOutput();
                    break;
        }
      }
      catch (Exception e)
      {
        error = 10022; //WSAEINVAL (Invalid argument)
#if DEBUG
        Console.WriteLine("Caught exception during Shutdown_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
#endif
      }
    }

    public void RegisterSelector(java.nio.channels.Selector selector, int mode, Socket source, out int error)
    {
      throw new InvalidOperationException();
    }

    public bool CheckConnectionFinished()
    {
      throw new InvalidOperationException();
    }

    public GHSocket ChangeToSSL(EndPoint remote_end)
    {
      return this;
    }

  }
}
www.java2v.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.