struct Buffer
{
int head;
int tail;
unsigned char Buffer[1024];
void (*back)(struct Buffer *p, unsigned char c);
unsigned char (*front)(struct Buffer *p);
int (*count)(struct Buffer * p);
unsigned char (*at)(struct Buffer *p, int index);
void (*remove)(struct Buffer *p, int count);
};
struct Buffer Receive, Send;
void Back(struct Buffer *p, unsigned char c)
{
p->Buffer[p->head++] = c;
p->head %= 1024;
}
unsigned char Front(struct Buffer *p)
{
if(p->count(p)>0)
{
unsigned char c= p->Buffer[p->tail++];
p->tail %=1024;
return c;
}
return 0;
}
int Count(struct Buffer *p)
{
return p->header >= p->tail? p->head - p->tail : 1024 - p->head + p->tail;
}
unsigned char At(struct Buffer *p, int index)
{
if(p->count(p)>index)
{
index += p->tail;
return p->Buffer[index % 1024];
}
return 0;
}
void Remove(struct Buffer *p, int count)
{
int cnt = p->count(p);
cnt = (cnt>count)? count : cnt;
p->tail += cnt;
p->tail %= 1024;
}
void Net()
{
int i;
unsigned char Buffer[1024] = {0,};
if(Receive.count(&Receive) >= 4)
{
int length = *((int*)Buffer);
if(Receive.count(&Receive) >= length)
{
for(; i<length; i++){
if(i & 0x1) Buffer[i>>1] |= (Receive.at(&Receive, i) << 8) & 0xff00;
else Buffer[i>>1] |= Receive.at(&Receive, i) & 0x00ff;
}
Receive.remove_front(&Receive, length);
}
}
}
마지막 Net() 함수 해석이 잘 안되는데 알려주시면 감사하겠습니다ㅠ