コード例 #1
0
            public static void BatchMessage(ushort idMessage, byte[] message, uint len, CUQueue q)
            {
                if (message == null)
                {
                    message = new byte[0];
                    len = 0;
                }
                else if (len > message.Length)
                {
                    len = (uint)message.Length;
                }

                if (q.GetSize() == 0)
                {
                    uint count = 1;
                    q.Save(count);
                }
                else
                {
                    unsafe
                    {
                        fixed (byte* p = q.IntenalBuffer)
                        {
                            uint* pN = (uint*)p;
                            *pN += 1;
                        }
                    }
                }
                q.Save(idMessage).Save(len);
                q.Push(message, len);
            }
コード例 #2
0
 public void SaveTo(CUQueue UQueue)
 {
     UQueue.Save(Count);
     foreach (long n in this)
     {
         UQueue.Save(n);
     }
 }
コード例 #3
0
ファイル: dbEventFunc.cs プロジェクト: skyformat99/socketpro
    private static bool Publish(object Message, params uint[] Groups)
    {
        uint len;

        if (Groups == null)
        {
            len = 0;
        }
        else
        {
            len = (uint)Groups.Length;
        }
        using (CScopeUQueue su = new CScopeUQueue())
        {
            CUQueue q = su.UQueue;
            q.Save(Message);
            unsafe
            {
                fixed(byte *buffer = q.m_bytes)
                {
                    fixed(uint *p = Groups)
                    {
                        return(SpeakPush(buffer, q.GetSize(), p, len));
                    }
                }
            }
        }
    }
コード例 #4
0
 public static void BatchMessage<T0, T1, T2, T3, T4, T5>(ushort idMessage, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, CUQueue q)
 {
     CUQueue b = CScopeUQueue.Lock();
     b.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5);
     BatchMessage(idMessage, b.IntenalBuffer, b.Size, q);
     CScopeUQueue.Unlock(b);
 }
コード例 #5
0
 public static void BatchMessage<T0, T1>(ushort idMessage, T0 t0, T1 t1, CUQueue q)
 {
     CUQueue b = CScopeUQueue.Lock();
     b.Save(t0).Save(t1);
     BatchMessage(idMessage, b.IntenalBuffer, b.Size, q);
     CScopeUQueue.Unlock(b);
 }
コード例 #6
0
ファイル: uhttppeer.cs プロジェクト: udaparts/socketpro
                public bool Publish(object Message, uint[] Groups)
                {
                    uint len;

                    if (Groups == null)
                    {
                        len = 0;
                    }
                    else
                    {
                        len = (uint)Groups.Length;
                    }
                    using (CScopeUQueue su = new CScopeUQueue())
                    {
                        CUQueue q = su.UQueue;
                        q.Save(Message);
                        unsafe
                        {
                            fixed(byte *buffer = q.m_bytes)
                            {
                                fixed(uint *p = Groups)
                                {
                                    return(ServerCoreLoader.Speak(m_sp.Handle, buffer, q.GetSize(), p, len));
                                }
                            }
                        }
                    }
                }
コード例 #7
0
 public static void BatchMessage<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ushort idMessage, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, CUQueue q)
 {
     CUQueue b = CScopeUQueue.Lock();
     b.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8).Save(t9);
     BatchMessage(idMessage, b.IntenalBuffer, b.Size, q);
     CScopeUQueue.Unlock(b);
 }
