diff options
Diffstat (limited to 'src/network.cc')
-rw-r--r-- | src/network.cc | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/src/network.cc b/src/network.cc deleted file mode 100644 index 799bc98..0000000 --- a/src/network.cc +++ /dev/null @@ -1,151 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * network.cc - * - * Wed Nov 3 21:23:14 CET 2004 - * Copyright 2004 Bent Bisballe - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of MIaV. - * - * MIaV is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * MIaV is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MIaV; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include <config.h> -#include "network.h" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <sys/socket.h> - -Network::Network(Socket *gs, Info *ginfo) -{ - info = ginfo; - s = gs; -} - -Network::~Network() -{ -} - -int Network::write(void *buf, int size) -{ - if(!s->isConnected()) { - // info->error("Write attempted to a socket not connected!"); - return -1; - } - int n = send(s->ssocket, buf, size, MSG_WAITALL); - - if(n == -1) { - info->error("An error occurred!"); - } - - return n; -} - -int Network::read(void *buf, int size) -{ - if(!s->isConnected()) { - // info->error("Read attempted from a socket not connected!"); - return -1; - } - int n = recv(s->ssocket, buf, size, MSG_WAITALL); - - if(n == -1) { - info->error("An error occurred!"); - } - - return n; -} - -/* -struct msghdr { - void *msg_name // Optional address. - socklen_t msg_namelen // Size of address. - struct iovec *msg_iov // Scatter/gather array. - int msg_iovlen // Members in msg_iov. - void *msg_control // Ancillary data; see below. - socklen_t msg_controllen // Ancillary data buffer len. - int msg_flags // Flags on received message. -}; -*/ - -int Network::sendPackage(n_header *h, void* buf, int bufsz) -{ - struct msghdr msg; - struct iovec iovecs[2]; - - if(!s->isConnected()) { - // info->error("Write attempted to a socket not connected!"); - return -1; - } - - memset(&msg, 0, sizeof(msg)); - - msg.msg_iov = iovecs; - msg.msg_iovlen = 2; - - msg.msg_iov[0].iov_base = h; - msg.msg_iov[0].iov_len = sizeof(*h); - - msg.msg_iov[1].iov_base = buf; - msg.msg_iov[1].iov_len = bufsz; - - int n = sendmsg(s->ssocket, &msg, 0); - if(n < 0) { - info->error("A network error ocurred during sendPackage!"); - return -1; - } - - return n; -} - -int Network::recvPackage(n_header *h, void* buf, int bufsz) -{ - struct msghdr msg; - struct iovec iovecs[2]; - - if(!s->isConnected()) { - // info->error("Read attempted to a socket not connected!"); - return -1; - } - - memset(&msg, 0, sizeof(msg)); - - iovecs[0].iov_base = h; - iovecs[0].iov_len = sizeof(*h); - - iovecs[1].iov_base = buf; - iovecs[1].iov_len = bufsz; - - msg.msg_iov = iovecs; - msg.msg_iovlen = 2; - - int n = recvmsg(s->ssocket, &msg, MSG_WAITALL); - - if(n < 0) { - info->error("A network error ocurred during recvPackage!"); - return -1; - } - - if(msg.msg_iovlen != 2) { - info->error("Wrong package format!"); - return -1; - } - return n; -} - |