示例#1
0
 /// <summary>
 /// Notify a number of new messages from router.
 /// </summary>
 /// <param name="newMessagesNum">number of new arriving messages</param>
 public void NotifyNewMessages(int newMessagesNum)
 {
     OCLogger.Debugging("Notified about new messages in Router.");
     lock (_unreadMessagesLock)
     {
         _unreadMessagesCount += newMessagesNum;
         OCLogger.Debugging("Unread messages [" + _unreadMessagesCount + "]");
     }
 }
        private string ParseAvailableElement(IEnumerator token)
        {
            UnityEngine.Debug.Log("OCMessageHandler::ParseAvailableElement");

            string answer = null;

            if (token.MoveNext())    // Has more elements
            {
                string id = token.Current.ToString();

                OCLogger.Debugging("onLine: Available element message received for [" +
                                   id + "].");
                _networkElement.MarkAsAvailable(id);
                answer = OCNetworkElement.OK_MESSAGE;
            }
            else
            {
                answer = OCNetworkElement.FAILED_MESSAGE;
            }

            return(answer);
        }
        private string ParseNotifyNewMessage(IEnumerator token)
        {
            UnityEngine.Debug.Log("OCMessageHandler::ParseNotifyNewMessage");

            string answer = null;

            if (token.MoveNext())    // Has more elements
            {
                // Get new message number.
                int numberOfMessages = int.Parse(token.Current.ToString());

                _networkElement.NotifyNewMessages(numberOfMessages);
                answer = OCNetworkElement.OK_MESSAGE;

                OCLogger.Debugging("onLine: Notified about [" +
                                   numberOfMessages + "] messages in Router.");
            }
            else
            {
                answer = OCNetworkElement.FAILED_MESSAGE;
            }

            return(answer);
        }
示例#4
0
        public void LoadFromFile(string fileName)
        {
            System.IO.StreamReader reader = new System.IO.StreamReader(fileName);
            char[] separator  = { '=', ' ' };
            int    linenumber = 0;

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();
                linenumber++;

                // not a commentary or an empty line
                if (line.Length > 0 && line[0] != '#')
                {
                    string[] tokens = line.Split(separator, System.StringSplitOptions.RemoveEmptyEntries);
                    if (tokens.Length < 2)
                    {
                        // TODO: Debug.isDebugBuild??
                        //if (Debug.isDebugBuild)
                        OCLogger.Debugging("Invalid format at line " + linenumber + ": '" + line + "'");
                    }
                    if (table.ContainsKey(tokens[0]))
                    {
                        //if (Debug.isDebugBuild) Debug.Log(tokens[0] + "=" + tokens[1]);
                        table[tokens[0]] = tokens[1];
                    }
                    else
                    {
                        OCLogger.Debugging("Ignoring unknown parameter name '" + tokens[0] + "' at line "
                                           + linenumber + ".");
                    }
                }
            }

            reader.Close();
        }
        private string ParseStartMessage(string inputLine, string command, IEnumerator token)
        {
            UnityEngine.Debug.Log("OCMessageHandler::ParseStartMessage");

            string answer = null;

            if (_state == READING_MESSAGES)
            {
                // A previous message was already read.
                OCLogger.Debugging("onLine: From [" + _messageFrom +
                                   "] to [" + _messageTo +
                                   "] Type [" + _messageType + "]");

                OCMessage message = OCMessage.CreateMessage(_messageFrom,
                                                            _messageTo,
                                                            _messageType,
                                                            _message.ToString());
                if (message == null)
                {
                    OCLogger.Error("Could not factory message from the following string: " +
                                   _message.ToString());
                }
                if (_useMessageBuffer)
                {
                    _messageBuffer.Add(message);
                    if (_messageBuffer.Count > _maxMessagesInBuffer)
                    {
                        _networkElement.PullMessage(_messageBuffer);
                        _messageBuffer.Clear();
                    }
                }
                else
                {
                    _networkElement.PullMessage(message);
                }

                _lineCount   = 0;
                _messageTo   = "";
                _messageFrom = "";
                _messageType = OCMessage.MessageType.NONE;
                _message.Remove(0, _message.Length);
            }
            else
            {
                if (_state == DOING_NOTHING)
                {
                    // Enter reading state from idle state.
                    _state = READING_MESSAGES;
                }
                else
                {
                    OCLogger.Error("onLine: Unexepcted command [" +
                                   command + "]. Discarding line [" +
                                   inputLine + "]");
                }
            }

            if (token.MoveNext())
            {
                _messageFrom = token.Current.ToString();

                if (token.MoveNext())
                {
                    _messageTo = token.Current.ToString();
                    if (token.MoveNext())
                    {
                        _messageType = (OCMessage.MessageType) int.Parse(token.Current.ToString());
                    }
                    else
                    {
                        answer = OCNetworkElement.FAILED_MESSAGE;
                    }
                }
                else
                {
                    answer = OCNetworkElement.FAILED_MESSAGE;
                }
            }
            else
            {
                answer = OCNetworkElement.FAILED_MESSAGE;
            }
            _lineCount = 0;

            return(answer);
        }