コード例 #8
0
ファイル: asyncqueue.cs プロジェクト: warrior6/socketpro
            /// <summary>
            /// Dequeue messages from a persistent message queue file at server side in batch
            /// </summary>
            /// <param name="key">An ASCII string for identifying a queue at server side</param>
            /// <param name="d">A callback for tracking data like remaining message count within a server queue file, queue file size in bytes, message dequeued within this batch and bytes dequeued within this batch</param>
            /// <param name="timeout">A time-out number in milliseconds</param>
            /// <param name="discarded">a callback for tracking cancel or socket closed event</param>
            /// <returns>true for sending the request successfully, and false for failure</returns>
            public virtual bool Dequeue(byte[] key, DDequeue d, uint timeout, DDiscarded discarded)
            {
                DAsyncResultHandler rh = null;

                lock (m_csQ)
                {
                    m_keyDequeue = key;
                    if (d != null)
                    {
                        rh = (ar) =>
                        {
                            ulong messageCount, fileSize, ret;
                            ar.UQueue.Load(out messageCount).Load(out fileSize).Load(out ret);
                            uint messages = (uint)ret;
                            uint bytes    = (uint)(ret >> 32);
                            d((CAsyncQueue)ar.AsyncServiceHandler, messageCount, fileSize, messages, bytes);
                        };
                        m_dDequeue = d;
                    }
                    else
                    {
                        m_dDequeue = null;
                    }
                }
                using (CScopeUQueue sb = new CScopeUQueue())
                {
                    CUQueue q = sb.UQueue;
                    q.Save(key).Save(timeout);
                    return(SendRequest(idDequeue, q, rh, discarded, (DOnExceptionFromServer)null));
                }
            }
コード例 #9
0
 public void SaveTo(CUQueue UQueue)
 {
     UQueue.Save(rental_id);
     if (Rental == null || Rental.Ticks == 0)
     {
         UQueue.Save(ZERO_TICK);
     }
     else
     {
         UQueue.Save(Rental);
     }
     if (Return == null || Return.Ticks == 0)
     {
         UQueue.Save(ZERO_TICK);
     }
     else
     {
         UQueue.Save(Return);
     }
     if (LastUpdate == null || LastUpdate.Ticks == 0)
     {
         UQueue.Save(ZERO_TICK);
     }
     else
     {
         UQueue.Save(LastUpdate);
     }
 }
コード例 #10
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
 public Task <CScopeUQueue> sendRequest <T0, T1, T2, T3>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3)
 {
     using (CScopeUQueue sb = new CScopeUQueue())
     {
         CUQueue b = sb.UQueue;
         b.Save(t0).Save(t1).Save(t2).Save(t3);
         return(sendRequest(reqId, b.IntenalBuffer, b.GetSize()));
     }
 }
コード例 #11
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
 public Task <CScopeUQueue> sendRequest <T0>(ushort reqId, T0 t0)
 {
     using (CScopeUQueue sb = new CScopeUQueue())
     {
         CUQueue b = sb.UQueue;
         b.Save(t0);
         return(sendRequest(reqId, b.IntenalBuffer, b.GetSize()));
     }
 }
コード例 #12
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
 public Task <CScopeUQueue> sendRequest <T0, T1, T2, T3, T4, T5, T6, T7>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
 {
     using (CScopeUQueue sb = new CScopeUQueue())
     {
         CUQueue b = sb.UQueue;
         b.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7);
         return(sendRequest(reqId, b.IntenalBuffer, b.GetSize()));
     }
 }
コード例 #13
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            protected bool SendRouteeResult <T0, T1>(T0 t0, T1 t1, ushort reqId)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1);
                bool ok = SendRouteeResult(su, reqId);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #14
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            public bool SendRequest <T0, T1, T2, T3, T4, T5, T6, T7, T8>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, DAsyncResultHandler ash)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8);
                bool ok = SendRequest(reqId, su, ash);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #15
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            protected bool SendRouteeResult <T0, T1, T2, T3, T4>(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, ushort reqId)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4);
                bool ok = SendRouteeResult(su, reqId);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #16
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            public bool SendRequest <T0, T1, T2, T3>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, DAsyncResultHandler ash, DDiscarded discarded, DOnExceptionFromServer exception)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3);
                bool ok = SendRequest(reqId, su, ash, discarded, exception);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #17
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            public bool SendRequest <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, DAsyncResultHandler ash, DDiscarded discarded, DOnExceptionFromServer exception)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8).Save(t9);
                bool ok = SendRequest(reqId, su, ash, discarded, exception);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #18
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            public bool SendRequest <T0>(ushort reqId, T0 t0, DAsyncResultHandler ash)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0);
                bool ok = SendRequest(reqId, su, ash);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #19
