void HandleCharacterUpdate(OperationCompleteEvent data) { if (data.Success == false) { Log.Write(LogLevel.Warning, "Error updating quest tracker for user."); } }
private void SyncContactList(OperationCompleteEvent opCompleteEvent) { // send sync command notifyRouter.SendMessage( Message.ConstructMessage("SYN", this.settings.ContactListVersion.ToString()), new ResponseReceivedHandler(OnSynResponse), opCompleteEvent); }
/// <summary> /// Begins a conversation with the specified friend. /// </summary> /// <param name="friend"></param> /// <param name="byinvite">Whether the conversation has been initiated by the user or by the plugin</param> /// <param name="tag">Plugin-defined object</param> /// <param name="opCompleteEvent"></param> public void StartConversation(Friend friend, bool byinvite, object tag, OperationCompleteEvent opCompleteEvent) { if (this.conversationTable.Contains(friend)) { MessageForm messageForm = (MessageForm)this.conversationTable[friend]; if (!byinvite) { messageForm.BringToFront(); } } else { MessageForm messageForm = new MessageForm(this, friend); messageForm.Closed += new EventHandler(OnMessageFormClosed); if (!byinvite) { messageForm.Show(); } messageForm.Connect(byinvite, tag, opCompleteEvent); conversationTable.Add(friend, messageForm); } }
public void BlockFriend(Friend friend, OperationCompleteEvent opCompleteEvent) { this.AddContactToList(ListType.Allow, friend, false); this.AddContactToList(ListType.Block, friend, true); opCompleteEvent.Execute(new OperationCompleteArgs()); }
/// <summary> /// Unblock a friend. /// </summary> /// <param name="friend"></param> /// <param name="op"></param> public void UnblockFriend(Friend friend, OperationCompleteEvent op) { this.protocol.UnblockFriend(friend, op); this.protocolServer.UnblockFriend(friend); op.RegisterEvent(new OperationCompleteHandler(OnUnblockFriendCompleted), friend); }
/// <summary> /// Connect the protocol. /// </summary> /// <param name="opCompleteEvent"></param> public void Connect(OperationCompleteEvent opCompleteEvent) { if (!this.isConnected && this.settings.Enabled) { this.isConnecting = true; this.protocolServer.OnBeginConnect(); opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnConnectionComplete)); // abort the connection thread if exists if (this.connectionThread != null) { try { if (this.connectionThread.IsAlive) { this.connectionThread.Abort(); } } catch {} this.connectionThread = null; } // start the connection on a new thread. this.connectionThread = new ArgThread(new ConnectHandler(pConnect)); this.connectionThread.Start(new object[] { opCompleteEvent }); } }
/// <summary> /// Handler for the thread created by Connect(). /// </summary> /// <param name="opCompleteEvent"></param> private void pConnect(OperationCompleteEvent opCompleteEvent) { // create IProtocol derived class this.protocol = this.classFactory.CreateProtocol(this.protocolControl, this.settings); this.protocol.Connect(opCompleteEvent); Thread.Sleep(connectionTimeout); }
/// <summary> /// Connect the conversation up. /// </summary> /// <param name="byinvite">True if the conversation was initiated by someone on the contact list, false if the user clicked on the name</param> /// <param name="tag">If the conversation was started by someone on the contact list, this is a plugin-defined object</param> /// <param name="opCompleteEvent"></param> public void Connect(bool byinvite, object tag, OperationCompleteEvent opCompleteEvent) { this.conversationServer = new ConversationServer(this.protocol.Server); this.conversationServer.AddListener(this); this.conversationServer.AddListener(log); this.conversation = this.protocol.ClassFactory.CreateConversation( this.protocol.IProtocol, new ConversationControl(this.conversationServer), this.protocol.Settings); opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnConnectionComplete)); if (byinvite) { this.conversation.StartByInvitation(this.originalFriend, opCompleteEvent, tag); } else { this.conversation.Start(this.originalFriend, opCompleteEvent); } this.connectionInProgress = true; }
private void ShowStats(AgentPrivate agent) { ModalDialog modalDialog = agent.Client.UI.ModalDialog; OperationCompleteEvent result = (OperationCompleteEvent)WaitFor(modalDialog.Show, getVisitorMessage(), "OK", "Reset"); if (result.Success && modalDialog.Response == "Reset") { WaitFor(modalDialog.Show, "Are you sure you want to reset visitor counts?", "Yes!", "Cancel"); if (modalDialog.Response == "Yes!") { // Make a new dictionary of everyone still here to replace the current tracking info. Dictionary <string, Visitor> stillHere = Visitors; Visitors = new Dictionary <string, Visitor>(); foreach (var visitor in stillHere) { Visitor v = new Visitor(); v.TotalTime = TimeSpan.Zero; v.VisitStarted = Stopwatch.GetTimestamp(); v.Here = true; Visitors[visitor.Key] = v; } WaitFor(modalDialog.Show, "Visitor times reset.", "", "Ok"); } } }
public void StartByInvitation(Friend friend, OperationCompleteEvent opCompleteEvent, object tag) { object[] objs = (object[])tag; string sbIP = (string)objs[0]; int sbPort = (int)objs[1]; string hash = (string)objs[2]; string sessionID = (string)objs[3]; try { Proxy.IConnection conn = this.control.CreateConnection(); conn.Connect("", 0, sbIP, sbPort, Proxy.ConnectionType.Tcp); sbRouter = new MessageRouter(this.protocol, conn, null, null); RegisterCodeEvents(); sbRouter.SendMessage(Message.ConstructMessage("ANS", this.settings.Username + " " + hash + " " + sessionID), new ResponseReceivedHandler(OnAnswerResponse), opCompleteEvent); } catch { opCompleteEvent.Execute(new OperationCompleteArgs("Could not connect", true)); } }
private void OnPasswordSentResponse(MessageRouter router, Message message, object tag) { router.RemoveMessageEvent(message); OperationCompleteEvent op = (OperationCompleteEvent)tag; switch (message.Code) { case "USR": { // find our screen name Regex.Regex regex = new Regex.Regex(@"OK (?<email>\S+)\s+(?<screenName>\S+)"); Regex.Match match = regex.Match(message.Header); if (!match.Success) { op.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.InvalidProtocol)); } else { settings.DisplayName = this.UriUnquote(match.Groups["screenName"].Value); // now we have to set our initial status. this.ChangeStatus(this.settings.Status, new ResponseReceivedHandler(OnInitialStatusSet), tag); } } break; case "911": // authentication failed op.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.AuthFailed)); break; } }
private void DoAuthentication(MessageRouter router, OperationCompleteEvent opCompleteEvent) { string versionString = string.Join(" ", supportedProtocols); // send supported versions router.SendMessage(Message.ConstructMessage("VER", versionString), new ResponseReceivedHandler(OnVersionResponse), opCompleteEvent); }
public void Say(string text, OperationCompleteEvent opCompleteEvent) { string mimeHeader = "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\nX-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; CO=000000; CS=0; PF=22\r\n\r\n"; int length = mimeHeader.Length + text.Length; sbRouter.SendMessage(Message.ConstructMessage("MSG", "A " + length + "\r\n" + mimeHeader + text), new ResponseReceivedHandler(OnSayAck), opCompleteEvent, false); }
public void RemoveFriendFromList(Friend friend, OperationCompleteEvent opCompleteEvent) { this.AddContactToList(ListType.Allow, friend, false); this.AddContactToList(ListType.Forward, friend, false); this.control.RemoveFriend(friend); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void End(OperationCompleteEvent opCompleteEvent) { if (sbRouter != null) { sbRouter.SendMessage(Message.ConstructMessage("OUT", string.Empty, string.Empty, false)); sbRouter.Close(); } opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void Disconnect(OperationCompleteEvent opCompleteEvent) { this.messageRouter.ExpectingDisconnection = true; this.messageRouter.Close(); this.messageRouter = null; conversationTable.Clear(); opCompleteEvent.Execute(new OperationCompleteArgs()); pingTimer.Stop(); }
private void OnSwitchBoardUsrResponse(MessageRouter router, Message message, object tag) { object[] objs = (object[])tag; Friend friend = (Friend)objs[0]; OperationCompleteEvent e = (OperationCompleteEvent)objs[1]; this.InviteFriend(friend, e); router.RemoveMessageEvent(message); }
public void SendTypingNotification(OperationCompleteEvent opCompleteEvent) { string body = "MIME-Version: 1.0\r\n" + "Content-Type: text/x-msmsgscontrol\r\n" + "TypingUser: "******"\r\n\r\n\r\n"; this.sbRouter.SendMessage(Message.ConstructMessage("MSG", "U " + body.Length, body, true), false); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void StartByInvitation(Friend friend, OperationCompleteEvent opCompleteEvent, object tag) { this.friend = friend; opCompleteEvent.Execute(new OperationCompleteArgs()); Message message = (Message)tag; this.control.FriendSay(friend, message.GetArgumentString(14)); this.protocol.conversationTable.Add(friend.Username, this); }
void HandleCharacterUpdate(OperationCompleteEvent data, CharacterTracker tracker) { if (data.Success) { tracker.Subscribe((subdata) => HandleCharacterSubscribe(subdata, tracker)); } else { Log.Write(LogLevel.Warning, "Error updating quest tracker for user."); } }
private void OnBarComplete(AgentInfo agentInfo, OperationCompleteEvent completeEvent) { if (completeEvent.Success) { SendToAll(OnCompletion, GetEventData(agentInfo)); } else { SendToAll(OnCancel, GetEventData(agentInfo)); } }
private string do_dialog(AgentPrivate agent, string text) { ModalDialog dialog = agent.Client.UI.ModalDialog; OperationCompleteEvent result = (OperationCompleteEvent)WaitFor(dialog.Show, text, "Yes", "No"); if (result.Success) { return(dialog.Response); } return(""); }
public void UnblockFriend(Friend friend, OperationCompleteEvent opCompleteEvent) { Message message = new Message(this.sessionID, YahooService.IgnoreContact); message.AddArgument(1, this.settings.Username); message.AddArgument(7, friend.Username); message.AddArgument(13, "2"); this.messageRouter.SendMessage(message); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void AddFriendToList(string username, string message, OperationCompleteEvent opCompleteEvent) { Friend f = new Friend(username, OnlineStatus.Offline, 0); this.AddContactToList(ListType.Allow, f, true); this.AddContactToList(ListType.Forward, f, true); this.control.AddFriend(f); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void RemoveFriendFromList(Friend friend, OperationCompleteEvent opCompleteEvent) { Message message = new Message(this.sessionID, YahooService.RemoveBuddy); message.AddArgument(1, this.settings.Username); message.AddArgument(7, friend.Username); message.AddArgument(65, (string)friend.GroupIdentifier); this.messageRouter.SendMessage(message); this.control.RemoveFriend(friend); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void Connect(OperationCompleteEvent opCompleteEvent) { try { Proxy.IConnection con = this.control.CreateConnection(); con.Connect("", 0, settings.ServerHost, settings.ServerPort, Proxy.ConnectionType.Tcp); dispatchRouter = new MessageRouter(this, con, null, null); DoAuthentication(dispatchRouter, opCompleteEvent); } catch { opCompleteEvent.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.ConnectionFailed)); } }
/// <summary> /// Change the user's status /// </summary> /// <param name="status"></param> /// <param name="opCompleteEvent"></param> public void ChangeStatus(OnlineStatus status, OperationCompleteEvent opCompleteEvent) { if (this.isConnected) { // if connected, change status through protocol opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnStatusChangeComplete), status); this.protocol.ChangeStatus(status, opCompleteEvent); } else { // else change the initial status pChangeStatus(status); } }
internal void SendTypingNotification(Friend friend, OperationCompleteEvent opCompleteEvent) { Message message = new Message(this.sessionID, YahooService.Notify, YahooStatus.Typing); message.AddArgument(49, "TYPING"); message.AddArgument(1, this.username); message.AddArgument(14, " "); message.AddArgument(13, "1"); message.AddArgument(5, friend.Username); message.AddArgument(1002, "1"); this.messageRouter.SendMessage(message); opCompleteEvent.Execute(new OperationCompleteArgs()); }
public void AddFriendToList(string username, string friendMessage, OperationCompleteEvent opCompleteEvent) { Message message = new Message(this.sessionID, YahooService.AddBuddy); message.AddArgument(1, this.settings.Username); message.AddArgument(7, username); message.AddArgument(14, friendMessage); message.AddArgument(65, this.defaultGroup); this.messageRouter.SendMessage(message); this.control.AddFriend(new Friend(username, OnlineStatus.Offline, this.defaultGroup)); opCompleteEvent.Execute(new OperationCompleteArgs()); }
/// <summary> /// Disconnects the protocol. /// </summary> /// <param name="opCompleteEvent"></param> public void Disconnect(OperationCompleteEvent opCompleteEvent) { // if disconnect is called whilst we are connecting, abort the connection thread. if (this.isConnecting = true || this.connectionThread != null) { opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnCancelationComplete)); this.protocol.CancelConnection(opCompleteEvent); } if (this.isConnected) { opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnDisconnectionComplete)); this.protocol.Disconnect(opCompleteEvent); } }