public void AddPermanentEvent(YahooService service, ResponseReceivedHandler messageHandler, object tag)
 {
     if (!permanentEvents.Contains(service))
         permanentEvents.Add(service, new Pair(messageHandler, tag));
     else
         permanentEvents[service] = new Pair(messageHandler, tag);
 }
 public void AddOneTimeEvent(YahooService service, ResponseReceivedHandler messageHandler, object tag)
 {
     if (!this.oneTimeEvents.Contains(service))
         this.oneTimeEvents.Add(service, new Pair(messageHandler, tag));
     else
         this.oneTimeEvents[service] = new Pair(messageHandler, tag);
 }
Example #3
0
        /// <summary>
        /// Sends a text command to the gdb process. This method may block if the
        /// stdin of the gdb process is currently blocked.
        /// </summary>
        /// <param name="cmd"></param>
        public virtual void SendCmd(string cmd, ResponseReceivedHandler handler)
        {
            if (Status == StatusEnum.Terminated || Status == StatusEnum.Terminating)
            {
                throw new GdbException("Cannot send command, internal gdb is not active");
            }

            //Wait until we are allowed to enter
            gdbReadyEvent.WaitOne();

            //Set the response callback for this caller
            responseReceivedCallback = handler;

            //If terminating or terminated, immediately notify client with a null reply
            if (Status == StatusEnum.Terminating || Status == StatusEnum.Terminated)
            {
                if (responseReceivedCallback != null)
                {
                    responseReceivedCallback(this, null);
                }
                return;
            }

            //OK, set status to ReplyPending and submit command to gdb
            Status = StatusEnum.ReplyPending;
            Logger.Instance.Debug("[gdb] <- " + cmd);
            writer.WriteLine(cmd);
        }
Example #4
0
    private void SendNotifyMessage(Message message, ResponseReceivedHandler response, object tag, bool addLineEnding)
    {
        this.notifyRouter.SendMessage(message, response, tag);

        // restart timer
        timer.Stop();
        timer.Start();
    }
    public MessageRouter(Protocol protocol, Proxy.IConnection connection, ResponseReceivedHandler defaultMessageSink, ResponseReceivedHandler onDisconnect)
    {
        this.protocol            = protocol;
        this.connection          = connection;
        this.defaultMessageSink  = defaultMessageSink;
        this.onDisconnectHandler = onDisconnect;

        // set up receiving async call
        this.connection.BeginReceive(receiveBuffer, 0, receiveBuffer.Length, new AsyncCallback(OnDataReceive), null);
    }
    public MessageRouter(Protocol protocol, Proxy.IConnection connection, ResponseReceivedHandler defaultMessageSink, ResponseReceivedHandler onDisconnect)
    {
        this.protocol = protocol;
        this.connection = connection;
        this.defaultMessageSink = defaultMessageSink;
        this.onDisconnectHandler = onDisconnect;

        // set up receiving async call
        this.connection.BeginReceive(receiveBuffer, 0, receiveBuffer.Length, new AsyncCallback(OnDataReceive), null);
    }
 public void AddOneTimeEvent(YahooService service, ResponseReceivedHandler messageHandler, object tag)
 {
     if (!this.oneTimeEvents.Contains(service))
     {
         this.oneTimeEvents.Add(service, new Pair(messageHandler, tag));
     }
     else
     {
         this.oneTimeEvents[service] = new Pair(messageHandler, tag);
     }
 }
 public void AddCodeEvent(string code, ResponseReceivedHandler messageHandler, object tag)
 {
     if (!codeEvents.Contains(code))
     {
         codeEvents.Add(code, new Pair(messageHandler, tag));
     }
     else
     {
         codeEvents[code] = new Pair(messageHandler, tag);
     }
 }
 public void AddPermanentEvent(YahooService service, ResponseReceivedHandler messageHandler, object tag)
 {
     if (!permanentEvents.Contains(service))
     {
         permanentEvents.Add(service, new Pair(messageHandler, tag));
     }
     else
     {
         permanentEvents[service] = new Pair(messageHandler, tag);
     }
 }
