Kaydet (Commit) 63cec254 authored tarafından Noel Grandin's avatar Noel Grandin

com::sun::star->css in io

Change-Id: I4a0cd4b29db91584c23148d659846c71b90b0d65
üst e60872a5
......@@ -46,19 +46,19 @@ namespace io_acceptor
virtual ~PipeConnection();
virtual sal_Int32 SAL_CALL read( Sequence< sal_Int8 >& aReadBytes, sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const Sequence< sal_Int8 >& aData )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL flush( ) throw(
::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL close( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual OUString SAL_CALL getDescription( )
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::uno::RuntimeException, std::exception) override;
public:
::osl::StreamPipe m_pipe;
oslInterlockedCount m_nStatus;
......@@ -83,8 +83,8 @@ namespace io_acceptor
}
sal_Int32 PipeConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -106,8 +106,8 @@ namespace io_acceptor
}
void PipeConnection::write( const Sequence < sal_Int8 > &seq )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -122,14 +122,14 @@ namespace io_acceptor
}
void PipeConnection::flush( )
throw( ::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw( css::io::IOException,
css::uno::RuntimeException, std::exception)
{
}
void PipeConnection::close()
throw( ::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw( css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( 1 == osl_atomic_increment( (&m_nStatus) ) )
{
......@@ -138,7 +138,7 @@ namespace io_acceptor
}
OUString PipeConnection::getDescription()
throw(::com::sun::star::uno::RuntimeException, std::exception)
throw(css::uno::RuntimeException, std::exception)
{
return m_sDescription;
}
......
......@@ -40,7 +40,7 @@ namespace io_acceptor {
template<class T>
struct ReferenceHash
{
size_t operator () (const ::com::sun::star::uno::Reference<T> & ref) const
size_t operator () (const css::uno::Reference<T> & ref) const
{
return reinterpret_cast<size_t>(ref.get());
}
......@@ -49,50 +49,50 @@ namespace io_acceptor {
template<class T>
struct ReferenceEqual
{
bool operator () (const ::com::sun::star::uno::Reference<T> & op1,
const ::com::sun::star::uno::Reference<T> & op2) const
bool operator () (const css::uno::Reference<T> & op1,
const css::uno::Reference<T> & op2) const
{
return op1.get() == op2.get();
}
};
typedef std::unordered_set< ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>,
ReferenceHash< ::com::sun::star::io::XStreamListener>,
ReferenceEqual< ::com::sun::star::io::XStreamListener> >
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener>,
ReferenceHash< css::io::XStreamListener>,
ReferenceEqual< css::io::XStreamListener> >
XStreamListener_hash_set;
class SocketConnection : public ::cppu::WeakImplHelper<
::com::sun::star::connection::XConnection,
::com::sun::star::connection::XConnectionBroadcaster>
css::connection::XConnection,
css::connection::XConnectionBroadcaster>
{
public:
SocketConnection( const OUString & sConnectionDescription );
virtual ~SocketConnection();
virtual sal_Int32 SAL_CALL read( ::com::sun::star::uno::Sequence< sal_Int8 >& aReadBytes,
virtual sal_Int32 SAL_CALL read( css::uno::Sequence< sal_Int8 >& aReadBytes,
sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const ::com::sun::star::uno::Sequence< sal_Int8 >& aData )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const css::uno::Sequence< sal_Int8 >& aData )
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL flush( ) throw(
::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL close( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual OUString SAL_CALL getDescription( )
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::uno::RuntimeException, std::exception) override;
// XConnectionBroadcaster
virtual void SAL_CALL addStreamListener(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>& aListener)
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeStreamListener(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>& aListener)
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL addStreamListener(const css::uno::Reference< css::io::XStreamListener>& aListener)
throw(css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeStreamListener(const css::uno::Reference< css::io::XStreamListener>& aListener)
throw(css::uno::RuntimeException, std::exception) override;
public:
void completeConnectionString();
......@@ -190,8 +190,8 @@ namespace io_acceptor {
}
sal_Int32 SocketConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -238,8 +238,8 @@ namespace io_acceptor {
}
void SocketConnection::write( const Sequence < sal_Int8 > &seq )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -274,15 +274,15 @@ namespace io_acceptor {
}
void SocketConnection::flush( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
}
void SocketConnection::close()
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
// ensure close is called only once
if( 1 == osl_atomic_increment( (&m_nStatus) ) )
......@@ -293,7 +293,7 @@ namespace io_acceptor {
}
OUString SocketConnection::getDescription()
throw( ::com::sun::star::uno::RuntimeException, std::exception)
throw( css::uno::RuntimeException, std::exception)
{
return m_sDescription;
}
......
......@@ -34,7 +34,7 @@ namespace io_acceptor {
PipeAcceptor( const OUString &sPipeName , const OUString &sConnectionDescription );
void init();
::com::sun::star::uno::Reference < ::com::sun::star::connection::XConnection > accept( );
css::uno::Reference < css::connection::XConnection > accept( );
void stopAccepting();
......@@ -54,7 +54,7 @@ namespace io_acceptor {
const OUString &sConnectionDescription );
void init();
::com::sun::star::uno::Reference < ::com::sun::star::connection::XConnection > accept();
css::uno::Reference < css::connection::XConnection > accept();
void stopAccepting();
......
......@@ -34,7 +34,7 @@ namespace stoc_connector
template<class T>
struct ReferenceHash
{
size_t operator () (const ::com::sun::star::uno::Reference<T> & ref) const
size_t operator () (const css::uno::Reference<T> & ref) const
{
return reinterpret_cast<size_t>(ref.get());
}
......@@ -43,41 +43,41 @@ namespace stoc_connector
template<class T>
struct ReferenceEqual
{
bool operator () (const ::com::sun::star::uno::Reference<T> & op1,
const ::com::sun::star::uno::Reference<T> & op2) const
bool operator () (const css::uno::Reference<T> & op1,
const css::uno::Reference<T> & op2) const
{
return op1.get() == op2.get();
}
};
typedef std::unordered_set< ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>,
ReferenceHash< ::com::sun::star::io::XStreamListener>,
ReferenceEqual< ::com::sun::star::io::XStreamListener> >
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener>,
ReferenceHash< css::io::XStreamListener>,
ReferenceEqual< css::io::XStreamListener> >
XStreamListener_hash_set;
class PipeConnection :
public ::cppu::WeakImplHelper< ::com::sun::star::connection::XConnection >
public ::cppu::WeakImplHelper< css::connection::XConnection >
{
public:
PipeConnection( const OUString &sConnectionDescription );
virtual ~PipeConnection();
virtual sal_Int32 SAL_CALL read( ::com::sun::star::uno::Sequence< sal_Int8 >& aReadBytes,
virtual sal_Int32 SAL_CALL read( css::uno::Sequence< sal_Int8 >& aReadBytes,
sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const ::com::sun::star::uno::Sequence< sal_Int8 >& aData )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const css::uno::Sequence< sal_Int8 >& aData )
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL flush( ) throw(
::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL close( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual OUString SAL_CALL getDescription( )
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::uno::RuntimeException, std::exception) override;
public:
::osl::StreamPipe m_pipe;
oslInterlockedCount m_nStatus;
......@@ -85,35 +85,35 @@ namespace stoc_connector
};
class SocketConnection :
public ::cppu::WeakImplHelper< ::com::sun::star::connection::XConnection, ::com::sun::star::connection::XConnectionBroadcaster >
public ::cppu::WeakImplHelper< css::connection::XConnection, css::connection::XConnectionBroadcaster >
{
public:
SocketConnection( const OUString & sConnectionDescription );
virtual ~SocketConnection();
virtual sal_Int32 SAL_CALL read( ::com::sun::star::uno::Sequence< sal_Int8 >& aReadBytes,
virtual sal_Int32 SAL_CALL read( css::uno::Sequence< sal_Int8 >& aReadBytes,
sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const ::com::sun::star::uno::Sequence< sal_Int8 >& aData )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL write( const css::uno::Sequence< sal_Int8 >& aData )
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL flush( ) throw(
::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL close( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::io::IOException,
css::uno::RuntimeException, std::exception) override;
virtual OUString SAL_CALL getDescription( )
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
throw(css::uno::RuntimeException, std::exception) override;
// XConnectionBroadcaster
virtual void SAL_CALL addStreamListener(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>& aListener)
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeStreamListener(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStreamListener>& aListener)
throw(::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL addStreamListener(const css::uno::Reference< css::io::XStreamListener>& aListener)
throw(css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeStreamListener(const css::uno::Reference< css::io::XStreamListener>& aListener)
throw(css::uno::RuntimeException, std::exception) override;
public:
void completeConnectionString();
......
......@@ -44,8 +44,8 @@ namespace stoc_connector {
}
sal_Int32 PipeConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -61,8 +61,8 @@ namespace stoc_connector {
}
void PipeConnection::write( const Sequence < sal_Int8 > &seq )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -77,15 +77,15 @@ namespace stoc_connector {
}
void PipeConnection::flush( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
}
void PipeConnection::close()
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
// ensure that close is called only once
if(1 == osl_atomic_increment( (&m_nStatus) ) )
......@@ -95,7 +95,7 @@ namespace stoc_connector {
}
OUString PipeConnection::getDescription()
throw( ::com::sun::star::uno::RuntimeException, std::exception)
throw( css::uno::RuntimeException, std::exception)
{
return m_sDescription;
}
......
......@@ -115,8 +115,8 @@ namespace stoc_connector {
}
sal_Int32 SocketConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -161,8 +161,8 @@ namespace stoc_connector {
}
void SocketConnection::write( const Sequence < sal_Int8 > &seq )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
if( ! m_nStatus )
{
......@@ -197,15 +197,15 @@ namespace stoc_connector {
}
void SocketConnection::flush( )
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
}
void SocketConnection::close()
throw(::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException, std::exception)
throw(css::io::IOException,
css::uno::RuntimeException, std::exception)
{
// ensure that close is called only once
if( 1 == osl_atomic_increment( (&m_nStatus) ) )
......@@ -216,7 +216,7 @@ namespace stoc_connector {
}
OUString SocketConnection::getDescription()
throw( ::com::sun::star::uno::RuntimeException, std::exception)
throw( css::uno::RuntimeException, std::exception)
{
return m_sDescription;
}
......
......@@ -964,7 +964,7 @@ public:
{ ODataOutputStream::writeUTF( Value );}
// XObjectOutputStream
virtual void SAL_CALL writeObject( const Reference< XPersistObject > & r ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL writeObject( const Reference< XPersistObject > & r ) throw (css::io::IOException, css::uno::RuntimeException, std::exception) override;
public: // XMarkableStream
virtual sal_Int32 SAL_CALL createMark() throw (IOException, RuntimeException, std::exception) override;
......@@ -992,7 +992,7 @@ OObjectOutputStream::~OObjectOutputStream()
{
}
void OObjectOutputStream::writeObject( const Reference< XPersistObject > & xPObj ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception)
void OObjectOutputStream::writeObject( const Reference< XPersistObject > & xPObj ) throw (css::io::IOException, css::uno::RuntimeException, std::exception)
{
connectToMarkable();
......@@ -1239,7 +1239,7 @@ public: // XDataInputStream
{ return ODataInputStream::readUTF(); }
public: // XObjectInputStream
virtual Reference< XPersistObject > SAL_CALL readObject( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception) override;
virtual Reference< XPersistObject > SAL_CALL readObject( ) throw (css::io::IOException, css::uno::RuntimeException, std::exception) override;
public: // XMarkableStream
virtual sal_Int32 SAL_CALL createMark()
......@@ -1270,7 +1270,7 @@ OObjectInputStream::~OObjectInputStream()
{
}
Reference< XPersistObject > OObjectInputStream::readObject() throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception)
Reference< XPersistObject > OObjectInputStream::readObject() throw (css::io::IOException, css::uno::RuntimeException, std::exception)
{
// check if chain contains a XMarkableStream
connectToMarkable();
......
......@@ -80,24 +80,24 @@ namespace io_stm {
virtual ~Pump();
// XActiveDataSource
virtual void SAL_CALL setOutputStream( const Reference< ::com::sun::star::io::XOutputStream >& xOutput ) throw(std::exception) override;
virtual Reference< ::com::sun::star::io::XOutputStream > SAL_CALL getOutputStream() throw(std::exception) override;
virtual void SAL_CALL setOutputStream( const Reference< css::io::XOutputStream >& xOutput ) throw(std::exception) override;
virtual Reference< css::io::XOutputStream > SAL_CALL getOutputStream() throw(std::exception) override;
// XActiveDataSink
virtual void SAL_CALL setInputStream( const Reference< ::com::sun::star::io::XInputStream >& xStream ) throw(std::exception) override;
virtual Reference< ::com::sun::star::io::XInputStream > SAL_CALL getInputStream() throw(std::exception) override;
virtual void SAL_CALL setInputStream( const Reference< css::io::XInputStream >& xStream ) throw(std::exception) override;
virtual Reference< css::io::XInputStream > SAL_CALL getInputStream() throw(std::exception) override;
// XActiveDataControl
virtual void SAL_CALL addListener( const Reference< ::com::sun::star::io::XStreamListener >& xListener ) throw(std::exception) override;
virtual void SAL_CALL removeListener( const Reference< ::com::sun::star::io::XStreamListener >& xListener ) throw(std::exception) override;
virtual void SAL_CALL addListener( const Reference< css::io::XStreamListener >& xListener ) throw(std::exception) override;
virtual void SAL_CALL removeListener( const Reference< css::io::XStreamListener >& xListener ) throw(std::exception) override;
virtual void SAL_CALL start() throw( RuntimeException, std::exception ) override;
virtual void SAL_CALL terminate() throw(std::exception) override;
// XConnectable
virtual void SAL_CALL setPredecessor( const Reference< ::com::sun::star::io::XConnectable >& xPred ) throw(std::exception) override;
virtual Reference< ::com::sun::star::io::XConnectable > SAL_CALL getPredecessor() throw(std::exception) override;
virtual void SAL_CALL setSuccessor( const Reference< ::com::sun::star::io::XConnectable >& xSucc ) throw(std::exception) override;
virtual Reference< ::com::sun::star::io::XConnectable > SAL_CALL getSuccessor() throw(std::exception) override;
virtual void SAL_CALL setPredecessor( const Reference< css::io::XConnectable >& xPred ) throw(std::exception) override;
virtual Reference< css::io::XConnectable > SAL_CALL getPredecessor() throw(std::exception) override;
virtual void SAL_CALL setSuccessor( const Reference< css::io::XConnectable >& xSucc ) throw(std::exception) override;
virtual Reference< css::io::XConnectable > SAL_CALL getSuccessor() throw(std::exception) override;
public: // XServiceInfo
virtual OUString SAL_CALL getImplementationName() throw(std::exception ) override;
......@@ -292,7 +292,7 @@ void Pump::run()
close();
fireClose();
}
catch ( const com::sun::star::uno::Exception &e )
catch ( const css::uno::Exception &e )
{
// we are the last on the stack.
// this is to avoid crashing the program, when e.g. a bridge crashes
......
......@@ -241,29 +241,29 @@ public:
m_bDisposed( sal_False )
{}
virtual void SAL_CALL disposing( const EventObject &obj ) throw (::com::sun::star::uno::RuntimeException)
virtual void SAL_CALL disposing( const EventObject &obj ) throw (css::uno::RuntimeException)
{
m_bDisposed = sal_True;
// printf( "disposing called\n");
}
virtual void SAL_CALL started( ) throw (::com::sun::star::uno::RuntimeException)
virtual void SAL_CALL started( ) throw (css::uno::RuntimeException)
{
m_bStarted = sal_True;
// printf( "started called\n");
}
virtual void SAL_CALL closed( ) throw (::com::sun::star::uno::RuntimeException)
virtual void SAL_CALL closed( ) throw (css::uno::RuntimeException)
{
m_bClosed = sal_True;
// printf( "closed called\n");
}
virtual void SAL_CALL terminated( ) throw (::com::sun::star::uno::RuntimeException)
virtual void SAL_CALL terminated( ) throw (css::uno::RuntimeException)
{
m_bTerminated = sal_True;
// printf( "terminated called\n");
}
virtual void SAL_CALL error( const ::com::sun::star::uno::Any& aException )
throw (::com::sun::star::uno::RuntimeException)
virtual void SAL_CALL error( const css::uno::Any& aException )
throw (css::uno::RuntimeException)
{
m_bError = sal_True;
Exception e;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment