コード例 #1
0
        public override bool SendTarget(PortalPacket p, ushort targetID, bool getResponse)
        {
            if (!CheckAlive())
            {
                return(false);
            }

            var any = false;

            try
            {
                foreach (var c in Clients)
                {
                    try
                    {
                        if (c.SendTarget(p, targetID, getResponse))
                        {
                            any = true;
                        }
                    }
                    catch
                    { }
                }
            }
            catch
            { }

            return(any);
        }
コード例 #2
0
ファイル: PortalServer.cs プロジェクト: zerodowned/Multiverse
        public override bool SendExcept(PortalPacket p, ushort exceptID)
        {
            if (!CheckAlive())
            {
                return(false);
            }

            var any = false;

            try
            {
                foreach (var c in Clients)
                {
                    try
                    {
                        if (c.SendExcept(p, exceptID))
                        {
                            any = true;
                        }
                    }
                    catch
                    { }
                }
            }
            catch
            { }

            return(any);
        }
コード例 #3
0
        private bool InternalSend(PortalPacket p, bool getResponse)
        {
            var buffer = p.Compile();

            if (buffer == null)
            {
                ToConsole("Send: Buffer Null for {0}", p.ID);

                return(false);
            }

            if (buffer.Length < PortalPacket.MinSize || buffer.Length > PortalPacket.MaxSize)
            {
                ToConsole(
                    "Send: Size Out Of Range for {0} at {1}/{2}-{3} bytes",
                    p.ID,
                    buffer.Length,
                    PortalPacket.MinSize,
                    PortalPacket.MaxSize);

                return(false);
            }

            lock (_SendLock)
            {
                var size = buffer.Length;

                while (size > 0 && _Client != null)
                {
                    size -= _Client.Send(buffer, buffer.Length - size, size, SocketFlags.None);

                    if (!_Client.Connected)
                    {
                        break;
                    }

                    Thread.Sleep(10);
                }

                if (size > 0)
                {
                    ToConsole("Send: Failed for {0} at {1}/{2} bytes", p.ID, buffer.Length - size, buffer.Length);

                    Dispose();
                    return(false);
                }

                ToConsole("Send: Sent Packet {0} at {1} bytes", p.ID, buffer.Length);
            }

            if (getResponse)
            {
                Receive();
            }

            ProcessReceiveQueue();

            return(true);
        }
コード例 #4
0
ファイル: PortalServer.cs プロジェクト: uotools/Multiverse
        public override bool SendTarget(PortalPacket p, ushort targetID)
        {
            if (!IsAlive)
            {
                return(false);
            }

            var any = 0;

            foreach (var c in Clients)
            {
                if (c.SendTarget(p, targetID))
                {
                    ++any;
                }
            }

            return(any > 0);
        }
コード例 #5
0
ファイル: PortalServer.cs プロジェクト: uotools/Multiverse
        public override bool Send(PortalPacket p)
        {
            if (!IsAlive)
            {
                return(false);
            }

            var any = 0;

            foreach (var c in Clients)
            {
                if (c.Send(p))
                {
                    ++any;
                }
            }

            return(any > 0);
        }
コード例 #6
0
 public override bool Send(PortalPacket p)
 {
     return(CheckAlive() && InternalSend(p));
 }
コード例 #7
0
ファイル: PortalClient.cs プロジェクト: Vita-Nex/Multiverse
 public override bool SendTarget(PortalPacket p, ushort targetID)
 {
     return CheckAlive() && _ServerID == targetID && InternalSend(p);
 }
コード例 #8
0
 public abstract bool Send(PortalPacket p);
コード例 #9
0
 public abstract bool SendExcept(PortalPacket p, ushort exceptID, bool getResponse);
コード例 #10
0
 public bool SendTarget(PortalPacket p, ushort targetID)
 {
     return(SendTarget(p, targetID, false));
 }
コード例 #11
0
ファイル: PortalServer.cs プロジェクト: Vita-Nex/Multiverse
        public override bool Send(PortalPacket p)
        {
            if (!CheckAlive())
            {
                return false;
            }

            var any = false;

            try
            {
                foreach (var c in Clients)
                {
                    try
                    {
                        if (c.Send(p))
                        {
                            any = true;
                        }
                    }
                    catch
                    { }
                }
            }
            catch
            { }

            return any;
        }
