private void OnPUMessageEx(IntPtr handler, IntPtr senderCe, IntPtr message, uint size) { CMessageSenderCe msc = new CMessageSenderCe(); System.Runtime.InteropServices.Marshal.PtrToStructure(senderCe, msc); byte[] msg = new byte[size]; System.Runtime.InteropServices.Marshal.Copy(message, msg, 0, (int)size); m_PushImpl.OnPUMessageEx(handler, ToMessageSender(msc), msg); }
private void OnBEx(IntPtr handler, IntPtr senderCe, IntPtr groups, uint count, IntPtr message, uint size) { CMessageSenderCe msc = new CMessageSenderCe(); System.Runtime.InteropServices.Marshal.PtrToStructure(senderCe, msc); using (CScopeUQueue su = new CScopeUQueue()) { ushort vt = (ushort)(tagVariantDataType.sdVT_ARRAY | tagVariantDataType.sdVT_UI4); su.UQueue.Save(vt); su.UQueue.Save(count); su.UQueue.Push(groups, count * sizeof(uint)); object obj; su.UQueue.Load(out obj); byte[] msg = new byte[size]; if (size > 0) { System.Runtime.InteropServices.Marshal.Copy(message, msg, 0, (int)size); } m_PushImpl.OnBEx(handler, ToMessageSender(msc), (uint[])obj, count, msg, size); } }
private void OnPUMessage(IntPtr handler, IntPtr senderCe, IntPtr message, uint size) { CMessageSenderCe msc = new CMessageSenderCe(); System.Runtime.InteropServices.Marshal.PtrToStructure(senderCe, msc); using (CScopeUQueue su = new CScopeUQueue()) { object msg; su.UQueue.Push(message, size).Load(out msg); m_PushImpl.OnPUMessage(handler, ToMessageSender(msc), msg); } }
private void OnExit(IntPtr handler, IntPtr senderCe, IntPtr groups, uint count) { CMessageSenderCe msc = new CMessageSenderCe(); System.Runtime.InteropServices.Marshal.PtrToStructure(senderCe, msc); using (CScopeUQueue su = new CScopeUQueue()) { ushort vt = (ushort)(tagVariantDataType.sdVT_ARRAY | tagVariantDataType.sdVT_UI4); su.UQueue.Save(vt); su.UQueue.Save(count); su.UQueue.Push(groups, count * sizeof(uint)); object obj; su.UQueue.Load(out obj); m_PushImpl.OnExit(handler, ToMessageSender(msc), (uint[])obj, count); } }
private CMessageSender ToMessageSender(CMessageSenderCe senderCe) { CMessageSender sender = new CMessageSender(); sender.UserId = senderCe.UserId; unsafe { sender.IpAddress = new string((sbyte*)senderCe.IpAddress); } sender.Port = senderCe.Port; sender.SelfMessage = (senderCe.SelfMessage != 0); sender.SvsID = senderCe.SvsID; return sender; }