Esempio n. 1
0
        protected bool HandleMessage(Message message)
        {
            lock (Sync) switch (message.Opcode)
                {
                case 1: OnString?.Invoke(Encoding.UTF8.GetString(message.Payload)); return(true);

                case 2: OnBinary?.Invoke(message.Payload); return(true);

                case 8:
                    if (message.Length < 2)
                    {
                        FinishClose(); return(true);
                    }
                    ushort code   = (ushort)(message.Payload[0] * 256 + message.Payload[1]);
                    string reason = Encoding.UTF8.GetString(PrimitiveBuffer.Slice(message.Payload, 2, message.Length));
                    if (RecvClose && message.Length > 2)
                    {
                        return(false);
                    }
                    if (message.Length > 2)
                    {
                        return(FinishClose(code, reason));
                    }
                    return(FinishClose(code));

                case 9: OnPing?.Invoke(message.Payload); return(true);

                case 10: OnPong?.Invoke(message.Payload); return(true);

                default: return(false);
                }
        }
Esempio n. 2
0
        private void OnIncomingMessage(Message message)
        {
            if (State == TcpSocketState.Closed)
            {
                return;
            }
            switch (message.Opcode)
            {
            case 1:
                string str;
                try { str = Encoding.UTF8.GetString(message.Data); }
                catch (ArgumentException) { ForciblyClose(); return; }
                OnString?.Invoke(str);
                break;

            case 2: OnBinary?.Invoke(message.Data); break;

            case 8:
                ushort code   = (ushort)(message.Data.Length == 0 ? 0 : message.Data[0] * 256u + message.Data[1]);
                string reason = message.Data.Length >= 2 ? Encoding.UTF8.GetString(message.Data, 2, message.Data.Length - 2) : null;
                OnClose?.Invoke(code, reason);
                AnswerClose(code, reason);
                break;

            case 9: OnPing?.Invoke(message.Data); AnswerPing(message.Data); break;

            case 10: OnPong?.Invoke(message.Data); break;

            default: ForciblyClose(); break;
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Returns the path to the open worksession .rws file.
 /// If null is returned, then either there is no worksession .rws file open,
 /// or the active worksession has not yet been saved.
 /// </summary>
 /// <param name="serialno">The worksession's runtime serial number.</param>
 /// <returns>The path to the open worksession .rws file if successful, null otherwise.</returns>
 public static string FileName(uint serialno)
 {
     using (var holder = new OnString())
     {
         var ptr_holder = holder.NonConstPointer();
         var rc         = UnsafeNativeMethods.CRhinoWorkSession_FileName(serialno, ptr_holder);
         return(rc ? holder.ToString() : null);
     }
 }
Esempio n. 4
0
 private void WriteLog(string message)
 {
     if (txtLog.InvokeRequired)
     {
         var d = new OnString(WriteLog);
         this.BeginInvoke(d, message);
     }
     else
     {
         txtLog.AppendText($"{message}" + Environment.NewLine);
     }
 }
Esempio n. 5
0
        private IEnumerator load(string url, OnString cb)
        {
            var www = new WWW(url);

            yield return(www);

            if (!www.isDone)
            {
                Collector.Error.add(this, "load1 www not done!");
                yield break;
            }
            if (!string.IsNullOrEmpty(www.error))
            {
                Collector.Error.add(this, url + " : " + www.error);
                yield break;
            }
            cb(www.text);
        }