コード例 #12
0
 public bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return SendExcept(p, exceptID, false);
 }
コード例 #13
0
ファイル: Portal.cs プロジェクト: Crome696/Multiverse
 public static bool SendExcept(PortalPacket p, ushort exceptID, bool getResponse)
 {
     return IsAlive && Transport.SendExcept(p, exceptID, getResponse);
 }
コード例 #14
0
ファイル: Portal.cs プロジェクト: Crome696/Multiverse
 public static bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return IsAlive && Transport.SendExcept(p, exceptID);
 }
コード例 #15
0
ファイル: Portal.cs プロジェクト: Crome696/Multiverse
 public static bool Send(PortalPacket p, bool getResponse)
 {
     return IsAlive && Transport.Send(p, getResponse);
 }
コード例 #16
0
ファイル: Portal.cs プロジェクト: Crome696/Multiverse
 public static bool Send(PortalPacket p)
 {
     return IsAlive && Transport.Send(p);
 }
コード例 #17
0
 public abstract bool SendTarget(PortalPacket p, ushort targetID);
コード例 #18
0
 public abstract bool SendExcept(PortalPacket p, ushort exceptID);
コード例 #19
0
 public override bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return(CheckAlive() && _ServerID != exceptID && InternalSend(p));
 }
コード例 #20
0
 public bool Send(PortalPacket p)
 {
     return Send(p, false);
 }
コード例 #21
0
ファイル: Portal.cs プロジェクト: Crome696/Multiverse
 public static bool SendTarget(PortalPacket p, ushort targetID, bool getResponse)
 {
     return IsAlive && Transport.SendTarget(p, targetID, getResponse);
 }
コード例 #22
0
 public bool SendTarget(PortalPacket p, ushort targetID)
 {
     return SendTarget(p, targetID, false);
 }
コード例 #23
0
ファイル: PortalClient.cs プロジェクト: Crome696/Multiverse
        private bool InternalSend(PortalPacket p, bool getResponse)
        {
            var buffer = p.Compile();

            if (buffer == null)
            {
                ToConsole("Send: Buffer Null for {0}", p.ID);

                return false;
            }

            if (buffer.Length < PortalPacket.MinSize || buffer.Length > PortalPacket.MaxSize)
            {
                ToConsole(
                    "Send: Size Out Of Range for {0} at {1}/{2}-{3} bytes",
                    p.ID,
                    buffer.Length,
                    PortalPacket.MinSize,
                    PortalPacket.MaxSize);

                return false;
            }

            lock (_SendLock)
            {
                var size = buffer.Length;

                while (size > 0 && _Client != null)
                {
                    size -= _Client.Send(buffer, buffer.Length - size, size, SocketFlags.None);

                    if (!_Client.Connected)
                    {
                        break;
                    }

                    Thread.Sleep(10);
                }

                if (size > 0)
                {
                    ToConsole("Send: Failed for {0} at {1}/{2} bytes", p.ID, buffer.Length - size, buffer.Length);

                    Dispose();
                    return false;
                }

                ToConsole("Send: Sent Packet {0} at {1} bytes", p.ID, buffer.Length);
            }

            if (getResponse)
            {
                Receive();
            }

            ProcessReceiveQueue();

            return true;
        }
コード例 #24
0
ファイル: PortalClient.cs プロジェクト: Crome696/Multiverse
 public override bool Send(PortalPacket p, bool getResponse)
 {
     return CheckAlive() && InternalSend(p, getResponse);
 }
コード例 #25
0
 public static bool SendTarget(PortalPacket p, ushort targetID)
 {
     return(IsAlive && Transport.SendTarget(p, targetID));
 }
コード例 #26
0
 public abstract bool Send(PortalPacket p, bool getResponse);
コード例 #27
0
ファイル: PortalClient.cs プロジェクト: Vita-Nex/Multiverse
 public override bool Send(PortalPacket p)
 {
     return CheckAlive() && InternalSend(p);
 }
コード例 #28
0
 public abstract bool SendTarget(PortalPacket p, ushort targetID, bool getResponse);
コード例 #29
0
 public override bool Send(PortalPacket p, bool getResponse)
 {
     return(CheckAlive() && InternalSend(p, getResponse));
 }
