Exemple #1
0
 public MockPacket(int packetType, MockPacketBody mockPacketBody)
 {
     PacketType = packetType;
     Bodies     = new List <MockPacketBody> {
         mockPacketBody
     };
 }
Exemple #2
0
        /// <summary>
        /// List 객체 참조 테스트
        /// </summary>
        /// <remarks>
        /// - 객체를 참조하는 경우, 원본 객체가 변경되면 참조하는 쪽에도 변경사항이 반영 됨
        /// - 원본 객체가 새로 할당되는 경우, 참조 객체는 원본 객체의 기존 값을 유지하므로 연결 관계는 끊어짐
        /// </remarks>
        /// <param name="enabled"></param>
        private static void TestListReference(bool enabled = true)
        {
            if (!enabled)
            {
                return;
            }

            // 원본 데이터
            byte[] data = Encoding.UTF8.GetBytes("12345");

            // 원본 데이터를 포함하는 패킷바디
            MockPacketBody orgPacketBody = new MockPacketBody {
                CompressionType = 0, Data = data
            };
            MockPacket orgPacket = new MockPacket {
                PacketType = 1, Bodies = new List <MockPacketBody> {
                    orgPacketBody
                }
            };

            // 패킷 데이터를 그대로 참조하는 패킷바디 복사본
            MockPacket newPacket = new MockPacket {
                PacketType = 2, Bodies = orgPacket.Bodies
            };

            // 원본 패킷의 패킷바디 변경
            orgPacket.Bodies[0].Data = Encoding.UTF8.GetBytes("ABCDE");

            // 원본 패킷의 패킷바디 출력
            Console.WriteLine($"Original Packet, data:{Encoding.UTF8.GetString(orgPacket.Bodies[0].Data)}");
            // 클론 패킷의 패킷바디 출력
            Console.WriteLine($"Clone Packet, data:{Encoding.UTF8.GetString(newPacket.Bodies[0].Data)}");

            // 원본 패킷을 삭제
            orgPacket = null;

            // 클론 패킷의 패킷바디 출력
            Console.WriteLine($"Clone Packet, data:{Encoding.UTF8.GetString(newPacket.Bodies[0].Data)}");

            // 원본 패킷을 새로 할당
            orgPacket = new MockPacket {
                PacketType = 2, Bodies = new List <MockPacketBody> {
                    new MockPacketBody {
                        CompressionType = 0, Data = Encoding.UTF8.GetBytes("98765")
                    }
                }
            };

            // 원본 패킷의 패킷바디 출력
            Console.WriteLine($"Original Packet, data:{Encoding.UTF8.GetString(orgPacket.Bodies[0].Data)}");
            // 클론 패킷의 패킷바디 출력
            Console.WriteLine($"Clone Packet, data:{Encoding.UTF8.GetString(newPacket.Bodies[0].Data)}");
        }