public static void Send(NetworkRequest packet, Callback callback)
        {
            NetworkManager.Send (packet);

            int protocol_id = packet.GetID ();
            if (!callbackList.ContainsKey (protocol_id)) {
                callbackList [protocol_id] = new Queue<Callback> ();
            }

            callbackList [protocol_id].Enqueue (callback);
        }
        public static void Send(NetworkRequest packet, Callback callback)
        {
            NetworkManager.Send(packet);

            int protocol_id = packet.GetID();

            if (!callbackList.ContainsKey(protocol_id))
            {
                callbackList [protocol_id] = new Queue <Callback> ();
            }

            callbackList [protocol_id].Enqueue(callback);
        }
        // Update is called once per frame
        void Update()
        {
            if (!cManager.Connected)
            {
                return;
            }

            while (requests.Count > 0)
            {
                NetworkRequest packet = requests.Peek();

                if (cManager.Send(packet.GetBytes()))
                {
                    requests.Dequeue();

                    if (packet.GetID() != 211)
                    {
                        Debug.Log("CW: Sent Request No. " + packet.GetID() + " [" + NetworkProtocolTable.Get(packet.GetID()).ToString() + "]");
                    }
                }
            }

            counter++;
            if (counter == interval)
            {
                //Debug.Log ("checking response buffer... (+50)");
                counter = 0;
            }
            foreach (NetworkResponse args in cManager.Read())
            {
                bool status = false;

                int protocol_id = args.GetID();

                // One-Time
                if (callbackList.ContainsKey(protocol_id))
                {
                    if (callbackList [protocol_id].Count > 0)
                    {
                        callbackList [protocol_id].Dequeue() (args);

                        status = true;
                    }
                }
                // Listen
                if (listenList.ContainsKey(protocol_id))
                {
                    if (listenList [protocol_id].Count > 0)
                    {
                        foreach (Callback callback in listenList[protocol_id])
                        {
                            callback(args);
                        }

                        status = true;
                    }
                }

                if (args.GetID() != 211)
                {
                    Debug.Log((status ? "Processed" : "Ignored") + " Response No. " + args.GetID() + " [" + NetworkProtocolTable.Get(args.GetID()).ToString() + "]");
                }
            }
        }