socket.cc (2665:a124942bacb8) socket.cc (5523:6279e78a2df2)
1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 29 unchanged lines hidden (view full) ---

38#include <unistd.h>
39
40#include "sim/host.hh"
41#include "base/misc.hh"
42#include "base/socket.hh"
43
44using namespace std;
45
1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 29 unchanged lines hidden (view full) ---

38#include <unistd.h>
39
40#include "sim/host.hh"
41#include "base/misc.hh"
42#include "base/socket.hh"
43
44using namespace std;
45
46bool ListenSocket::listeningDisabled = false;
47bool ListenSocket::anyListening = false;
48
49void
50ListenSocket::disableAll()
51{
52 if (anyListening)
53 panic("Too late to disable all listeners, already have a listener");
54 listeningDisabled = true;
55}
56
57bool
58ListenSocket::allDisabled()
59{
60 return listeningDisabled;
61}
62
46////////////////////////////////////////////////////////////////////////
47//
48//
49
50ListenSocket::ListenSocket()
51 : listening(false), fd(-1)
52{}
53

--- 33 unchanged lines hidden (view full) ---

87 return false;
88 }
89
90 if (::listen(fd, 1) == -1)
91 panic("ListenSocket(listen): listen() failed!");
92
93 listening = true;
94
63////////////////////////////////////////////////////////////////////////
64//
65//
66
67ListenSocket::ListenSocket()
68 : listening(false), fd(-1)
69{}
70

--- 33 unchanged lines hidden (view full) ---

104 return false;
105 }
106
107 if (::listen(fd, 1) == -1)
108 panic("ListenSocket(listen): listen() failed!");
109
110 listening = true;
111
112 anyListening = true;
95 return true;
96}
97
98
99// Open a connection. Accept will block, so if you don't want it to,
100// make sure a connection is ready before you call accept.
101int
102ListenSocket::accept(bool nodelay)
103{
104 struct sockaddr_in sockaddr;
105 socklen_t slen = sizeof (sockaddr);
106 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
107 if (sfd != -1 && nodelay) {
108 int i = 1;
109 ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, sizeof(i));
110 }
111
112 return sfd;
113}
113 return true;
114}
115
116
117// Open a connection. Accept will block, so if you don't want it to,
118// make sure a connection is ready before you call accept.
119int
120ListenSocket::accept(bool nodelay)
121{
122 struct sockaddr_in sockaddr;
123 socklen_t slen = sizeof (sockaddr);
124 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
125 if (sfd != -1 && nodelay) {
126 int i = 1;
127 ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, sizeof(i));
128 }
129
130 return sfd;
131}