UDP Socket ile gerçekleştirimi
Tüm kodlarda kullanılan bir std::map veriyapımız olsun.
CREATE_QUEUING_PORT
Socket açılır ve bir map içinde saklanır.
SEND_QUEUING_MESSAGE
Veri socket üzerinden gönderilir.
RECEIVE_QUEUING_MESSAGE
Veri socket üzerinden alınır.
Tüm kodlarda kullanılan bir std::map veriyapımız olsun.
std::map<int,SOCKET> dataMap;
CREATE_QUEUING_PORT
Socket açılır ve bir map içinde saklanır.
CREATE_QUEUING_PORT ( QUEUING_PORT_NAME_TYPE dummy1, MESSAGE_SIZE_TYPE dummy2, MESSAGE_RANGE_TYPE dummy3, PORT_DIRECTION_TYPE portDirection, QUEUING_DISCIPLINE_TYPE dummy4, QUEUING_PORT_ID_TYPE portID, RETURN_CODE_TYPE * result) { SOCKET s = socket (AF_INET,SOCK_DGRAM,IPPROTO_UDP); if (portDirection == DESTINATION){ //Bind UDP server struct sockaddr_in sAddr = {}; sAddr.sin_family = AF_INET; sAddr.sin_port = portID; sAddr.sin_addr.s_add = inet_addr ("127.0.0.1"); bind (sock,(struct sockaddr *) &sAddr, sizeof(sAddr));
}
//Save socket handle portID as key
map [portID] = s; result = SUCCESS; }
SEND_QUEUING_MESSAGE
Veri socket üzerinden gönderilir.
SEND_QUEUING_MESSAGE ( QUEUING_PORT_ID_TYPE portID, SYSTEM_TIME_TYPE dummy1, MESSAGE_ADDR_TYPE data, MESSAGE_SIZE_TYPE dataLength, RETURN_CODE_TYPE * result) {
SOCKET s = dateMap [ portID ];
int bytesSent = sendto (s, (char*) data, dataLength , 0);
result = bytesSent < 0 ? FAIL : SUCCESS;
}
RECEIVE_QUEUING_MESSAGE
Veri socket üzerinden alınır.
RECEIVE_QUEUING_MESSAGE ( QUEUING_PORT_ID_TYPE portID, SYSTEM_TIME_TYPE dummy1, MESSAGE_ADDR_TYPE data, MESSAGE_SIZE_TYPE dataLength, RETURN_CODE_TYPE * result) { SOCKET s = dateMap [ portID ]; int bytesRcvd = recv (s, (char*) data, dataLength , 0); result = bytesRcvd < 0 ? FAIL : SUCCESS; }
Hiç yorum yok:
Yorum Gönder