public void SendMessage(string msg) { if (Server.Connected) { Server.Send("PRIVMSG " + this.Name + " :" + msg); } else { if (OnStatusMessage != null) { OnStatusMessage.Invoke("Not Connected to IRC."); } } }
private void ExecuteTransfer() { var informationPanel = InformationPanel.GetInformationPanel(this, "Starting playlist transfer...", 340, 150); btnCancel.Visible = true; bwTransferData = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; bwTransferData.DoWork += (sender, e) => { var worker = (BackgroundWorker)sender; var errors = new List <Item <string, string> >(); var autoMappings = new List <Item <EntityReference, EntityReference> >(); #region Auto-mappings OnStatusMessage?.Invoke(this, new StatusBarMessageEventArgs(1, "Retrieving root Business Units...")); // Add BU mappings var bumapping = AutoMappings.GetRootBusinessUnitMapping(sourceService, targetService); if (bumapping != null) { autoMappings.Add(bumapping); } OnStatusMessage?.Invoke(this, new StatusBarMessageEventArgs(1, "Retrieving default transaction currencies...")); var tcmapping = AutoMappings.GetDefaultTransactionCurrencyMapping(sourceService, targetService); if (tcmapping != null) { autoMappings.Add(tcmapping); } OnStatusMessage?.Invoke(this, new StatusBarMessageEventArgs(1, "Retrieving systemuser mappings...")); var sumapping = AutoMappings.GetSystemUsersMapping(sourceService, targetService); if (sumapping != null) { autoMappings.AddRange(sumapping); } #endregion Auto-mappings for (int i = 0; i < list.Items.Count; i++) { var item = list.Items[i]; var entitymeta = sourceService.RetrieveEntity(item.Setting.LogicalName); var attributes = entitymeta.Attributes .Where(a => (a.IsValidForCreate != null && a.IsValidForCreate.Value))// || (a.IsValidForUpdate != null && a.IsValidForUpdate.Value)) .Where(a => a.IsValidForRead != null && a.IsValidForRead.Value) .Where(a => a.DisplayName != null && a.DisplayName.UserLocalizedLabel != null && !string.IsNullOrEmpty(a.DisplayName.UserLocalizedLabel.Label)) .Where(a => !item.Setting.UnmarkedAttributes.Any(ua => ua.Equals(a.LogicalName))) .ToList(); var entity = new AppCode.EntityRecord(entitymeta, attributes, item.Actions, bwTransferData, sourceService, targetService); worker.ReportProgress((i / list.Items.Count), string.Format("Transfering entity '{0}'...", entity.Name)); try { entity.Filter = item.Setting.Filter; entity.Mappings = autoMappings; entity.Mappings.AddRange(item.Setting.Mappings); entity.OnStatusMessage += OnStatusMessage; entity.Transfer(useBulk, bulkCount); errors.AddRange(entity.Messages.Select(m => new Item <string, string>(entity.Name, m))); } catch (FaultException <OrganizationServiceFault> error) { errors.Add(new Item <string, string>(entity.Name, error.Message)); } } e.Result = errors; }; bwTransferData.RunWorkerCompleted += (sender, e) => { btnCancel.Visible = false; btnCancel.Text = @"Cancel"; Controls.Remove(informationPanel); informationPanel.Dispose(); //SendMessageToStatusBar(this, new StatusBarMessageEventArgs(string.Empty)); // keep showing transfer results afterwards var errors = (List <Item <string, string> >)e.Result; if (errors.Count > 0) { var errorDialog = new ErrorList((List <Item <string, string> >)e.Result); errorDialog.ShowDialog(ParentForm); } }; bwTransferData.ProgressChanged += (sender, e) => { InformationPanel.ChangeInformationPanelMessage(informationPanel, e.UserState.ToString()); OnStatusMessage?.Invoke(this, new StatusBarMessageEventArgs(e.ProgressPercentage * 100, e.UserState.ToString())); }; bwTransferData.RunWorkerAsync(); }
private void OnMessage(Message m) { Event.Invoke(this, Event.ServerEventType.Message, m); switch (m.Command.ToUpper()) { case "NOTICE": if (OnNotice != null) { OnNotice.Invoke(this, m); } break; case "TOPIC": // --> :[email protected] TOPIC #davux :Test topic { Channel c = FindChannel(m.Target); if (c != null) { c.ChangeTopic(new User(this, m.Prefix), m.ListString); } else { Trace.WriteLine("IRC/Server/OnMessage/TOPIC: Invalid Channel for TOPIC: " + m); } } break; case "PRIVMSG": if (m.ListString == "\x001VERSION\x001") { Notice(m.PrefixNick, "\x001VERSION irc.net ALPHA " + Assembly.GetExecutingAssembly().GetName().Version + " " + Environment.OSVersion.Platform + "\x001"); } else if (m.Target.ToLower() == Nick.ToLower()) { Channel cf = FindChannel(m.PrefixNick); User u = new User(this, m.Prefix); if (cf != null) { cf.MessageRcv(u, m.ListString); } else { Channel cn = new Channel(this, m.PrefixNick); Channels.Add(cn); if (OnJoined != null) { OnJoined.Invoke(this, cn); } cn.MessageRcv(u, m.ListString); } } else { Channel cf = FindChannel(m.Target); User u = new User(this, m.Prefix); if (cf != null) { cf.MessageRcv(u, m.ListString); } else { Channel cn = new Channel(this, m.Target); cn.MessageRcv(u, m.ListString); Channels.Add(cn); if (OnJoined != null) { OnJoined.Invoke(this, cn); } } } break; case "JOIN": { if (m.PrefixNick.ToLower() == Nick.ToLower()) { // i joined a channel! Channel c = new Channel(this, m.Target); if (OnJoined != null) { OnJoined.Invoke(this, c); // Thread.Sleep(1000); } Channels.Add(c); } else { // someone joined a channel that im on Channel c = FindChannel(m.Target); if (c != null) { User ux = new User(this, m.Prefix); if (ux != null) { c.JoinUser(ux, true); } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid User for JOIN: " + m); } } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid Channel for JOIN: " + m); } } break; } case "376": if (OnStatusMessage != null) { OnStatusMessage.Invoke(this, m); } if (!autoJoined) { autoJoined = true; if (OnConnected != null) { OnConnected.Invoke(this); } JoinAutoChannels(); } break; case "005": { string[] parts = m.AfterCommandString.Split(' '); foreach (string p in parts) { if (p.ToUpper().StartsWith("NETWORK=")) { // p is network Network = p.Remove(0, 8); } else if (p.ToUpper().StartsWith("PREFIX=")) { ChannelModes = new ChannelModes(p.Remove(0, 7)); } } } break; case "MODE": // :DaveTest MODE DaveTest :+iwx // :irc.aohell.org MODE #davux +nt if (!autoJoined) { autoJoined = true; if (OnConnected != null) { OnConnected.Invoke(this); } JoinAutoChannels(); } if (m.Target == Nick) { // TODO own modes ParseOwnModes(m.ListString); } else if (m.TargetIsChannel) { // setting chan modes Channel ct = FindChannel(m.Target); if (ct != null) { User u = ct.FindUser(m.PrefixNick); if (u != null) { u.SetMask(m.Prefix); } else { u = new User(this, m.Prefix); } ct.SetModes(u, m.AfterCommandString.Substring(m.AfterCommandString.IndexOf(' ')).Trim()); } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid Channel to MODE: " + m); } } break; case "KICK": // --> :[email protected] KICK #davux DavXn :DavX- { Channel c = FindChannel(m.Target); User kicker = c.FindUser(m.PrefixNick); User kicked = c.FindUser(m.Arg2); if (kicker == null || kicked == null) { Trace.WriteLine("IRC/Server/OnMessage/KICK: No kicker or kicked " + m); } else { if (c != null) { c.KickUser(kicked, kicker, m.ListString); } else { Trace.WriteLine("IRC/Server/OnMessage/KICK No Channel: " + m); } } } break; case "PART": if (m.PrefixNick.ToLower() == Nick.ToLower()) { // i left a channel! Channel c = FindChannel(m.Target); if (c != null) { //c.Part(); Channels.Remove(c); if (OnParted != null) { OnParted.Invoke(this, c); } } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid Channel for PART: " + m); } } else { // someone left a channel that im on Channel c = FindChannel(m.Target); if (c != null) { User ud = c.FindUser(m.PrefixNick); ud.SetMask(m.Prefix); if (ud != null) { c.PartUser(ud, m.ListString, true); } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid User for PART: " + m); } } else { Trace.WriteLine("IRC/Server/OnMessage: Invalid Channel for PART: " + m); } } break; case "353": { string[] parts = m.ListString.Split(' '); Channel c = FindChannel(m.Arg3); if (c != null) { foreach (string p in parts) { if (!string.IsNullOrEmpty(p)) { string px = p; if ("" != ChannelModes.ModeForSymbol(px.Substring(0, 1))) { px = px.Remove(0, 1); } bool add = true; foreach (User u in c.Users) { if (u.Nick.ToLower() == px) { add = false; break; } } if (add) { c.JoinUser(new User(this, p), false); } } } } else { Trace.WriteLine("IRC/Server/OnMessage/353: Invalid Channel: " + m); } } break; // --> :irc.aohell.org 332 DavXn #davux :This is the topic message // --> :irc.aohell.org 333 DavXn #davux DavX- 1260079684 case "332": { Channel chan = FindChannel(m.Arg2); if (chan != null) { chan.Topic = m.ListString; } else { Trace.WriteLine("IRC/Server/OnMessage/332: Invalid channel: " + m); } } break; case "333": { Channel c = FindChannel(m.Arg2); if (c != null) { User u = new User(this, m.Arg3); c.TopicDetails(u, m.Arg4); } else { Trace.WriteLine("IRC/Server/OnMessage/333: Invalid channel: " + m); } } break; case "366": // no action. break; case "433": // --> :irc.redwolfs.net 433 * DavXn :Nickname is already in use. if (OnStatusMessage != null) { OnStatusMessage.Invoke(this, m); } Send("NICK " + Profile.GetNick(m.Arg2)); break; case "NICK": { string oldNick = m.PrefixNick; string newNick = m.Target; if (oldNick.ToLower() == Nick.ToLower()) { Nick = newNick; } foreach (Channel c in Channels) { c.NickChanged(oldNick, newNick); } /* * if (OnNickChanged != null) * { * OnNickChanged.Invoke(oldNick, newNick); * } */ } break; case "001": if (m.Target != Nick) { string oldNick = Nick; Nick = m.Target; if (OnNickChanged != null) { OnNickChanged.Invoke(oldNick, Nick); } } if (OnStatusMessage != null) { OnStatusMessage.Invoke(this, m); } break; case "QUIT": // :[email protected] QUIT :Quit: Clfloat { User u = new User(this, m.Prefix); if (OnUserQuit != null) { OnUserQuit(this, u, m.ListString); } foreach (Channel c in Channels) { c.UserQuit(u, m.ListString); } } break; default: if (OnStatusMessage != null) { OnStatusMessage.Invoke(this, m); } break; } }