오늘은 netty decoder 내가 만든 것이 아닌 다른 분이 만든 것을 봤었다. 나는 맨 처음에 이것을 보고 왜 이렇게 만들었
지? 이렇게 만들면 패킷들이 모두 이어져서 들어올때 문제가 생기는 것 아닌가? 첫 번째 헤더 부분을 통과한다고 했을
때 바디부분에서 리턴을 당하면, 계속 다시 헤더부분만큼 읽는 것이 아닌가?라고 생각했었다. 하지만 내가 했던 생각을
다른 사람들이 못한다는 생각은 바보 같은 생각이고, 이러한 부분에 관해서도 당연하게 대처가 되어있었다. 이사진을 한
번 봐보겠다.
여기서 보면 반복문을 지나치면 바로 헤더 크기만큼 읽어주고 바디 부분을 통과하면 바디 크기만큼 읽어준다 나는 이런
알고리즘을 보고 이거 왜 이런 식으로 만들어졌지?라고 생각하며, 이 코드는 당연히 한 개의 패킷만 온다고 가정하고 만
들어진 코드인가? 혹은 지금까지 실패한 패킷은 온 적이 없나? 예를 들어 잘려있는 패킷이라 던 지 여러 가지 상황이 없
었나?라는 여러 가지 생각을 하면서 보고 있었다. 하지만 나의 생각은 아주 큰 착각이었고 그저 나의 지식이 모자랐을 뿐
이었다. 이것은 나의 디코더와는 다른 방식으로 만들어져 있었고, 이 방식은 헤더 바디 테일 부분을 차례로 검증하며 만
약그것의 크기가 모자랄 경우 리턴을 하는데 리턴하기 전에 진행하는 과정이 있는데 그것이 바로 저 블록 처리한
in.resetReaderIndex();부분이다. 이 부분이 의미하는 것은 지금까지 읽은 부분을 초기화하는 부분인데 그렇게 되면, 지금
까지 읽어서 버퍼에서 사라졌던 부분들이 초기화되는 것을 의미한다. 이런 식으로 코드를 작성하게 되면 내가 작성한 코
드보다 훨씬 더 알아보기 쉽고 간결하게 더 정확하게 검증하고 나눠서 확인할 수 있다. 그렇기에 나는 이 방법을 수용하
여 다음부터는 이 방식을 사용할 생각을 하고 있다. 이처럼 다른 사람의 코드를 보고 배울 점은 배우고 고칠 점은 고치는
방식으로 자신을 발전시킨다면, 많은 부분에서 발전을 해 나갈 수 있을 것이다.
'netty' 카테고리의 다른 글
JAVA pom.xml 오류 해결 (0) | 2021.05.24 |
---|---|
netty spring start (0) | 2021.05.17 |
정보처리기사 시험 팁 (0) | 2021.05.11 |
프로그래머 출장 전 + 출장 중 미세 팁 (0) | 2021.05.10 |
netty 초보 패킷을 받는법 (0) | 2021.05.07 |
댓글