2 * Funambol is a mobile platform developed by Funambol, Inc.
3 * Copyright (C) 2003 - 2007 Funambol, Inc.
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Affero General Public License version 3 as published by
7 * the Free Software Foundation with the addition of the following permission
8 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
9 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
10 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program; if not, see http://www.gnu.org/licenses or write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
23 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
25 * The interactive user interfaces in modified source and object code versions
26 * of this program must display Appropriate Legal Notices, as required under
27 * Section 5 of the GNU Affero General Public License version 3.
29 * In accordance with Section 7(b) of the GNU Affero General Public License
30 * version 3, these Appropriate Legal Notices must retain the display of the
31 * "Powered by Funambol" logo. If the display of the logo is not reasonably
32 * feasible for technical reasons, the Appropriate Legal Notices must display
33 * the words "Powered by Funambol".
41 #include "base/fscapi.h"
42 #include "base/util/StringBuffer.h"
48 RSocketServ iSocketSession;
50 TRequestStatus iStatus;
53 StringBuffer lAddress;
54 StringBuffer pAddress;
55 static StringBuffer lIP;
59 * Opens a socket connecting to the peer host on the given port.
61 void ConstructL(const StringBuffer& peer, int32_t port);
69 * This method is the factory to create sockets
70 * Opens a socket connecting to the peer host on the given port.
71 * @return a valid object if the connection can be establishd. Returns
72 * NULL if the socket cannot be created for any reason.
74 static FSocket* createSocket(const StringBuffer& peer, int32_t port);
76 // 1st and 2nd phase constructors
77 static FSocket* NewL (const StringBuffer& peer, int32_t port);
78 static FSocket* NewLC(const StringBuffer& peer, int32_t port);
84 Returns the local address associates to this socket in the form
85 'address:port' where address can be either the numerical IP or the
88 const StringBuffer& address() const;
90 Returns the local address associates to this socket in the form
91 'address:port' where address can be either the numerical IP or the
94 const StringBuffer& peerAddress() const;
97 Reads all available bytes from the socket, up to the maximum specified
98 by the second parameter. This call is synchronous and it blocks the
99 caller until something is available or the max length is reached.
100 Returns the actual number of bytes read (-1 if the socket cannot be
101 read or in case of any network error).
103 int32_t readBuffer(int8_t* buffer, int32_t maxLen);
106 Writes the given buffer to the stream and flush it. The buffer length
107 is specified by the second parameter.
108 The method returns the number of written bytes. On success this value
109 is the same as len. On errors it can be less than len and it specifies
110 the number of bytes written before a network error was encountered.
112 int32_t writeBuffer(const int8_t* const buffer, int32_t len);
115 Close this socket. After this operation the object can be released as
116 any IO operation is invalid.
120 /// Returns the status of last operation.
121 TInt getLastStatus() { return iStatus.Int(); }
125 // These methods are misc utilities
128 Returns a string representing the local address in the form:
129 'address' where address can be the numerical IP or the symbolic
130 name. If the address cannot be retrieved, then the returned string is
132 If the device is not connected to the network then this method returns
133 an empty string and it does not attempt to set up a network
136 static const StringBuffer& localIP();
138 static void startConnection();