コード例 #1
0
        //---------------------------------------------------------------
        #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();
        }
コード例 #2
0
        /// <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
                        {
                        }
                    }
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        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
            {
            }
        }
コード例 #7
0
ファイル: ClientSocket.cs プロジェクト: lsmolic/hangoutsrc
 public ClientSocket()
 {
     mPacketizer         = new Packetizer();
     mRestrictToThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
 }
コード例 #8
0
 public void SetUp()
 {
     dh  = new MyDataHandler();
     p   = new Packetizer(dh, "tcp:", null);
     mph = new MyPacketHandler(p);
 }