public void OnRawMessageReceived(int id, Networkf.Message message)
        {
            lock (mtx) {
                switch (message.type)
                {
                case ServerRequireVerifyMessage.KType:
                    _hasReceivedServerVerificationRequirement = true;
                    break;

                case ClientVerifyMessage.KType: {
                    var clientMsg = (ClientVerifyMessage)message;
                    _verificationCode = clientMsg.verificationCode;
                }
                break;

                case ServerVerifyResultMessage.KType: {
                    var serverMsg = (ServerVerifyResultMessage)message;
                    _verificationResult = serverMsg.result;
                    _hasReceivedServerVerificationResult = true;
                }
                break;

                default:
                    throw new NotImplementedException();
                }
                Monitor.Pulse(mtx);
            }
        }
 private void OnMessageReceived(int id, Networkf.Message message)           // receiving thread
 {
     lock (_receivedMsgCache) {
         _receivedMsgCache.Enqueue(((NetworkfMessage)message).InnerMessage);
     }
 }
 private void OnMessageReceived(int id, Networkf.Message message)
 {
     lock (_receivedMsgCache) {
         _receivedMsgCache.Add(((NetworkfMessage)message).InnerMessage);
     }
 }