17 static void swap4(
char *data,
int ndata) {
23 for (i=0; i<ndata; i+=4) {
26 dataptr[0] = dataptr[3];
27 dataptr[1] = dataptr[2];
38 unsigned int highest : 8;
39 unsigned int high : 8;
41 unsigned int lowest : 8;
81 }
else if (nread == 0)
150 char *buf =
new char[size];
152 memcpy((
void *)(buf+
HEADERSIZE), (
const void *)indices, 4*n);
153 memcpy((
void *)(buf+
HEADERSIZE+4*n), (
const void *)forces, 12*n);
161 char *buf =
new char[size];
171 char *buf =
new char[size];
173 memcpy((
void *)(buf+
HEADERSIZE), (
const void *)coords, 12*n);
205 swap4((
char *)&buf, 4);
219 char *ch = (
char*)(&header);
226 if (
imd_readn(s, (
char *)indices, 4*n) != 4*n)
return 1;
227 if (
imd_readn(s, (
char *)forces, 12*n) != 12*n)
return 1;
237 return (
imd_readn(s, (
char *)coords, 12*n) != 12*n);
static int32 imd_writen(void *s, const char *ptr, int32 n)
static void fill_header(IMDheader *header, IMDType type, int32 length)
int imd_send_mdcomm(void *s, int32 n, const int32 *indices, const float *forces)
int vmdsock_selread(void *v, int sec)
static int imd_go(void *s)
IMDType imd_recv_header_nolengthswap(void *s, int32 *length)
structure used to perform byte swapping operations
int imd_send_energies(void *s, const IMDEnergies *energies)
static __thread float4 * forces
static int32 imd_ntohl(int32 n)
static void swap4(char *data, int ndata)
int imd_trate(void *s, int32 rate)
static int32 imd_htonl(int32 h)
int imd_send_fcoords(void *s, int32 n, const float *coords)
static void swap_header(IMDheader *header)
int imd_recv_fcoords(void *s, int32 n, float *coords)
int imd_recv_mdcomm(void *s, int32 n, int32 *indices, float *forces)
static int32 imd_readn(void *s, char *ptr, int32 n)
int imd_handshake(void *s)
int imd_disconnect(void *s)
int imd_recv_handshake(void *s)
Receive header and data.
int vmdsock_write(void *v, const void *buf, int len)
int imd_recv_energies(void *s, IMDEnergies *energies)
IMDType imd_recv_header(void *s, int32 *length)
int vmdsock_read(void *v, void *buf, int len)