コード例 #30
0
 public static bool Send(PortalPacket p)
 {
     return(IsAlive && Transport.Send(p));
 }
コード例 #31
0
 public abstract bool Send(PortalPacket p);
コード例 #32
0
 public static bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return(IsAlive && Transport.SendExcept(p, exceptID));
 }
コード例 #33
0
 public abstract bool SendExcept(PortalPacket p, ushort exceptID);
コード例 #34
0
ファイル: PortalClient.cs プロジェクト: Vita-Nex/Multiverse
 public override bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return CheckAlive() && _ServerID != exceptID && InternalSend(p);
 }
コード例 #35
0
 public abstract bool SendTarget(PortalPacket p, ushort targetID);
コード例 #36
0
ファイル: PortalClient.cs プロジェクト: Vita-Nex/Multiverse
        private bool InternalSend(PortalPacket p)
        {
            if (!IsAlive)
            {
                return false;
            }

            var buffer = p.Compile();

            if (buffer == null)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole("Send: Buffer Null for {0}", p.ID);
                }

                return false;
            }

            var size = buffer.Length;

            if (size < PortalPacket.MinSize || size > PortalPacket.MaxSize)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole(
                        "Send: Size Out Of Range for {0} at {1}/{2}-{3} bytes",
                        p.ID,
                        size,
                        PortalPacket.MinSize,
                        PortalPacket.MaxSize);
                }

                return false;
            }

            var length = size;

            lock (_SendLock)
            {
                while (length > 0 && _Client != null)
                {
                    length -= _Client.Send(buffer, size - length, length, SocketFlags.None);

                    if (!_Client.Connected || length <= 0)
                    {
                        break;
                    }

                    Thread.Sleep(10);
                }
            }

            if (length > 0)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole("Send: Failed for {0} at {1}/{2} bytes", p.ID, size - length, size);
                }

                return false;
            }

            if (_DisplaySendOutput)
            {
                ToConsole("Send: Sent Packet {0} at {1} bytes", p.ID, size);
            }

            lock (_GetResponseLock)
            {
                if (p.GetResponse)
                {
                    Receive();
                    ProcessReceiveQueue();
                }
            }

            return true;
        }
コード例 #37
0
 public static bool Send(PortalPacket p, bool getResponse)
 {
     return(IsAlive && Transport.Send(p, getResponse));
 }
コード例 #38
0
 public override bool SendTarget(PortalPacket p, ushort targetID)
 {
     return(CheckAlive() && _ServerID == targetID && InternalSend(p));
 }
コード例 #39
0
 public static bool SendExcept(PortalPacket p, ushort exceptID, bool getResponse)
 {
     return(IsAlive && Transport.SendExcept(p, exceptID, getResponse));
 }
コード例 #40
0
        private bool InternalSend(PortalPacket p)
        {
            if (!IsAlive)
            {
                return(false);
            }

            var buffer = p.Compile();

            if (buffer == null)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole("Send: Buffer Null for {0}", p.ID);
                }

                return(false);
            }

            var size = buffer.Length;

            if (size < PortalPacket.MinSize || size > PortalPacket.MaxSize)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole(
                        "Send: Size Out Of Range for {0} at {1}/{2}-{3} bytes",
                        p.ID,
                        size,
                        PortalPacket.MinSize,
                        PortalPacket.MaxSize);
                }

                return(false);
            }

            var length = size;

            lock (_SendLock)
            {
                while (length > 0 && _Client != null)
                {
                    length -= _Client.Send(buffer, size - length, length, SocketFlags.None);

                    if (!_Client.Connected || length <= 0)
                    {
                        break;
                    }

                    Thread.Sleep(10);
                }
            }

            if (length > 0)
            {
                if (_DisplaySendOutput)
                {
                    ToConsole("Send: Failed for {0} at {1}/{2} bytes", p.ID, size - length, size);
                }

                return(false);
            }

            if (_DisplaySendOutput)
            {
                ToConsole("Send: Sent Packet {0} at {1} bytes", p.ID, size);
            }

            lock (_GetResponseLock)
            {
                if (p.GetResponse)
                {
                    Receive();
                    ProcessReceiveQueue();
                }
            }

            return(true);
        }
