Example #1
0
//////////////////////////////////////////////////////////////////////
// llist(orig)
// copy constructor
// as class makes use of dynamic memory allocation, explicit copy 
// constructor is required. creates an exact copy of orig.
//
// parameter:	llist &orig - reference to original linked list
//////////////////////////////////////////////////////////////////////
llist::llist(llist &orig)
{
	data dummy={-1,noitem,noitemtype,0,0,0,0,0};
//	data dummy={-1,"",""};
	// safe old current node
	llnode *oldcurrent = orig.current;

	// allocate nodes for new list
	head = new llnode(dummy, NULL);
	if (head == NULL) exit(-1);
	tail = new llnode(dummy, NULL);
	if (tail == NULL) exit(-1);

	// adjust links
	head->setSuccessor(tail);
	tail->setSuccessor(NULL);
	current = head;

	// copy contents of linked list
	orig.gotoHead();
	while (orig.gotoSuccessor() == ok) {
		if (orig.current == orig.tail) break;
		insertAfter(orig.accessData());
		gotoSuccessor();
	}

	// find current node in original and copied list
	orig.gotoHead();
	gotoHead();
	while (orig.current != oldcurrent) {
		orig.gotoSuccessor();
		gotoSuccessor();
	}
}
Example #2
0
int socket::accept()
{
	SOCK *sock;
	int new_desc;

#ifndef WIN32
	if((new_desc = ::accept(descriptor, NULL, 0)) < 0)
#else
	if((new_desc = ::accept(descriptor, NULL, 0)) == INVALID_SOCKET)
#endif
	{
#ifndef WIN32
		Log("socket: Accept failed accept()");
#else
		Log("socket: Accept failed accept() Error [%d]", WSAGetLastError());
#endif
		return 0;
	}

	sock = new SOCK(new_desc);
	sock->get_address();
	Log("socket: New connection from %s", sock->ip);
	sockets.insert(sock);
	return 1;
}
Example #3
0
////////////////////////////////////////////////////
// inventory()
//
// Uses LINKED LIST [Head]-[Current]-[End]
////////////////////////////////////////////////////
void llist::inventory(llist itemlist){
	cout<<"OPERATION: Print List\n";
// print out linked list printList()
	
	
	itemlist.printList();


	// printout my stats
}
Example #4
0
void checkIsEmpty(const llist& list)
{
   if (list.isEmpty())
   {
      cout << "List is empty" << endl;
   }
   else
   {
      cout << "List is not empty" << endl;
   }
}
 	virtual bool in_msg_push(msg_t _msg) override
 	{
 		return in_llist_.push(_msg);
 	}
 	virtual msg_t out_msg_get()
 	{
 		return out_llist_.get();
 	}
 	virtual msg_t in_msg_get()
 	{
 		return in_llist_.get();
 	}
 	virtual bool out_msg_push(msg_t _msg) override
 	{
 		return out_llist_.push(_msg);
 	}
Example #9
0
int socket::check_connections()
{
	SOCK *sock, *sock_next;
	struct timeval tv;
	int max_desc = descriptor;
	int desc;

	FD_ZERO(&fd_read);
	FD_ZERO(&fd_write);
	FD_ZERO(&fd_exc);
	FD_SET(descriptor, &fd_read);

	tv.tv_sec = 0;
	tv.tv_usec = 0;

	for(sock = sockets.begin(); sock; sock = sockets.next())
	{
		desc = sock->descriptor;

		if(desc > max_desc)
			max_desc = desc;

		FD_SET(desc, &fd_read);
		FD_SET(desc, &fd_write);
		FD_SET(desc, &fd_exc);
	}

	if(::select(max_desc+1, &fd_read, &fd_write, &fd_exc, &tv) < 0)
		Log("socket: select()");

	if(FD_ISSET(descriptor, &fd_read))
		accept();

	for(sock = sockets.begin(); sock; sock = sock_next)
	{
		sock_next = sockets.next();

		desc = sock->descriptor;

		if(FD_ISSET(desc, &fd_exc))
		{
			sockets.remove();
			delete sock;
			continue;
		}

		if(FD_ISSET(desc, &fd_write) && sock->output.length() > 0)
		{
Log("socket: check connections: found data....");
			sock->send();
		}

		if(FD_ISSET(desc, &fd_read))
		{
			if(sock->recv() <= 0)
			{
				sockets.remove();
				delete sock;
				continue;
			}
		}
	}
	return 0;
}
Example #10
0
File: codegen.c Project: perl11/Bla
void addfun(obj *o) { if(!o->codegen_done) nocg_funs.insert(o); };