Exemplo n.º 1
0
        static unsafe void PrintSeedValues(ref f9sv.ClientReport rpt)
        {
            if (rpt.Seed_ == IntPtr.Zero)
            {
                if (rpt.ResultCode_ == f9sv.ResultCode.NoError)
                { // 「訂閱/查詢/取消訂閱」成功通知.
                  // Console.WriteLine("layout=");
                  // PrintSvLayout(ref rpt);
                }
                else
                { // 「訂閱/查詢/取消訂閱」失敗通知.
                }
                return;
            }
            uint fldidx = rpt.Tab_->FieldCount_;

            if (fldidx <= 0)
            {
                return;
            }
            f9sv.Field *fld = rpt.Tab_->FieldArray_;
            for (;;)
            {
                PrintSvField(fld, ref rpt);
                if (--fldidx <= 0)
                {
                    break;
                }
                Console.Write('|');
                ++fld;
            }
            Console.WriteLine();
        }
Exemplo n.º 2
0
 static unsafe void PrintSvReport(string evName, ref f9sv.ClientReport rpt)
 {
     PrintEvSplit(evName);
     Console.WriteLine($"UserData={rpt.UserData_}, result={SvResultCodeStr(rpt.ResultCode_)}");
     Console.WriteLine($"treePath=[{rpt.TreePath_}], seedKey=[{rpt.SeedKey_}], tab=[{rpt.Tab_->Named_.Name_}|{rpt.Tab_->Named_.Index_}]");
     PrintSeedValues(ref rpt);
     Console.WriteLine("====================");
 }
Exemplo n.º 3
0
 internal void OnSvSubscribeReport(ref f9rc.RcClientSession ses, ref f9sv.ClientReport rpt)
 {
     if (rpt.Seed_ == IntPtr.Zero)
     { // 訂閱結果通知.
         if (rpt.ResultCode_ == f9sv.ResultCode.NoError)
         {
             // 訂閱成功.
         }
         else
         {
             // 訂閱失敗.
         }
     }
     PrintSvReport("OnSv.SubscribeReport", ref rpt);
 }
Exemplo n.º 4
0
        static unsafe void PrintSvField(f9sv.Field *fld, ref f9sv.ClientReport rpt)
        {
            byte[] buf = new byte[1024];
            uint   sz  = (uint)buf.Length;

            f9sv.Api.GetField_Str(rpt.Seed_, ref *fld, ref buf[0], ref sz);
            string val = Encoding.UTF8.GetString(buf, 0, (int)sz - 1 /*EOS*/);

            Console.Write($"{fld->Named_.Name_}=[{val}]");
            { // 直接取出欄位的數值.
                if (fld->TypeId_[0] == 'U')
                {
                    UInt64 uval = f9sv.Api.ReadUnsigned(rpt.Seed_, ref *fld);
                    if (uval != 0 && uval == fld->NullValue_.Unsigned_)
                    {
                        Console.Write("()");
                    }
                    else
                    {
                        Console.Write($"[{uval}]");
                    }
                }
                else if (fld->TypeId_[0] == 'S')
                {
                    Int64 sval = f9sv.Api.ReadSigned(rpt.Seed_, ref *fld);
                    if (sval != 0 && sval == fld->NullValue_.Signed_)
                    {
                        Console.Write("()");
                    }
                    else
                    {
                        Console.Write($"[{sval}]");
                    }
                }
            }
        }
Exemplo n.º 5
0
 internal void OnSvUnsubscribeReport(ref f9rc.RcClientSession ses, ref f9sv.ClientReport rpt)
 {
     PrintSvReport("OnSv.UnsubscribeReport", ref rpt);
 }
Exemplo n.º 6
0
 internal void OnSvQueryReport(ref f9rc.RcClientSession ses, ref f9sv.ClientReport rpt)
 {
     PrintSvReport("OnSv.QueryReport", ref rpt);
     this.LastQueryReportedUserData_ = rpt.UserData_;
 }