Пример #1
0
        public void Dial(string addr, Dialer d, SocketFlag flags = None)
        {
            var did = default(uint);

            DefaultInvoker.InvokeWithDefaultErrorHandling(() => __Dial(_sid, addr, ref did, (int)flags));
            d?.OnDialed(did);
        }
Пример #2
0
        public void Listen(string addr, Listener l, SocketFlag flags = None)
        {
            var lid = default(uint);

            DefaultInvoker.InvokeWithDefaultErrorHandling(() => __Listen(_sid, addr, ref lid, (int)flags));
            l?.OnListened(lid);
        }
Пример #3
0
 public virtual void Start(SocketFlag flags = None)
 {
     if (HasOne)
     {
         return;
     }
     DefaultInvoker.InvokeWithDefaultErrorHandling(() => _start((int)flags));
 }
Пример #4
0
        public virtual bool TryReceive(Message message, SocketFlag flags = None)
        {
            var msgPtr = IntPtr.Zero;

            DefaultInvoker.InvokeWithDefaultErrorHandling(() => __ReceiveMessage(_sid, out msgPtr, (int)flags));
            message.RetainPtr(msgPtr);
            return(message.HasOne);
        }
Пример #5
0
        public virtual bool TryReceive(ICollection <byte> buffer, ref int count, SocketFlag flags = None)
        {
            var local = new byte[count];
            var sz    = (ulong)count;

            DefaultInvoker.InvokeWithDefaultErrorHandling(() => __Receive(_sid, local, ref sz, (int)flags));
            buffer.AddRange(local.Take(count = (int)sz));
            return(sz > 0);
        }
Пример #6
0
        /// <summary>
        /// 获取请求表单数据回调处理
        /// </summary>
        /// <returns></returns>
        internal bool OnGetForm()
        {
            AutoCSer.WebView.Page page = GetFormPage;
            Flag       &= SocketFlag.All ^ SocketFlag.GetForm;
            GetFormPage = null;
            ++page.SocketIdentity;
            switch (GetFormType)
            {
            case Http.GetFormType.Call:
                if (page.DomainServer.Call(new AutoCSer.WebView.UnionType {
                    Value = page
                }.CallSynchronize))
                {
                    return(true);
                }
                break;

            case Http.GetFormType.CallAsynchronous:
                if (page.DomainServer.Call(new AutoCSer.WebView.UnionType {
                    Value = page
                }.CallAsynchronousBase))
                {
                    return(true);
                }
                break;

            case Http.GetFormType.Ajax:
                if (new AutoCSer.WebView.UnionType {
                    Value = page
                }.AjaxBase.CallAjax())
                {
                    return(true);
                }
                break;

            case Http.GetFormType.PubAjax:
                if (new AutoCSer.WebView.UnionType {
                    Value = page
                }.PubAjax.Call())
                {
                    return(true);
                }
                break;
            }
            page.CancelGetForm();
            return(false);
        }
Пример #7
0
 internal SubBuffer.PoolBufferFull GetBuffer(int size)
 {
     if (size <= Buffer.Length)
     {
         return(Buffer);
     }
     if (size > BigBuffer.NullLength)
     {
         if ((Flag & SocketFlag.BigBuffer) != 0)
         {
             BigBuffer.Free();
         }
         SubBuffer.Pool.GetBuffer(ref BigBuffer, size);
     }
     Flag |= SocketFlag.BigBuffer;
     return(BigBuffer);
 }
Пример #8
0
 /// <summary>
 /// 是否缓冲区
 /// </summary>
 internal void Free()
 {
     if (SendFileStream != null)
     {
         SendFileStream.Dispose();
         SendFileStream = null;
     }
     if ((Flag & SocketFlag.IsLoadForm) != 0)
     {
         Form.Clear();
         FormBuffer.Clear();
     }
     if ((Flag & SocketFlag.GetForm) != 0)
     {
         GetFormPage.CancelGetForm();
         GetFormPage = null;
     }
     if ((Flag & SocketFlag.BigBuffer) != 0)
     {
         BigBuffer.Free();
     }
     Http.Response.Push(ref HttpResponse);
     Flag = SocketFlag.None;
 }
Пример #9
0
 public void Dial(string addr, SocketFlag flags = None)
 {
     Dial(addr, null, flags);
 }
Пример #10
0
        public virtual Message ReceiveMessage(SocketFlag flags = None)
        {
            var message = new Message();

            return(TryReceive(message, flags) ? message : null);
        }
Пример #11
0
 public override bool TryReceive(Message message, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(TryReceive));
 }
Пример #12
0
 public override bool TryReceive(ICollection <byte> buffer, ref int count, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(TryReceive));
 }
Пример #13
0
 public override Message ReceiveMessage(SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(ReceiveMessage));
 }
Пример #14
0
 public override IEnumerable <byte> ReceiveBytes(ref int count, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(ReceiveBytes));
 }
Пример #15
0
 public virtual void Send(IEnumerable <byte> bytes, SocketFlag flags = None)
 {
     // ReSharper disable PossibleMultipleEnumeration
     Send(bytes, bytes.LongCount(), flags);
     // ReSharper enable PossibleMultipleEnumeration
 }
Пример #16
0
 public virtual void Send(Message message, SocketFlag flags = None)
 {
     DefaultInvoker.InvokeWithDefaultErrorHandling(() => __SendMessage(_sid, message.CedePtr(), (int)flags));
 }
Пример #17
0
 public virtual void Send(IEnumerable <byte> bytes, int count, SocketFlag flags = None)
 {
     Send(bytes, (long)count, flags);
 }
Пример #18
0
 public override void Send(IEnumerable <byte> bytes, long count, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(Send));
 }
Пример #19
0
 public virtual void Send(IEnumerable <byte> bytes, long count, SocketFlag flags = None)
 {
     DefaultInvoker.InvokeWithDefaultErrorHandling(() => __Send(_sid
                                                                , bytes.ToArray(), (ulong)count, (int)flags));
 }
Пример #20
0
 public virtual void Send(string s, int length, SocketFlag flags = None)
 {
     DefaultInvoker.InvokeWithDefaultErrorHandling(() => __Send(_sid
                                                                , new StringBuilder(s), (ulong)length, (int)flags));
 }
Пример #21
0
 public virtual void Send(string s, SocketFlag flags = None)
 {
     Send(s, s.Length, flags);
 }
Пример #22
0
 public override void Send(Message message, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(Send));
 }
Пример #23
0
        public virtual IEnumerable <byte> ReceiveBytes(ref int count, SocketFlag flags = None)
        {
            var buffer = new List <byte>();

            return(TryReceive(buffer, ref count, flags) ? buffer : null);
        }
Пример #24
0
 public override void Send(string s, int length, SocketFlag flags = None)
 {
     throw InvalidOperation(nameof(Send));
 }
Пример #25
0
 public void Listen(string addr, SocketFlag flags = None)
 {
     Listen(addr, null, flags);
 }