private static string ToString(CMessageSender ms) { return(string.Format("Sender attributes = (ip = {0}, port = {1}, self = {2}, service id = {3}, userid = {4})", ms.IpAddress, ms.Port, ms.SelfMessage, ms.SvsID, ms.UserId)); }
private void Push_OnPublish(CClientSocket sender, CMessageSender messageSender, uint[] group, object msg) { //this event is fired from worker thread from socket pool thread string message = "", filter = ""; List <KeyValuePair <DataColumn, object> > vKeyVal = new List <KeyValuePair <DataColumn, object> >(); object[] vData = (object[])msg; //vData[0] == event type; vData[1] == host; vData[2] = user; vData[3] == db name; vData[4] == table name tagUpdateEvent ue = (tagUpdateEvent)(int)vData[0]; string table_name = vData[3].ToString() + "." + vData[4].ToString(); lock (m_cs) { DataTable dt = m_ds.Tables[table_name]; if (dt == null) { return; } DataColumn[] keys = dt.PrimaryKey; int cols = dt.Columns.Count; switch (ue) { case tagUpdateEvent.ueUpdate: { foreach (DataColumn dc in keys) { KeyValuePair <DataColumn, object> kv = new KeyValuePair <DataColumn, object>(dc, vData[5 + 2 * dc.Ordinal]); vKeyVal.Add(kv); } DataRow dr = FindRowByKeys(dt, vKeyVal, ue, out filter); for (int n = 0; n < cols; ++n) { if (dt.Columns[n].ReadOnly) { continue; } object d = vData[5 + 2 * n + 1]; dr[n] = d; } message = "Table " + table_name + " updated for row (" + filter + ")"; } break; case tagUpdateEvent.ueDelete: { int index = 0; foreach (DataColumn dc in keys) { KeyValuePair <DataColumn, object> kv = new KeyValuePair <DataColumn, object>(dc, vData[5 + index]); vKeyVal.Add(kv); ++index; } dt.Rows.Remove(FindRowByKeys(dt, vKeyVal, ue, out filter)); message = "Table " + table_name + " deleted for row (" + filter + ")"; } break; case tagUpdateEvent.ueInsert: { foreach (DataColumn dc in keys) { KeyValuePair <DataColumn, object> kv = new KeyValuePair <DataColumn, object>(dc, vData[5 + dc.Ordinal]); vKeyVal.Add(kv); } DataRow dr = FindRowByKeys(dt, vKeyVal, ue, out filter); //generate filter only dr = dt.NewRow(); for (int n = 0; n < cols; ++n) { dr[n] = vData[5 + n]; } dt.Rows.Add(dr); message = "Table " + table_name + " inserted for row (" + filter + ")"; } break; default: message = "Unknown DB message found"; //shouldn't come here break; } BeginInvoke(m_thread_message, message, dt); } }
internal void OnPUMessageEx(IntPtr handler, CMessageSender sender, byte[] msg) { if (OnSendUserMessageEx != null) { OnSendUserMessageEx.Invoke(m_cs, sender, msg); } }
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; }
internal void OnPUMessage(IntPtr handler, CMessageSender sender, object vtMessage) { if (OnSendUserMessage != null) { OnSendUserMessage.Invoke(m_cs, sender, vtMessage); } }
internal void OnB(IntPtr handler, CMessageSender sender, uint[] group, uint count, object vtMessage) { if (OnPublish != null) { OnPublish.Invoke(m_cs, sender, group, vtMessage); } }
internal void OnBEx(IntPtr handler, CMessageSender sender, uint[] group, uint count, byte[] message, uint size) { if (OnPublishEx != null) { OnPublishEx.Invoke(m_cs, sender, group, message); } }
internal void OnExit(IntPtr handler, CMessageSender sender, uint[] group, uint count) { if (OnUnsubscribe != null) { OnUnsubscribe.Invoke(m_cs, sender, group); } }
private static string ToString(CMessageSender ms) { return string.Format("Sender attributes = (ip = {0}, port = {1}, self = {2}, service id = {3}, userid = {4})", ms.IpAddress, ms.Port, ms.SelfMessage, ms.SvsID, ms.UserId); }