SocketEventListener.cs :  » Network-Clients » Jabber-Net » bedrock » net » C# / CSharp Open Source

Home
C# / CSharp Open Source
1.2.6.4 mono .net core
2.2.6.4 mono core
3.Aspect Oriented Frameworks
4.Bloggers
5.Build Systems
6.Business Application
7.Charting Reporting Tools
8.Chat Servers
9.Code Coverage Tools
10.Content Management Systems CMS
11.CRM ERP
12.Database
13.Development
14.Email
15.Forum
16.Game
17.GIS
18.GUI
19.IDEs
20.Installers Generators
21.Inversion of Control Dependency Injection
22.Issue Tracking
23.Logging Tools
24.Message
25.Mobile
26.Network Clients
27.Network Servers
28.Office
29.PDF
30.Persistence Frameworks
31.Portals
32.Profilers
33.Project Management
34.RSS RDF
35.Rule Engines
36.Script
37.Search Engines
38.Sound Audio
39.Source Control
40.SQL Clients
41.Template Engines
42.Testing
43.UML
44.Web Frameworks
45.Web Service
46.Web Testing
47.Wiki Engines
48.Windows Presentation Foundation
49.Workflows
50.XML Parsers
C# / C Sharp
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source » Network Clients » Jabber Net 
Jabber Net » bedrock » net » SocketEventListener.cs
/* --------------------------------------------------------------------------
 *
 * License
 *
 * The contents of this file are subject to the Jabber Open Source License
 * Version 1.0 (the "License").  You may not copy or use this file, in either
 * source code or executable form, except in compliance with the License.  You
 * may obtain a copy of the License at http://www.jabber.com/license/ or at
 * http://www.opensource.org/.  
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * Copyrights
 * 
 * Portions created by or assigned to Cursive Systems, Inc. are 
 * Copyright (c) 2002 Cursive Systems, Inc.  All Rights Reserved.  Contact
 * information for Cursive Systems, Inc. is available at http://www.cursive.net/.
 *
 * Portions Copyright (c) 2002 Joe Hildebrand.
 * 
 * Acknowledgements
 * 
 * Special thanks to Dave Smith (dizzyd) for the design work.
 * 
 * --------------------------------------------------------------------------*/
using System;
using bedrock.util;
namespace bedrock.net{
    /// <summary>
    /// Interface class for Socket events. Any object which
    /// implements these interfaces is eligible to recieve Socket
    /// events.  This is an interface instead of events in order
    /// to preserve symmetry with libbedrock.
    /// </summary>
    public interface ISocketEventListener
    {
        /// <summary>
        /// We accepted a socket, and need to get a listener.
        /// If the return value is null, then the socket will be closed, 
        /// and RequestAccept will ALWAYS be called.
        /// </summary>
        /// <param name="new_sock">The new socket.</param>
        /// <param name="addr">the address of the remote connection for the accepted socket.  
        /// Used for blacklisting.</param>
        /// <returns>The listener for the *new* socket, as compared to 
        /// the listener for the *listen* socket</returns>
        ISocketEventListener GetListener(AsyncSocket new_sock, System.Net.IPAddress addr);

        /// <summary>
        /// A new incoming connection was accepted.
        /// </summary>
        /// <param name="newsocket">Socket for new connection.</param>
        /// <returns>true if RequestAccept() should be called automatically again</returns>
        bool OnAccept(AsyncSocket newsocket);
        /// <summary>
        /// Outbound connection was connected.
        /// </summary>
        /// <param name="sock">Connected socket.</param>
        void OnConnect(AsyncSocket sock);
        /// <summary>
        /// Connection was closed.
        /// </summary>
        /// <param name="sock">Closed socket.  Already closed!</param>
        void OnClose(AsyncSocket sock);
        /// <summary>
        /// An error happened in processing.  The socket is no longer open.
        /// </summary>
        /// <param name="sock">Socket in error</param>
        /// <param name="ex">Exception that caused the error</param>
        void OnError(AsyncSocket sock, Exception ex);
        /// <summary>
        /// Bytes were read from the socket.
        /// </summary>
        /// <param name="sock">The socket that was read from.</param>
        /// <param name="buf">The bytes that were read.</param>
        /// <returns>true if RequestRead() should be called automatically again</returns>
        bool OnRead (AsyncSocket sock, byte[] buf);
        /// <summary>
        /// Bytes were written to the socket.
        /// </summary>
        /// <param name="sock">The socket that was written to.</param>
        /// <param name="buf">The bytes that were written.</param>
        void OnWrite(AsyncSocket sock, byte[] buf);
    }
    /// <summary>
    /// Default, empty implementation of ISocketEventListener
    /// </summary>
    [RCS(@"$Header: /home/cvs/jabber-net/bedrock/net/SocketEventListener.cs,v 1.1 2002/07/11 22:08:14 hildjj Exp $")]
    public class SocketEventListener : ISocketEventListener
    {
        #region Implementation of ISocketEventListener
        /// <summary>
        /// We accepted a socket, and need to get a listener.
        /// If the return value is null, then the socket will be closed, 
        /// and RequestAccept will ALWAYS be called.
        /// </summary>
        /// <param name="new_sock">The new socket.</param>
        /// <param name="addr">the address of the remote connection for the accepted socket.  
        /// Used for blacklisting.</param>
        /// <returns>The listener for the *new* socket, as compared to 
        /// the listener for the *listen* socket</returns>
        public virtual ISocketEventListener GetListener(AsyncSocket new_sock, System.Net.IPAddress addr)
        {
            return this;
        }

        /// <summary>
        /// A new incoming connection was accepted.
        /// </summary>
        /// <param name="newsocket">Socket for new connection.</param>
        /// <returns>true if RequestAccept() should be called automatically again</returns>
        public virtual bool OnAccept(AsyncSocket newsocket)
        {
            return true;
        }

        /// <summary>
        /// Outbound connection was connected.
        /// </summary>
        /// <param name="sock">Connected socket.</param>
        public virtual void OnConnect(AsyncSocket sock)
        {
        }

        /// <summary>
        /// Connection was closed.
        /// </summary>
        /// <param name="sock">Closed socket.  Already closed!</param>
        public virtual void OnClose(AsyncSocket sock)
        {
        }

        /// <summary>
        /// An error happened in processing.  The socket is no longer open.
        /// </summary>
        /// <param name="sock">Socket in error</param>
        /// <param name="ec">Exception that caused the error</param>
        public virtual void OnError(AsyncSocket sock, System.Exception ec)
        {
        }

        /// <summary>
        /// Bytes were read from the socket.
        /// </summary>
        /// <param name="sock">The socket that was read from.</param>
        /// <param name="buf">The bytes that were read.</param>
        /// <returns>true if RequestRead() should be called automatically again</returns>
        public virtual bool OnRead(AsyncSocket sock, byte[] buf)
        {
            return true;
        }

        /// <summary>
        /// Bytes were written to the socket.
        /// </summary>
        /// <param name="sock">The socket that was written to.</param>
        /// <param name="buf">The bytes that were written.</param>
        public virtual void OnWrite(AsyncSocket sock, byte[] buf)
        {
        }    
        #endregion
    }
}
www.java2v.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.