Example #10
0
    private void AddContactToList(ListType listType, Friend friend, bool add, ResponseReceivedHandler handler, object tag)
    {
        string contactListString = this.ConvertListTypeToString(listType);
        string additional        = string.Empty;

        switch (listType)
        {
        case ListType.Forward:
            additional = " 0";
            break;
        }

        this.notifyRouter.SendMessage(
            Message.ConstructMessage(add ? "ADD" : "REM",
                                     contactListString + " " + friend.Username + (add ? " " + friend.Username : "") + additional),
            new ResponseReceivedHandler(OnAddContactToListResponse),
            new object[] { friend, handler, tag }
            );
    }
Example #11
0
    private void OnAddContactToListResponse(MessageRouter router, Message message, object tag)
    {
        object[] p      = (object[])tag;
        Friend   friend = (Friend)p[0];
        ResponseReceivedHandler handler = (ResponseReceivedHandler)p[1];
        object tag2 = p[2];

        if (HandleListChangeMessage(message, friend))
        {
            // call user-defined handler method
            if (handler != null)
            {
                handler(router, message, new Pair(tag2, true));
            }
        }
        else
        {
            if (handler != null)
            {
                handler(router, message, new Pair(tag2, false));
            }
        }
    }
Example #12
0
    public void SendMessage(Message message, ResponseReceivedHandler responseReceivedEvent, object tag, bool addLineEnding)
    {
        byte[] byteMessage = System.Text.Encoding.ASCII.GetBytes(message.RawMessage + (addLineEnding ? "\r\n" : ""));

        try
        {
            this.connection.Send(byteMessage);

            this.protocol.control.WriteDebug("-----------------------------------------");
            this.protocol.control.WriteDebug("Sent");
            this.protocol.control.WriteDebug(System.Text.ASCIIEncoding.ASCII.GetString(byteMessage));
            this.protocol.control.WriteDebug("-----------------------------------------");

            if (responseReceivedEvent != null)
            {
                transactionEvents.Add(message.TransactionID, new Pair(responseReceivedEvent, tag));
            }
        }
        catch
        {
            // couldn't write to the stream. we've been disconnected
            this.onDisconnect(this, null, null);
        }
    }
Example #13
0
 public void SendMessage(Message message, ResponseReceivedHandler responseReceivedEvent, object tag)
 {
     SendMessage(message, responseReceivedEvent, tag, true);
 }
Example #14
0
 private void AddContactToList(ListType listType, Friend friend, bool add, ResponseReceivedHandler handler)
 {
     AddContactToList(listType, friend, add, handler, null);
 }
Example #15
0
 private void ChangeStatus(OnlineStatus status, ResponseReceivedHandler responseHandler, object tag)
 {
     SendNotifyMessage(
         Message.ConstructMessage("CHG", this.ConvertStatusToString(status)),
         responseHandler, tag);
 }
Example #16
0
 private void ChangeStatus(OnlineStatus status, ResponseReceivedHandler responseHandler)
 {
     this.ChangeStatus(status, responseHandler, null);
 }
Example #17
0
 public void AddCodeEvent(string code, ResponseReceivedHandler messageHandler)
 {
     AddCodeEvent(code, messageHandler, null);
 }
Example #18
0
 private void SendNotifyMessage(Message message, ResponseReceivedHandler response, object tag)
 {
     SendNotifyMessage(message, response, tag, true);
 }
Example #19
0
 public void AddPermanentEvent(YahooService service, ResponseReceivedHandler messageHandler)
 {
     AddPermanentEvent(service, messageHandler, null);
 }
Example #20
0
 /// <summary>
 /// Unregisters a ResponseReceivedHandler, being previously registered in SendCmd()
 /// </summary>
 public void UnregisterResponseReceivedHandler()
 {
     responseReceivedCallback = null;
 }
Example #21
0
 public void SendMessage(Message msg, object context, ResponseReceivedHandler responseHandler)
 {
     _unacked.Add(msg.SequenceNumber,
         new AckContext { Request = msg, Context = context, Handler = responseHandler });
     _channel.SendMessage(msg);
 }
Example #22
0
 public void AddPermanentEvent(YahooService service, ResponseReceivedHandler messageHandler)
 {
     AddPermanentEvent(service, messageHandler, null);
 }