public ConvertToStream ( ) : |
||
Résultat |
private void SendPrivateMessage(int server, PrivateMessageActions action, Guid serviceId, string contentId, byte[] data, Guid ownerId, string channelName) { if (server <= 0) return; var channel = server + ServiceChannelExtentions; var pm = new PrivateMessage { Action = action, Sender = client.Id, Id = serviceId, ContentId = contentId, Content = data, OwnerId = ownerId, Channel = channelName }; var content = pm.ConvertToStream().ToArray(); client.Imb.SignalBuffer(channel, 0, content); }
public void SendPrivateMessage(int pToImbHandle, PrivateMessage pm){ if (pToImbHandle <= 0) return; var channel = pToImbHandle + ServiceChannelExtentions; var content = pm.ConvertToStream().ToArray(); switch(pm.Action) { case PrivateMessageActions.Subscribe: var s = Services.FirstOrDefault(k => k.Id == pm.Id); LogImbService.LogMessage(String.Format("Request IMB client {0} that host service '{1}'({2}) add IMB client {4} to subscriptionlist (Action Subscribe)", AppState.Imb.ImbClientHandleToName(pToImbHandle), s != null ? s.Name : "-", pm.Id, channel, AppState.Imb.ImbClientHandleToName(pm.Sender))); break; case PrivateMessageActions.ServiceReset: var s1 = Services.FirstOrDefault(k => k.Id == pm.Id); LogImbService.LogMessage(String.Format("Request IMB client {0} that host service '{1}'({2}) to send (channel={3}) content of service to IMB client {4} (Action ListReset)", AppState.Imb.ImbClientHandleToName(pToImbHandle), s1 != null ? s1.Name : "-", pm.Id, channel, AppState.Imb.ImbClientHandleToName(pm.Sender))); break; } client.Imb.SignalBuffer(channel, 0, content); }
/// <summary> /// Send all content lists from a service to a client /// </summary> /// <param name="sender"></param> /// <param name="serviceId"></param> private void SendServiceReset(int sender /* IMB client handle */, Guid serviceId, int priority) { var s = Services.FirstOrDefault(k => k.Id == serviceId); var channel = sender + ServiceChannelExtentions; var sb = new StringBuilder(); sb.AppendLine(String.Format("{0}Send complete content of service '{1}' ({2}) to IMB client {3} (channel={4}) (action ListReset, {5} IMB messages used)", Environment.NewLine, s.Name, serviceId, AppState.Imb.ImbClientHandleToName(sender), channel, s.AllContent.Count())); int contentNumber = 0; foreach (var cl in s.AllContent) { try { contentNumber++; var pm = new PrivateMessage { Action = PrivateMessageActions.ListReset, Sender = client.Id, Id = serviceId }; using (var ms = new MemoryStream()) { var st = cl.ToList().Where(k => k.Priority <= priority).ToList(); Model.SerializeWithLengthPrefix(ms, st, typeof(List<BaseContent>), PrefixStyle.Base128, 72); pm.Content = ms.ToArray(); pm.Channel = cl.Id; if (cl == s.AllContent.First()) pm.ContentId = "First"; if (cl == s.AllContent.Last()) pm.ContentId = "Last"; client.Imb.SignalBuffer(channel, 0, pm.ConvertToStream().ToArray()); sb.AppendLine(string.Format("{0}.) Content types '{1}': ", contentNumber, cl.Id)); var count = 1; if (st.Count == 0) sb.AppendLine(string.Format("No items")); foreach (var x in st) { sb.AppendLine(string.Format("{1}.{2}){0}{3} ", Environment.NewLine, contentNumber, count, x.ToXml().ToString())); count++; } } } catch (Exception ex) { LogImbService.LogException(string.Format("SendServiceReset failed (broadcast service content on IMB)"), ex); } } LogImbService.LogMessage(sb.ToString()); }