public void HandleStreamEvent(NSStream stream, NSStreamEvent streamEvent) { switch (streamEvent) { case NSStreamEvent.ErrorOccurred: _streamSubject.OnError(new StreamException("Failed to read stream")); break; case NSStreamEvent.EndEncountered: _streamSubject.OnNext(new StreamData(null, -1)); _streamSubject.OnCompleted(); break; case NSStreamEvent.OpenCompleted: IsOpen = true; break; case NSStreamEvent.HasBytesAvailable: var buffer = new byte[MAX_READ_BYTES_SIZE]; var len = (stream as NSInputStream).Read(buffer, (nuint)MAX_READ_BYTES_SIZE); if (len > 0) { _streamSubject.OnNext(new StreamData(buffer, (int)len)); } break; } }
public void ConnectToPeer() { NSInputStream read; NSOutputStream write; int port; var listener = FindPort(out port); if (listener == null) { Assert.Inconclusive("Not possible to bind a port"); return; } var listenThread = new Thread(new ParameterizedThreadStart(DebugListener)); listenThread.Start(listener); NSStream.CreatePairWithPeerSocketSignature(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, new IPEndPoint(IPAddress.Loopback, port), out read, out write); read.Open(); write.Open(); var send = new byte[] { 1, 2, 3, 4, 5 }; Assert.AreEqual(5, write.Write(send)); var result = new byte [5]; Assert.AreEqual(5, read.Read(result, 5)); for (int i = 0; i < 5; i++) { Assert.AreEqual(send [i] * 10, result [i]); } listenThread.Join(); listener.Stop(); read.Close(); write.Close(); }
public override void HandleEvent(NSStream theStream, NSStreamEvent streamEvent) { switch (streamEvent) { case NSStreamEvent.None: Console.WriteLine("StreamEventNone"); break; case NSStreamEvent.HasBytesAvailable: Console.WriteLine("StreamEventHasBytesAvailable"); ReadData(); break; case NSStreamEvent.HasSpaceAvailable: Console.WriteLine("StreamEventHasSpaceAvailable"); // Do write operations to the device here break; case NSStreamEvent.OpenCompleted: Console.WriteLine("StreamEventOpenCompleted"); break; case NSStreamEvent.ErrorOccurred: Console.WriteLine("StreamEventErroOccurred"); break; case NSStreamEvent.EndEncountered: Console.WriteLine("StreamEventEndEncountered"); break; default: Console.WriteLine("Stream present but no event"); break; } }
public override void HandleEvent(NSStream theStream, NSStreamEvent streamEvent) { Console.WriteLine("Handle Event"); var time = DateTime.Now; switch (streamEvent) { case NSStreamEvent.OpenCompleted: Console.WriteLine("Open completed {0:T}", time); break; case NSStreamEvent.HasBytesAvailable: Console.WriteLine("Has Bytes Available {0:T}", time); this.readReceivedDataStream(); break; case NSStreamEvent.HasSpaceAvailable: Console.WriteLine("Has Space Available {0:T}", time); break; case NSStreamEvent.ErrorOccurred: Console.WriteLine("Error Occured {0:T}", time); break; case NSStreamEvent.EndEncountered: Console.WriteLine("End Encountered"); break; } }
public override void HandleEvent(NSStream theStream, NSStreamEvent streamEvent) { if (theStream == _stream._outputStream && streamEvent == NSStreamEvent.HasSpaceAvailable) { _stream._streamReady = true; _stream.Flush(); } }
public void HandleStreamEvent(NSStream stream, NSStreamEvent streamEvent) { switch (streamEvent) { case NSStreamEvent.ErrorOccurred: break; case NSStreamEvent.EndEncountered: break; case NSStreamEvent.OpenCompleted: IsOpen = true; break; case NSStreamEvent.HasSpaceAvailable: break; } }
public void BoundPairTest() { NSInputStream read; NSOutputStream write; NSStream.CreateBoundPair(out read, out write, 1024); read.Open(); write.Open(); var send = Encoding.ASCII.GetBytes("hello, world"); var n = send.Length; Assert.AreEqual(n, write.Write(send)); var result = new byte [n + 10]; Assert.AreEqual(n, read.Read(result, (uint)n)); for (int i = 0; i < n; i++) { Assert.AreEqual(send [i], result [i], "Item " + i); } }