protocol: make client-index implicit
This will enable us to unify the code in a later commit. This is a protocol-breaking change, and means that matching editor and player must be used.
This commit is contained in:
parent
5bfd04f55b
commit
687df0876b
@ -561,9 +561,9 @@ SOCKET clientConnect(SOCKET serverSocket, sockaddr_in *host)
|
|||||||
return clientSocket;
|
return clientSocket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t clientIndex;
|
||||||
void processCommand(NetworkSocket &sock)
|
void processCommand(NetworkSocket &sock)
|
||||||
{
|
{
|
||||||
size_t clientIndex = 0;
|
|
||||||
int strLen, serverIndex, newRow;
|
int strLen, serverIndex, newRow;
|
||||||
std::string trackName;
|
std::string trackName;
|
||||||
const sync_track *t;
|
const sync_track *t;
|
||||||
@ -572,9 +572,7 @@ void processCommand(NetworkSocket &sock)
|
|||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case GET_TRACK:
|
case GET_TRACK:
|
||||||
// read data
|
// read data
|
||||||
sock.recv((char *)&clientIndex, sizeof(int), 0);
|
|
||||||
sock.recv((char *)&strLen, sizeof(int), 0);
|
sock.recv((char *)&strLen, sizeof(int), 0);
|
||||||
clientIndex = ntohl(clientIndex);
|
|
||||||
strLen = ntohl(strLen);
|
strLen = ntohl(strLen);
|
||||||
if (!sock.connected())
|
if (!sock.connected())
|
||||||
return;
|
return;
|
||||||
@ -591,7 +589,7 @@ void processCommand(NetworkSocket &sock)
|
|||||||
int(document.createTrack(trackName));
|
int(document.createTrack(trackName));
|
||||||
|
|
||||||
// setup remap
|
// setup remap
|
||||||
document.clientRemap[serverIndex] = clientIndex;
|
document.clientRemap[serverIndex] = clientIndex++;
|
||||||
|
|
||||||
// send key-frames
|
// send key-frames
|
||||||
t = document.tracks[serverIndex];
|
t = document.tracks[serverIndex];
|
||||||
@ -701,6 +699,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/,
|
|||||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)temp);
|
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)temp);
|
||||||
document.clientSocket = NetworkSocket(clientSocket);
|
document.clientSocket = NetworkSocket(clientSocket);
|
||||||
document.clientRemap.clear();
|
document.clientRemap.clear();
|
||||||
|
clientIndex = 0;
|
||||||
document.sendPauseCommand(true);
|
document.sendPauseCommand(true);
|
||||||
document.sendSetRowCommand(trackView->getEditRow());
|
document.sendSetRowCommand(trackView->getEditRow());
|
||||||
guiConnected = true;
|
guiConnected = true;
|
||||||
|
|||||||
@ -157,15 +157,13 @@ void sync_save_tracks(const struct sync_device *d)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int request_track_data(SOCKET sock, const char *name, uint32_t idx)
|
static int request_track_data(SOCKET sock, const char *name)
|
||||||
{
|
{
|
||||||
unsigned char cmd = GET_TRACK;
|
unsigned char cmd = GET_TRACK;
|
||||||
uint32_t name_len = htonl(strlen(name));
|
uint32_t name_len = htonl(strlen(name));
|
||||||
idx = htonl(idx);
|
|
||||||
|
|
||||||
/* send request data */
|
/* send request data */
|
||||||
return xsend(sock, (char *)&cmd, 1, 0) ||
|
return xsend(sock, (char *)&cmd, 1, 0) ||
|
||||||
xsend(sock, (char *)&idx, sizeof(idx), 0) ||
|
|
||||||
xsend(sock, (char *)&name_len, sizeof(name_len), 0) ||
|
xsend(sock, (char *)&name_len, sizeof(name_len), 0) ||
|
||||||
xsend(sock, name, (int)strlen(name), 0);
|
xsend(sock, name, (int)strlen(name), 0);
|
||||||
}
|
}
|
||||||
@ -223,7 +221,7 @@ static int purge_and_rerequest(struct sync_device *d)
|
|||||||
d->data.tracks[i]->keys = NULL;
|
d->data.tracks[i]->keys = NULL;
|
||||||
d->data.tracks[i]->num_keys = 0;
|
d->data.tracks[i]->num_keys = 0;
|
||||||
|
|
||||||
if (request_track_data(d->sock, d->data.tracks[i]->name, i))
|
if (request_track_data(d->sock, d->data.tracks[i]->name))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -318,7 +316,7 @@ const struct sync_track *sync_get_track(struct sync_device *d,
|
|||||||
#if SYNC_PLAYER
|
#if SYNC_PLAYER
|
||||||
load_track_data(t, sync_track_path(d->base, name));
|
load_track_data(t, sync_track_path(d->base, name));
|
||||||
#else
|
#else
|
||||||
request_track_data(d->sock, name, idx);
|
request_track_data(d->sock, name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user