//--------------------------------------------------------------- #endregion //--------------------------------------------------------------- //--------------------------------------------------------------- #region Initialisation //--------------------------------------------------------------- /// <summary> /// Creates a new instance of an ObjectQueue. /// </summary> public ObjectQueue(Packetizer packetizer) { this.queue = Queue.Synchronized(new Queue()); this.packetizer = packetizer; packetizer.PacketReceived += new PacketHandler(packetizer_PacketReceived); codec = new XmlSerializeCodec(); }
/// <summary> /// Send to is used to send data to a single peer. To boradcast use SendAll(). /// </summary> /// <param name="peerId"></param> /// <param name="label"></param> /// <param name="payload"></param> public void SendTo(Guid peerId, string label, string payload) { lock (this) { if (_peers.Count == 0) { return; } byte[] packet = Packetizer.AssembleMessagePacket(new Packet() { Label = label, Payload = payload }); foreach (var peer in _peers) { if (peer.Id == peerId) { try { peer.Socket.Send(packet); } catch { } } } } }
protected override TransportMessage NewTransport(string uri, Resources resources) { URL u = new URL(uri); Object socket = resources.Get(SOCKET); TransportData c; if (isSecure) { c = new TlsConnection((Socket)socket, u, resources); } else { c = new TcpConnection((Socket)socket, u, resources); } TransportPacket p = new Packetizer(c, u, resources); TransportMessage m = new Messagizer(p, u, resources); m = AddFilters(m, u, resources); //MailboxManager r = new PlainMailboxManager(m, u, resources); //DeliveryService d = new DefaultDeliveryService(r, u, resources); ValueFactory vf = (ValueFactory)resources.Get(TransportConsts.VALUE_FACTORY); vf.LockDynamicTypes(); return(m); }
public Connection(Socket socket, Guid sessionId, CleanupSocketReferencesEventHandler cleanupSocketReferencesEvent) { if (!socket.Connected) { throw new ArgumentException("Trying to initialize a Connection object with a socket that is not connected."); } mLogger = LogManager.GetLogger("Connection"); mPacketizer = new Packetizer(); mSocket = socket; mSocketHandle = (int)mSocket.Handle; mSessionId = sessionId; mLastKnownIP = ((IPEndPoint)mSocket.RemoteEndPoint).Address; mSocket.Blocking = false; this.CleanupSocketReferencesEvent += new CleanupSocketReferencesEventHandler(cleanupSocketReferencesEvent); mRestrictToThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; }
public void RestFtpSession() { Packetizer.Reset(); Encoding = Server.Configuration.Encoding; TransferMode = FtpTransferMode.Ascii; Status = FtpSessionStatus.NotLogin; User = null; CurrentStatement = null; CurrentDir = RootPath; FileOffset = 0; UpFileFailed = false; UpFileLocalPath = null; var stream = UpFileStream; UpFileStream = null; if (stream != null) { stream.Close(); } }
private void OnDataReceived(IAsyncResult asyn) { Socket socket = null; try { SocketState socketState = (SocketState)asyn.AsyncState; socket = socketState.Peer.Socket; socketState.BytesReceived = socketState.Peer.Socket.EndReceive(asyn); if (socketState.BytesReceived == 0) { CleanupConnection(socketState.Peer); return; } Packetizer.DissasemblePacketData(socketState, ProcessPayloadHandler); WaitForData(socketState); } catch (ObjectDisposedException) { CleanupConnection(socket); return; } catch (SocketException) { CleanupConnection(socket); return; } catch { } }
public ClientSocket() { mPacketizer = new Packetizer(); mRestrictToThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; }
public void SetUp() { dh = new MyDataHandler(); p = new Packetizer(dh, "tcp:", null); mph = new MyPacketHandler(p); }