4 namespace System.Net.Sockets
\r
7 /// Summary description for GHStreamSocket.
\r
9 internal class GHStreamSocketSSL : GHSocket
\r
11 java.net.Socket jSocket;
\r
13 public GHStreamSocketSSL(java.net.Socket sslSocket)
\r
15 jSocket = sslSocket;
\r
18 public override int GetHashCode ()
\r
20 if (jSocket == null)
\r
23 return jSocket.ToString().GetHashCode();
\r
26 public int Available_internal(out int error)
\r
31 if (jSocket == null || !jSocket.isConnected())
\r
38 r = jSocket.getInputStream().available();
\r
42 error = 10054; //WSAECONNRESET (Connection reset by peer)
\r
45 Console.WriteLine("Caught exception during Available_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
52 public void Blocking_internal(bool block, out int error)
\r
54 //SVETA: see in the non-blocking io
\r
58 throw new NotSupportedException();
\r
61 public EndPoint LocalEndPoint_internal(out int error)
\r
64 java.net.InetSocketAddress localAddr = null;
\r
68 localAddr = (java.net.InetSocketAddress)jSocket.getLocalSocketAddress();
\r
74 Console.WriteLine("Caught exception during LocalEndPoint_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
78 if (localAddr == null || localAddr.getAddress() == null || localAddr.getPort() < 0)
\r
83 IPHostEntry lipa = Dns.Resolve(localAddr.getHostName());
\r
84 IPEndPoint ret = new IPEndPoint(lipa.AddressList[0], localAddr.getPort());
\r
88 public EndPoint RemoteEndPoint_internal(out int error)
\r
91 java.net.InetSocketAddress remoteAddr = null;
\r
93 if (jSocket == null || !jSocket.isBound())
\r
100 remoteAddr = (java.net.InetSocketAddress)jSocket.getRemoteSocketAddress();
\r
102 catch (Exception e)
\r
106 Console.WriteLine("Caught exception during RemoteEndPoint_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
110 if (remoteAddr == null || remoteAddr.getAddress() == null || remoteAddr.getPort() <= 0)
\r
112 error = 10057; //WSAENOTCONN (Socket is not connected)
\r
116 IPHostEntry lipa = Dns.Resolve(remoteAddr.getHostName());
\r
117 IPEndPoint ret = new IPEndPoint(lipa.AddressList[0], remoteAddr.getPort());
\r
121 public GHSocket Accept_internal(out int error)
\r
123 error = 10022; //WSAEINVAL (Invalid argument)
\r
127 public void Bind_internal(EndPoint sa, out int error)
\r
130 IPEndPoint addr = sa as IPEndPoint;
\r
133 error = 10044; //WSAESOCKTNOSUPPORT (Socket type not supported)
\r
137 if (jSocket == null || jSocket.isBound() || jSocket.isConnected())
\r
139 error = 10022; //WSAEINVAL (Invalid argument)
\r
145 jSocket.bind(new java.net.InetSocketAddress(java.net.InetAddress.getByName(addr.Address.ToString()),
\r
148 catch (Exception e)
\r
150 error = 10048; //WSAEADDRINUSE (Address already in use)
\r
152 Console.WriteLine("Caught exception during Bind_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
157 public void Close_internal(out int error)
\r
163 if (jSocket != null)
\r
169 catch (Exception e)
\r
171 error = 10022; //WSAEINVAL (Invalid argument)
\r
173 Console.WriteLine("Caught exception during Close_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
178 public void Connect_internal(EndPoint sa, out int error)
\r
182 IPEndPoint addr = sa as IPEndPoint;
\r
185 error = 10044; //WSAESOCKTNOSUPPORT (Socket type not supported)
\r
189 if (jSocket == null)
\r
191 error = 10022; //WSAEINVAL (Invalid argument)
\r
195 if (jSocket.isConnected())
\r
197 error = 10056; //WSAEISCONN (Socket is already connected)
\r
203 jSocket.connect(new java.net.InetSocketAddress(
\r
204 java.net.InetAddress.getByName(addr.Address.ToString()),
\r
207 catch (Exception e)
\r
209 error = 10061; //WSAECONNREFUSED (Connection refused)
\r
211 Console.WriteLine("Caught exception during Connect_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
216 public void Listen_internal(int backlog, out int error)
\r
218 error = 10022; //WSAEINVAL (Invalid argument)
\r
222 public bool Poll_internal (SelectMode mode, int timeout, Socket source, out int error)
\r
225 throw new NotImplementedException();
\r
228 public int Receive_internal(byte[] buffer, int offset, int count, SocketFlags flags,
\r
234 if (jSocket == null || !jSocket.isConnected())
\r
236 error = 10057; //WSAENOTCONN (Socket is not connected)
\r
242 ret = jSocket.getInputStream().read(vmw.common.TypeUtils.ToSByteArray(buffer), offset, count);
\r
243 if (ret < 0) ret = 0;
\r
245 catch (Exception e)
\r
247 error = 10054; //WSAECONNRESET (Connection reset by peer)
\r
250 Console.WriteLine("Caught exception during Receive_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
257 public int RecvFrom_internal(byte[] buffer, int offset, int count, SocketFlags flags,
\r
258 ref SocketAddress sockaddr, out int error)
\r
260 return Receive_internal(buffer, offset, count, flags, out error);
\r
263 public int Send_internal(byte[] buf, int offset, int count, SocketFlags flags,
\r
269 if (jSocket == null || !jSocket.isConnected())
\r
271 error = 10057; //WSAENOTCONN (Socket is not connected)
\r
277 jSocket.getOutputStream().write(vmw.common.TypeUtils.ToSByteArray(buf), offset, count);
\r
280 catch (Exception e)
\r
282 error = 10054; //WSAECONNRESET (Connection reset by peer)
\r
285 Console.WriteLine("Caught exception during Send_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
292 public int SendTo_internal(byte[] buffer, int offset, int count,
\r
293 SocketFlags flags, SocketAddress sa, out int error)
\r
295 return Send_internal(buffer, offset, count, flags, out error);
\r
298 public void SetSocketOption_internal (SocketOptionLevel level,
\r
299 SocketOptionName name, object obj_val,
\r
300 byte [] byte_val, int int_val, out int error)
\r
304 if (byte_val != null)
\r
307 throw new NotImplementedException();
\r
310 if (jSocket == null)
\r
312 error = 10022; //WSAEINVAL (Invalid argument)
\r
318 case SocketOptionLevel.IPv6:
\r
319 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
321 case SocketOptionLevel.IP:
\r
322 if (name != SocketOptionName.NoDelay)
\r
324 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
328 case SocketOptionLevel.Udp:
\r
329 if (name == SocketOptionName.NoDelay)
\r
331 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
335 error = 10022; //WSAEINVAL (Invalid argument)
\r
338 case SocketOptionLevel.Tcp:
\r
339 if (name != SocketOptionName.NoDelay)
\r
341 error = 10022; //WSAEINVAL (Invalid argument)
\r
353 case SocketOptionName.DontLinger:
\r
354 jSocket.setSoLinger(false, 0);
\r
356 case SocketOptionName.Linger:
\r
357 LingerOption lval = obj_val as LingerOption;
\r
360 jSocket.setSoLinger(lval.Enabled, lval.LingerTime);
\r
364 error = 10022; //WSAEINVAL (Invalid argument)
\r
367 case SocketOptionName.KeepAlive:
\r
368 if (obj_val != null)
\r
370 bval = ((int)obj_val == 0)?false:true;
\r
374 bval = (int_val == 0)?false:true;
\r
376 jSocket.setKeepAlive(bval);
\r
378 case SocketOptionName.NoDelay:
\r
379 if (obj_val != null)
\r
381 bval = ((int)obj_val == 0)?false:true;
\r
385 bval = (int_val == 0)?false:true;
\r
387 jSocket.setTcpNoDelay(bval);
\r
389 case SocketOptionName.ReceiveBuffer:
\r
391 if (obj_val != null)
\r
393 ival = (int) obj_val;
\r
395 jSocket.setReceiveBufferSize(ival);
\r
397 case SocketOptionName.ReceiveTimeout:
\r
399 if (obj_val != null)
\r
401 ival = (int) obj_val;
\r
403 jSocket.setSoTimeout(ival);
\r
405 case SocketOptionName.ReuseAddress:
\r
406 if (obj_val != null)
\r
408 bval = ((int)obj_val == 0)?false:true;
\r
412 bval = (int_val == 0)?false:true;
\r
414 jSocket.setReuseAddress(bval);
\r
416 case SocketOptionName.SendBuffer:
\r
418 if (obj_val != null)
\r
420 ival = (int) obj_val;
\r
422 jSocket.setSendBufferSize(ival);
\r
424 case SocketOptionName.OutOfBandInline:
\r
425 if (obj_val != null)
\r
427 bval = ((int)obj_val == 0)?false:true;
\r
431 bval = (int_val == 0)?false:true;
\r
433 jSocket.setOOBInline(bval);
\r
436 error = 10022; //WSAEINVAL (Invalid argument)
\r
440 catch (Exception e)
\r
442 error = 10022; //WSAEINVAL (Invalid argument)
\r
447 public void GetSocketOption_obj_internal(SocketOptionLevel level, SocketOptionName name,
\r
448 out object obj_val, out int error)
\r
453 if (jSocket == null)
\r
455 error = 10022; //WSAEINVAL (Invalid argument)
\r
461 case SocketOptionLevel.IPv6:
\r
462 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
464 case SocketOptionLevel.IP:
\r
465 if (name != SocketOptionName.NoDelay)
\r
467 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
471 case SocketOptionLevel.Udp:
\r
472 if (name == SocketOptionName.NoDelay)
\r
474 error = 10042; //WSAENOPROTOOPT (Bad protocol option)
\r
478 error = 10022; //WSAEINVAL (Invalid argument)
\r
481 case SocketOptionLevel.Tcp:
\r
482 if (name != SocketOptionName.NoDelay)
\r
484 error = 10022; //WSAEINVAL (Invalid argument)
\r
496 case SocketOptionName.DontLinger:
\r
497 ival = jSocket.getSoLinger();
\r
507 case SocketOptionName.Linger:
\r
508 ival = jSocket.getSoLinger();
\r
513 LingerOption ret = new LingerOption((ival != 0), ival);
\r
516 case SocketOptionName.KeepAlive:
\r
517 bval = jSocket.getKeepAlive();
\r
518 obj_val = ((bval)?1:0);
\r
520 case SocketOptionName.NoDelay:
\r
521 bval = jSocket.getTcpNoDelay();
\r
522 obj_val = ((bval)?1:0);
\r
524 case SocketOptionName.ReceiveBuffer:
\r
525 ival = jSocket.getReceiveBufferSize();
\r
528 case SocketOptionName.ReceiveTimeout:
\r
529 ival = jSocket.getSoTimeout();
\r
532 case SocketOptionName.ReuseAddress:
\r
533 bval = jSocket.getReuseAddress();
\r
534 obj_val = ((bval)?1:0);
\r
536 case SocketOptionName.SendBuffer:
\r
537 ival = jSocket.getSendBufferSize();
\r
540 case SocketOptionName.OutOfBandInline:
\r
541 bval = jSocket.getOOBInline();
\r
542 obj_val = ((bval)?1:0);
\r
545 error = 10022; //WSAEINVAL (Invalid argument)
\r
549 catch (Exception e)
\r
551 error = 10022; //WSAEINVAL (Invalid argument)
\r
556 public void GetSocketOption_arr_internal(SocketOptionLevel level, SocketOptionName name,
\r
557 ref byte[] byte_val, out int error)
\r
560 throw new NotImplementedException();
\r
563 public int WSAIoctl (int ioctl_code, byte [] input, byte [] output, out int error)
\r
566 throw new NotImplementedException();
\r
569 public void Shutdown_internal(SocketShutdown how, out int error)
\r
573 if (jSocket == null || !jSocket.isConnected())
\r
575 error = 10057; //WSAENOTCONN (Socket is not connected)
\r
583 case SocketShutdown.Receive:
\r
584 jSocket.shutdownInput();
\r
586 case SocketShutdown.Send:
\r
587 jSocket.shutdownOutput();
\r
589 case SocketShutdown.Both:
\r
590 jSocket.shutdownInput();
\r
591 jSocket.shutdownOutput();
\r
595 catch (Exception e)
\r
597 error = 10022; //WSAEINVAL (Invalid argument)
\r
599 Console.WriteLine("Caught exception during Shutdown_internal - {0}: {1}\n{2}", e.GetType(), e.Message, e.StackTrace);
\r
604 public void RegisterSelector(java.nio.channels.Selector selector, int mode, Socket source, out int error)
\r
606 throw new InvalidOperationException();
\r
609 public bool CheckConnectionFinished()
\r
611 throw new InvalidOperationException();
\r
614 public GHSocket ChangeToSSL(EndPoint remote_end)
\r