0
ファイル: asynchandler.cs プロジェクト: udaparts/socketpro
            public bool SendRequest <T0, T1, T2, T3, T4>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, DAsyncResultHandler ash)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4);
                bool ok = SendRequest(reqId, su, ash);

                CScopeUQueue.Unlock(su);
                return(ok);
            }
コード例 #20
0
ファイル: replication.cs プロジェクト: warrior6/socketpro
        public bool Send <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9)
        {
            CUQueue su = CScopeUQueue.Lock();

            su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8).Save(t9);
            bool ok = Send(reqId, su);

            CScopeUQueue.Unlock(su);
            return(ok);
        }
コード例 #21
0
            public ulong Enqueue <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8).Save(t9);
                ulong index = Enqueue(reqId, su);

                CScopeUQueue.Unlock(su);
                return(index);
            }
コード例 #22
0
            public ulong Enqueue <T0, T1, T2, T3, T4, T5>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5);
                ulong index = Enqueue(reqId, su);

                CScopeUQueue.Unlock(su);
                return(index);
            }
コード例 #23
0
ファイル: asyncqueue.cs プロジェクト: warrior6/socketpro
            public virtual bool Enqueue(byte[] key, ushort idMessage, byte[] bytes, DEnqueue e, DDiscarded discarded)
            {
                CUQueue sb = CScopeUQueue.Lock();

                sb.Save(key).Save(idMessage).Push(bytes);
                bool ok = SendRequest(idEnqueue, sb, GetRH(e), discarded, (DOnExceptionFromServer)null);

                CScopeUQueue.Unlock(sb);
                return(ok);
            }
コード例 #24
0
            public ulong Enqueue <T0, T1, T2>(ushort reqId, T0 t0, T1 t1, T2 t2)
            {
                CUQueue su = CScopeUQueue.Lock();

                su.Save(t0).Save(t1).Save(t2);
                ulong index = Enqueue(reqId, su);

                CScopeUQueue.Unlock(su);
                return(index);
            }
コード例 #25
0
 public bool Enqueue<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(byte[] key, ushort idMessage, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, DEnqueue e)
 {
     if (key == null)
         key = new byte[0];
     CUQueue sb = CScopeUQueue.Lock();
     sb.Save(key).Save(idMessage).Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5).Save(t6).Save(t7).Save(t8).Save(t9);
     bool ok = SendRequest(idEnqueue, sb, GetRH(e));
     CScopeUQueue.Unlock(sb);
     return ok;
 }
コード例 #26
0
ファイル: replication.cs プロジェクト: warrior6/socketpro
        public bool Send <T0, T1, T2>(ushort reqId, T0 t0, T1 t1, T2 t2)
        {
            CUQueue su = CScopeUQueue.Lock();

            su.Save(t0).Save(t1).Save(t2);
            bool ok = Send(reqId, su);

            CScopeUQueue.Unlock(su);
            return(ok);
        }
コード例 #27
0
 public bool Enqueue<T0>(byte[] key, ushort idMessage, T0 t0, DEnqueue e)
 {
     if (key == null)
         key = new byte[0];
     CUQueue sb = CScopeUQueue.Lock();
     sb.Save(key).Save(idMessage).Save(t0);
     bool ok = SendRequest(idEnqueue, sb, GetRH(e));
     CScopeUQueue.Unlock(sb);
     return ok;
 }