コード例 #41
0
ファイル: PortalClient.cs プロジェクト: uotools/Multiverse
 public override bool Send(PortalPacket p)
 {
     return(InternalSend(p));
 }
コード例 #42
0
 public abstract bool Send(PortalPacket p, bool getResponse);
コード例 #43
0
ファイル: PortalClient.cs プロジェクト: uotools/Multiverse
        private bool InternalSend(PortalPacket p)
        {
            if (p == null)
            {
                return(false);
            }

            if (IsDisposing && p.ID != 255)
            {
                return(false);
            }

            if (!IsAlive)
            {
                return(false);
            }

            /*
             * while (!_ReceiveSync.WaitOne(10))
             * {
             *      if (!IsAlive || (Portal.Ticks % 1000 == 0 && !IsConnected))
             *      {
             *              return false;
             *      }
             *
             *      Thread.Sleep(1);
             * }
             */
            if (IsDisposing && p.ID != 255)
            {
                return(false);
            }

            if (!IsAlive)
            {
                return(false);
            }

            try
            {
                _NoReceive = true;

                var buffer = p.Compile();

                if (buffer == null)
                {
                    if (_DisplaySendOutput)
                    {
                        ToConsole("Send: Buffer Null for {0}", p.ID);
                    }

                    Dispose();
                    return(false);
                }

                var size = buffer.Size;

                if (size < PortalPacket.MinSize || size > PortalPacket.MaxSize)
                {
                    if (_DisplaySendOutput)
                    {
                        ToConsole(
                            "Send: Size Out Of Range for {0} at {1} / {2} - {3} bytes",
                            p.ID,
                            size,
                            PortalPacket.MinSize,
                            PortalPacket.MaxSize);
                    }

                    Dispose();
                    return(false);
                }

                var length = buffer.Send(_Client, 0, size);

                if (length < size)
                {
                    if (_DisplaySendOutput)
                    {
                        ToConsole("Send: Failed for {0} at {1} / {2} bytes", p.ID, length, size);
                    }

                    Dispose();
                    return(false);
                }

                if (_DisplaySendOutput)
                {
                    ToConsole("Send: Packet {0} at {1} bytes", p.ID, size);
                }

                if (p.GetResponse)
                {
                    if (!Receive(true))
                    {
                        if (_DisplaySendOutput)
                        {
                            ToConsole("Send: {0} requires a response which could not be handled.", p.ID);
                        }

                        Dispose();
                        return(false);
                    }

                    ProcessReceiveQueue();
                }

                _NoReceive = false;

                return(true);
            }
            catch (Exception e)
            {
                ToConsole("Send: Exception Thrown", e);

                Dispose();
                return(false);
            }
            finally
            {
                _NoReceive = false;
            }
        }
コード例 #44
0
 public abstract bool SendExcept(PortalPacket p, ushort exceptID, bool getResponse);
コード例 #45
0
 public bool Send(PortalPacket p)
 {
     return(Send(p, false));
 }
コード例 #46
0
 public abstract bool SendTarget(PortalPacket p, ushort targetID, bool getResponse);
コード例 #47
0
 public bool SendExcept(PortalPacket p, ushort exceptID)
 {
     return(SendExcept(p, exceptID, false));
 }
コード例 #48
0
ファイル: PortalServer.cs プロジェクト: Vita-Nex/Multiverse
        public override bool SendTarget(PortalPacket p, ushort targetID)
        {
            if (!CheckAlive())
            {
                return false;
            }

            var any = false;

            try
            {
                foreach (var c in Clients)
                {
                    try
                    {
                        if (c.SendTarget(p, targetID))
                        {
                            any = true;
                        }
                    }
                    catch
                    { }
                }
            }
            catch
            { }

            return any;
        }
コード例 #49
0
ファイル: PortalServer.cs プロジェクト: Crome696/Multiverse
        public override bool SendExcept(PortalPacket p, ushort exceptID, bool getResponse)
        {
            if (!CheckAlive())
            {
                return false;
            }

            var any = false;

            try
            {
                foreach (var c in Clients)
                {
                    try
                    {
                        if (c.SendExcept(p, exceptID, getResponse))
                        {
                            any = true;
                        }
                    }
                    catch
                    { }
                }
            }
            catch
            { }

            return any;
        }