-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum NETwork research (NET)
-// David Wagner <david.wagner@fokus.fraunhofer.de>
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// David Wagner <dw6@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
const
{
int n;
- if (::ioctl(body().fd(),SIOCINQ,&n) < 0)
- throw senf::SystemException(errno);
+ if (::ioctl(fd(),SIOCINQ,&n) < 0)
+ throw SystemException();
return n;
}
return false;
}
-prefix_ void senf::UNProtocol::connect(UNSocketAddress const & address)
- const
-{
- if(::connect(body().fd(), address.sockaddr_p(), sizeof(sockaddr_un)) < 0)
- throw SystemException(errno);
-}
-
-prefix_ void senf::UNProtocol::bind(UNSocketAddress const & address)
- const
-{
- if(::bind(body().fd(), address.sockaddr_p(), sizeof(sockaddr_un)) < 0)
- throw SystemException(errno);
-
-}
-
-
-
prefix_ void senf::UNProtocol::close()
const
{
prefix_ void senf::UNProtocol::check_and_unlink()
const
{
-// struct sockaddr_un test;
-// socklen_t len;
-// memset( (char*)&test, 0xff, sizeof( test));
-// int fd = inputSocket.fd() ;
-//// printf( "fd: %d\n", fd);
-//
-// int r = getsockname( fd, (struct sockaddr *)&test, &len);
-// if( r < 0){
-// perror( "bla:");
-// }
-// else{
-// printf( "name: %d %d %s\n", r, len , test.sun_path);
-// unsigned char *p = (unsigned char*) &test;for( r=0; r< len; r++) printf( "%2.2x ", (int)(p[r])); printf ("\n");
-// }
- struct sockaddr_un test;
- socklen_t len = sizeof( test);
- int r = ::getsockname( body().fd(), (struct sockaddr *)&test, &len);
- if( r == 0 && ::strlen(test.sun_path) > 0){
- ::unlink( test.sun_path);
+ typedef ClientSocketHandle<MakeSocketPolicy<UNAddressingPolicy>::policy> UNSocketHandle;
+ try {
+ UNSocketAddress una (static_socket_cast<UNSocketHandle>(fh()).local());
+ ::unlink(una.path().c_str());
+ }
+ catch (SystemException & e) {
}
}
-
+
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "UNProtocol.mpp"