コード例 #28
0
 public bool Enqueue<T0, T1, T2, T3, T4>(byte[] key, ushort idMessage, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, DEnqueue e)
 {
     if (key == null)
         key = new byte[0];
     CUQueue sb = CScopeUQueue.Lock();
     sb.Save(key).Save(idMessage).Save(t0).Save(t1).Save(t2).Save(t3).Save(t4);
     bool ok = SendRequest(idEnqueue, sb, GetRH(e));
     CScopeUQueue.Unlock(sb);
     return ok;
 }
コード例 #29
0
ファイル: replication.cs プロジェクト: warrior6/socketpro
        public bool Send <T0, T1, T2, T3, T4, T5>(ushort reqId, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
        {
            CUQueue su = CScopeUQueue.Lock();

            su.Save(t0).Save(t1).Save(t2).Save(t3).Save(t4).Save(t5);
            bool ok = Send(reqId, su);

            CScopeUQueue.Unlock(su);
            return(ok);
        }
コード例 #30
0
ファイル: replication.cs プロジェクト: warrior6/socketpro
        public bool Send <T0>(ushort reqId, T0 t0)
        {
            CUQueue su = CScopeUQueue.Lock();

            su.Save(t0);
            bool ok = Send(reqId, su);

            CScopeUQueue.Unlock(su);
            return(ok);
        }
コード例 #31
0
ファイル: mystruct.cs プロジェクト: udaparts/socketpro
 //make sure both serialization and de-serialization match against each other.
 public void SaveTo(CUQueue UQueue)
 {
     UQueue.Save(NullString) //4 bytes for length
         .Save(ObjectNull) //2 bytes for data type
         .Save(ADateTime) //8 bytes for double, and all micro/nano seconds are lost
         .Save(ADouble) //8 bytes
         .Save(ABool) //1 byte
         .Save(UnicodeString) //4 bytes for string length + (length * 2) bytes for string data -- UTF16-lowendian
         .Save(AsciiString) //4 bytes for ASCII string length + length bytes for string data
         .Save(ObjBool) //2 bytes for data type + 2 bytes for variant bool
         .Save(ObjString) //2 bytes for data type + 4 bytes for string length + (length * 2) bytes for string data -- UTF16-lowendian
         .Save(objArrString) //2 bytes for data type + 4 bytes for array size + (string length + (length * 2) bytes for string data) * arraysize -- UTF16-lowendian
         .Save(objArrInt) //2 bytes for data type + 4 bytes for array size + arraysize * 4 bytes for int data
         ;
 }
コード例 #32
0
 private void PushTableColNamesOnly(CUQueue UQueue, DataColumn[] dcs)
 {
     UQueue.Save(dcs.Length);
     foreach (DataColumn dc in dcs)
     {
         UQueue.Save(dc.Table.TableName);
         UQueue.Save(dc.Ordinal);
     }
 }
コード例 #33
0
 private void Push(CUQueue UQueue, DataColumn dc)
 {
     bool bNull = (dc == null);
     UQueue.Save(bNull);
     if (bNull)
         return;
     byte bData = 0;
     if (dc.AllowDBNull)
         bData += (byte)tagColumnBit.cbAllowDBNull;
     if (dc.AutoIncrement)
         bData += (byte)tagColumnBit.cbIsAutoIncrement;
     if (dc.ReadOnly)
         bData += (byte)tagColumnBit.cbIsReadOnly;
     if (dc.Unique)
         bData += (byte)tagColumnBit.cbIsUnique;
     UQueue.Save(bData);
     UQueue.Save(dc.AutoIncrementSeed);
     UQueue.Save(dc.AutoIncrementStep);
     UQueue.Save(dc.Caption);
     UQueue.Save((byte)dc.ColumnMapping);
     UQueue.Save(dc.ColumnName);
     UQueue.Save((short)GetDT(dc.DataType.FullName));
     //           UQueue.Push((byte)dc.DateTimeMode);
     UQueue.Save(dc.DefaultValue, false, false);
     UQueue.Save(dc.Expression);
     //dc.ExtendedProperties ignored. If needed, write your own code
     UQueue.Save(dc.MaxLength);
     UQueue.Save(dc.Namespace);
     UQueue.Save(dc.Prefix);
 }
コード例 #34
0
 private void Push(CUQueue UQueue, DataColumnCollection Cols)
 {
     bool bNull = (Cols == null);
     UQueue.Save(bNull);
     if (!bNull)
     {
         int n;
         int nLen = 0;
         if (Cols != null && Cols.Count > 0)
             nLen = Cols.Count;
         UQueue.Save(nLen);
         for (n = 0; n < nLen; n++)
         {
             Push(UQueue, Cols[n]);
         }
     }
 }
コード例 #35
0
 private void Push(CUQueue UQueue, DataColumn[] dcs)
 {
     if (dcs == null)
     {
         UQueue.Save((int)-1);
     }
     else
     {
         UQueue.Save(dcs.Length);
         foreach (DataColumn dc in dcs)
         {
             Push(UQueue, dc);
         }
     }
 }
コード例 #36
0
 internal void PushHeader(CUQueue UQueue, DataTable dt, bool bNeedParentRelations, bool bNeedChildRelations)
 {
     int n;
     int nSize;
     if (dt == null)
         return;
     UQueue.SetSize(0);
     m_dts = new tagDataTypeSupported[dt.Columns.Count];
     UQueue.Save(dt.Rows.Count);
     byte bData = 0;
     /*          if (dt.RemotingFormat == SerializationFormat.Xml)
                   bData += 1;*/
     if (bNeedParentRelations)
         bData += 2;
     if (bNeedChildRelations)
         bData += 4;
     UQueue.Save(bData);
     UQueue.Save(dt.TableName);
     Push(UQueue, dt.Columns);
     for (n = 0; n < dt.Columns.Count; n++)
     {
         m_dts[n] = GetDT(dt.Columns[n].DataType.FullName);
     }
     UQueue.Save(dt.DisplayExpression);
     UQueue.Save(dt.MinimumCapacity);
     UQueue.Save(dt.Namespace);
     UQueue.Save(dt.Prefix);
     nSize = dt.PrimaryKey.Length;
     UQueue.Save(nSize);
     for (n = 0; n < nSize; n++)
     {
         UQueue.Save(dt.PrimaryKey[n].Ordinal);
     }
     if (bNeedParentRelations)
     {
         Push(UQueue, dt.ParentRelations);
     }
     if (bNeedChildRelations)
     {
         Push(UQueue, dt.ChildRelations);
     }
 }
コード例 #37
0
 internal void Push(CUQueue UQueue, DataRow dr)
 {
     int n;
     bool bNull;
     if (dr == null)
         throw new ArgumentNullException("Datarow object can't be null");
     if (m_dts == null)
         throw new ArgumentNullException("DataTable header is not serialized yet");
     if (m_dts.Length != dr.ItemArray.Length)
         throw new InvalidOperationException("The size of the input data type array does not match the size of data row");
     byte b = 0;
     byte bOne = 1;
     m_qBit.SetSize(0);
     m_qTemp.SetSize(0);
     bool bDelete = (dr.RowState == DataRowState.Deleted);
     if (bDelete)
         dr.RejectChanges();
     object[] data = dr.ItemArray;
     int nLen = m_dts.Length;
     for (n = 0; n < nLen; n++)
     {
         object myData = data[n];
         bNull = (myData == null || myData.Equals(DBNull.Value));
         if (bNull)
         {
             b += (byte)(bOne << (byte)(n % 8));
         }
         if ((n % 8) == 7)
         {
             m_qBit.Save(b);
             b = 0;
         }
         if (bNull)
             continue;
         switch (m_dts[n])
         {
             case tagDataTypeSupported.dtBoolean:
                 m_qTemp.Save((bool)myData);
                 break;
             case tagDataTypeSupported.dtByte:
                 m_qTemp.Save((byte)myData);
                 break;
             case tagDataTypeSupported.dtChar:
                 m_qTemp.Save((char)myData);
                 break;
             case tagDataTypeSupported.dtDateTime:
                 m_qTemp.Save((DateTime)myData);
                 break;
             case tagDataTypeSupported.dtDecimal:
                 m_qTemp.Save((decimal)myData);
                 break;
             case tagDataTypeSupported.dtDouble:
                 m_qTemp.Save((double)myData);
                 break;
             case tagDataTypeSupported.dtFloat:
                 m_qTemp.Save((float)myData);
                 break;
             case tagDataTypeSupported.dtGuid:
                 m_qTemp.Save((Guid)myData);
                 break;
             case tagDataTypeSupported.dtUInt16:
                 m_qTemp.Save((ushort)myData);
                 break;
             case tagDataTypeSupported.dtUInt32:
                 m_qTemp.Save((uint)myData);
                 break;
             case tagDataTypeSupported.dtUInt64:
                 m_qTemp.Save((ulong)myData);
                 break;
             case tagDataTypeSupported.dtInt16:
                 m_qTemp.Save((short)myData);
                 break;
             case tagDataTypeSupported.dtInt32:
                 m_qTemp.Save((int)myData);
                 break;
             case tagDataTypeSupported.dtInt64:
                 m_qTemp.Save((long)myData);
                 break;
             case tagDataTypeSupported.dtString:
                 m_qTemp.Save((string)myData);
                 break;
             case tagDataTypeSupported.dtValue:
             case tagDataTypeSupported.dtValues:
             case tagDataTypeSupported.dtChars:
             case tagDataTypeSupported.dtBytes:
             case tagDataTypeSupported.dtTimeSpan:
                 m_qTemp.Save(myData, false, false);
                 break;
             case tagDataTypeSupported.dtUDT:
                 m_qTemp.Save(myData.ToString());
                 break;
             default:
                 throw new InvalidOperationException("Unsupported data type for serialization");
         }
     }
     if ((n % 8) != 0)
         m_qBit.Save(b);
     UQueue.Push(m_qBit.m_bytes, m_qBit.GetSize());
     UQueue.Push(m_qTemp.m_bytes, m_qTemp.GetSize());
     if (bDelete)
         dr.Delete();
     UQueue.Save((byte)dr.RowState);
     UQueue.Save(dr.HasErrors);
     if (dr.HasErrors)
         UQueue.Save(dr.RowError);
 }
コード例 #38
0
 internal void Push(CUQueue UQueue, DataRelationCollection drc)
 {
     UQueue.Save(drc.Count);
     foreach (DataRelation dr in drc)
     {
         PushTableColNamesOnly(UQueue, dr.ChildColumns);
         UQueue.Save(dr.Nested);
         UQueue.Save(dr.RelationName);
         PushTableColNamesOnly(UQueue, dr.ParentColumns);
     }
 }
コード例 #39
0
 private void Push(CUQueue UQueue, UniqueConstraint uc)
 {
     bool bNull = (uc == null);
     UQueue.Save(bNull);
     if (!bNull)
     {
         Push(UQueue, uc.Columns);
         UQueue.Save(uc.ConstraintName);
         UQueue.Save(uc.IsPrimaryKey);
     }
 }
コード例 #40
0
 private void Push(CUQueue UQueue, ForeignKeyConstraint fkc)
 {
     bool bNull = (fkc == null);
     UQueue.Save(bNull);
     if (!bNull)
     {
         Push(UQueue, fkc.Columns);
         Push(UQueue, fkc.RelatedColumns);
         UQueue.Save(fkc.ConstraintName);
         UQueue.Save((byte)fkc.DeleteRule);
         UQueue.Save((byte)fkc.AcceptRejectRule);
         UQueue.Save((byte)fkc.UpdateRule);
     }
 }
コード例 #41
0
 internal void PushHeader(CUQueue UQueue, DataSet ds)
 {
     byte bData = 0;
     UQueue.SetSize(0);
     /*          if (ds.RemotingFormat == SerializationFormat.Xml)
                   bData += 1;*/
     if (ds.CaseSensitive)
         bData += 2;
     if (ds.EnforceConstraints)
         bData += 4;
     UQueue.Save(ds.Tables.Count);
     UQueue.Save(bData);
     UQueue.Save(ds.DataSetName);
     UQueue.Save(ds.Namespace);
     UQueue.Save(ds.Prefix);
 }
コード例 #42
0
        internal void PushHeader(CUQueue UQueue, IDataReader dr)
        {
            int n;
            int nCount;
            if (dr == null)
                throw new ArgumentNullException("Must pass in a valid data reader object");
            ArrayList al = new ArrayList();
            UQueue.SetSize(0);
            UQueue.Save(dr.FieldCount);
            UQueue.Save(dr.RecordsAffected);
            DataTable dtSchema = dr.GetSchemaTable();
            int nColumnName = dtSchema.Columns.IndexOf("ColumnName");
            int nColumnSize = dtSchema.Columns.IndexOf("ColumnSize");
            int nDataType = dtSchema.Columns.IndexOf("DataType");
            int nIsLong = dtSchema.Columns.IndexOf("IsLong");
            int nAllowDBNull = dtSchema.Columns.IndexOf("AllowDBNull");
            int nIsReadOnly = dtSchema.Columns.IndexOf("IsReadOnly");
            int nIsRowVersion = dtSchema.Columns.IndexOf("IsRowVersion");
            int nIsUnique = dtSchema.Columns.IndexOf("IsUnique");
            int nIsKey = dtSchema.Columns.IndexOf("IsKey");
            int nIsAutoIncrement = dtSchema.Columns.IndexOf("IsAutoIncrement");
            m_dts = new tagDataTypeSupported[dr.FieldCount];
            for (n = 0; n < dr.FieldCount; n++)
            {
                tagDataTypeSupported dts = GetDT(dr.GetFieldType(n));
                m_dts[n] = dts;
                UQueue.Save((short)dts);
            }
            foreach (DataRow row in dtSchema.Rows)
            {
                int nData = 0;
                string str = null;
                if (nIsAutoIncrement != -1)
                {
                    if (row[nIsAutoIncrement].Equals(true))
                        nData |= (int)tagColumnBit.cbIsAutoIncrement;
                }

                if (nIsKey != -1)
                {
                    if (row[nIsKey].Equals(true))
                        nData |= (int)tagColumnBit.cbIsKey;
                }

                if (nAllowDBNull != -1)
                {
                    if (row[nAllowDBNull].Equals(true))
                        nData |= (int)tagColumnBit.cbAllowDBNull;
                }

                if (nIsReadOnly != -1)
                {
                    if (row[nIsReadOnly].Equals(true))
                        nData |= (int)tagColumnBit.cbIsReadOnly;
                }

                if (nIsRowVersion != -1)
                {
                    if (row[nIsRowVersion].Equals(true))
                        nData |= (int)tagColumnBit.cbIsRowVersion;
                }

                if (nIsUnique != -1)
                {
                    if (row[nIsUnique].Equals(true))
                        nData |= (int)tagColumnBit.cbIsUnique;
                }

                if (nIsLong != -1)
                {
                    if (row[nIsLong].Equals(true))
                        nData |= (int)tagColumnBit.cbIsLong;
                }

                UQueue.Save(nData);

                nData = 0;
                if (nColumnSize != -1)
                {
                    nData = (int)row[nColumnSize];
                }
                UQueue.Save(nData);

                if (nColumnName != -1)
                {
                    str = (string)row[nColumnName];
                    nCount = CountNames(al, str);
                    if (nCount > 0)
                        str += nCount.ToString();
                    al.Add(str);
                }
                UQueue.Save(str);
            }
        }