mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
(default_in_port_class, default_out_port_class): New static variables,
replacing default_port_class. (all_connections_local_targets): New map table; not used yet, though. (debug_connection): Temporarily set to 1. ([Connection +initialize]): Set new static vars. ([Connection +setDefaultInPortClass:]): New method. ([Connection +defaultInPortClass]): New method. ([Connection +setDefaultOutPortClass:]): New method. ([Connection +defaultOutPortClass]): New method. ([Connection -init]): Use new default_in_port_class. ([Connection +new]): Likewise. ([Connection +newWithRootObject:]): Likewise. ([Connection +newRegisteringAtName:withRootObject:]): Likewise. ([Connection +rootProxyAtName:onHost:]): Likewise. ([Connection +rootProxyAtPort:]): Likewise. ([Connection +newForInPort:outPort:ancestorConnection:]): Assert the in port. Embellish the debugging message to print the in port and out port. Set the new connection's in port and out port ivars. Register ourselves as observers of port invalidation with the NotificationDispatcher. Post a notification that a new connection was created. ([Connection -runConnectionWithTimeout:]): Use _serviceReceivedRequestsWithTimeout:. ([Connection -_newReceivedRmcWithTimeout:]): Use decodingClass, not encodingClass. ([Connection -_serviceReceivedRequestsWithTimeout:]): Method name changed from -newReceivedReplyRmcWithSequenceNumber:. ([Connection +includesLocalObject:]): New method; still needs more infrastructure to work, though. ([Connection -inPortClass]): New method. ([Connection -outPortClass]): New method. ([Connection -setInPortClass:aPortClass]): New method. ([Connection -setOutPortClass:aPortClass]): New method. ([Connection -_encoderCreateReferenceForConstPtr:]): Add 1 to map table count to get xref. ([Connection -_decoderCreateReferenceForConstPtr:]): Likewise. ([Connection -dealloc]): Remove ourselves from the NotificationDispatcher. (ConnectionWasCreatedNotification): New notification string. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1057 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
0944e0909c
commit
14700c26f3
1 changed files with 104 additions and 45 deletions
|
@ -28,18 +28,17 @@
|
||||||
#include <objects/Connection.h>
|
#include <objects/Connection.h>
|
||||||
#include <objects/Proxy.h>
|
#include <objects/Proxy.h>
|
||||||
#include <objects/ConnectedCoder.h>
|
#include <objects/ConnectedCoder.h>
|
||||||
#include <objects/SocketPort.h>
|
#include <objects/TcpPort.h>
|
||||||
#include <objects/Array.h>
|
#include <objects/Array.h>
|
||||||
#include <objects/Dictionary.h>
|
#include <objects/Dictionary.h>
|
||||||
#include <objects/Queue.h>
|
#include <objects/Queue.h>
|
||||||
#include <objects/mframe.h>
|
#include <objects/mframe.h>
|
||||||
#include <objects/Notification.h>
|
#include <objects/Notification.h>
|
||||||
#include <Foundation/NSString.h>
|
#include <Foundation/NSString.h>
|
||||||
#include <Foundation/NSNotification.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
@interface Connection (GettingCoderInterface)
|
@interface Connection (GettingCoderInterface)
|
||||||
- doReceivedRequestsWithTimeout: (int)to;
|
- _serviceReceivedRequestsWithTimeout: (int)to;
|
||||||
- newReceivedReplyRmcWithSequenceNumber: (int)n;
|
- newReceivedReplyRmcWithSequenceNumber: (int)n;
|
||||||
- newSendingRequestRmc;
|
- newSendingRequestRmc;
|
||||||
- newSendingReplyRmcWithSequenceNumber: (int)n;
|
- newSendingReplyRmcWithSequenceNumber: (int)n;
|
||||||
|
@ -92,14 +91,15 @@ type_get_number_of_arguments (const char *type)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* class defaults */
|
/* class defaults */
|
||||||
static id default_port_class;
|
static id default_in_port_class;
|
||||||
|
static id default_out_port_class;
|
||||||
static id default_proxy_class;
|
static id default_proxy_class;
|
||||||
static id default_encoding_class;
|
static id default_encoding_class;
|
||||||
static id default_decoding_class;
|
static id default_decoding_class;
|
||||||
static int default_in_timeout;
|
static int default_in_timeout;
|
||||||
static int default_out_timeout;
|
static int default_out_timeout;
|
||||||
|
|
||||||
static BOOL debug_connection = NO;
|
static int debug_connection = 1;
|
||||||
|
|
||||||
/* Perhaps this should be a hashtable, keyed by remote port.
|
/* Perhaps this should be a hashtable, keyed by remote port.
|
||||||
But we may also need to include the local port---even though
|
But we may also need to include the local port---even though
|
||||||
|
@ -113,6 +113,8 @@ static Lock *connection_array_gate;
|
||||||
static Dictionary *root_object_dictionary;
|
static Dictionary *root_object_dictionary;
|
||||||
static Lock *root_object_dictionary_gate;
|
static Lock *root_object_dictionary_gate;
|
||||||
|
|
||||||
|
static NSMapTable *all_connections_local_targets = NULL;
|
||||||
|
|
||||||
/* rmc handling */
|
/* rmc handling */
|
||||||
static Queue *received_request_rmc_queue;
|
static Queue *received_request_rmc_queue;
|
||||||
static Lock *received_request_rmc_queue_gate;
|
static Lock *received_request_rmc_queue_gate;
|
||||||
|
@ -134,7 +136,8 @@ static int messages_received_count;
|
||||||
root_object_dictionary = [[Dictionary alloc] init];
|
root_object_dictionary = [[Dictionary alloc] init];
|
||||||
root_object_dictionary_gate = [Lock new];
|
root_object_dictionary_gate = [Lock new];
|
||||||
messages_received_count = 0;
|
messages_received_count = 0;
|
||||||
default_port_class = [SocketPort class];
|
default_in_port_class = [TcpInPort class];
|
||||||
|
default_out_port_class = [TcpOutPort class];
|
||||||
default_proxy_class = [Proxy class];
|
default_proxy_class = [Proxy class];
|
||||||
default_encoding_class = [ConnectedEncoder class];
|
default_encoding_class = [ConnectedEncoder class];
|
||||||
default_decoding_class = [ConnectedDecoder class];
|
default_decoding_class = [ConnectedDecoder class];
|
||||||
|
@ -145,14 +148,24 @@ static int messages_received_count;
|
||||||
|
|
||||||
/* Getting and setting class variables */
|
/* Getting and setting class variables */
|
||||||
|
|
||||||
+ (void) setDefaultPortClass: (Class)aClass
|
+ (void) setDefaultInPortClass: (Class)aClass
|
||||||
{
|
{
|
||||||
default_port_class = aClass;
|
default_in_port_class = aClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (Class) defaultPortClass
|
+ (Class) defaultInPortClass
|
||||||
{
|
{
|
||||||
return default_port_class;
|
return default_in_port_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) setDefaultOutPortClass: (Class)aClass
|
||||||
|
{
|
||||||
|
default_out_port_class = aClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (Class) defaultOutPortClass
|
||||||
|
{
|
||||||
|
return default_out_port_class;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) setDefaultProxyClass: (Class)aClass
|
+ (void) setDefaultProxyClass: (Class)aClass
|
||||||
|
@ -233,7 +246,7 @@ static int messages_received_count;
|
||||||
|
|
||||||
- init
|
- init
|
||||||
{
|
{
|
||||||
id newPort = [default_port_class newForReceiving];
|
id newPort = [default_in_port_class newForReceiving];
|
||||||
id newConn =
|
id newConn =
|
||||||
[Connection newForInPort:newPort outPort:nil ancestorConnection:nil];
|
[Connection newForInPort:newPort outPort:nil ancestorConnection:nil];
|
||||||
[self release];
|
[self release];
|
||||||
|
@ -242,7 +255,7 @@ static int messages_received_count;
|
||||||
|
|
||||||
+ new
|
+ new
|
||||||
{
|
{
|
||||||
id newPort = [default_port_class newForReceiving];
|
id newPort = [default_in_port_class newForReceiving];
|
||||||
id newConn =
|
id newConn =
|
||||||
[Connection newForInPort:newPort outPort:nil ancestorConnection:nil];
|
[Connection newForInPort:newPort outPort:nil ancestorConnection:nil];
|
||||||
return newConn;
|
return newConn;
|
||||||
|
@ -253,7 +266,7 @@ static int messages_received_count;
|
||||||
id newPort;
|
id newPort;
|
||||||
id newConn;
|
id newConn;
|
||||||
|
|
||||||
newPort = [default_port_class newForReceiving];
|
newPort = [default_in_port_class newForReceiving];
|
||||||
newConn = [self newForInPort:newPort outPort:nil
|
newConn = [self newForInPort:newPort outPort:nil
|
||||||
ancestorConnection:nil];
|
ancestorConnection:nil];
|
||||||
[self setRootObject:anObj forInPort:newPort];
|
[self setRootObject:anObj forInPort:newPort];
|
||||||
|
@ -272,7 +285,7 @@ static int messages_received_count;
|
||||||
id newPort;
|
id newPort;
|
||||||
id newConn;
|
id newConn;
|
||||||
|
|
||||||
newPort = [default_port_class newForReceivingFromRegisteredName: n];
|
newPort = [default_in_port_class newForReceivingFromRegisteredName: n];
|
||||||
newConn = [self newForInPort:newPort outPort:nil
|
newConn = [self newForInPort:newPort outPort:nil
|
||||||
ancestorConnection:nil];
|
ancestorConnection:nil];
|
||||||
[self setRootObject:anObj forInPort:newPort];
|
[self setRootObject:anObj forInPort:newPort];
|
||||||
|
@ -286,13 +299,13 @@ static int messages_received_count;
|
||||||
|
|
||||||
+ (Proxy*) rootProxyAtName: (id <String>)n onHost: (id <String>)h
|
+ (Proxy*) rootProxyAtName: (id <String>)n onHost: (id <String>)h
|
||||||
{
|
{
|
||||||
id p = [default_port_class newForSendingToRegisteredName: n onHost: h];
|
id p = [default_out_port_class newForSendingToRegisteredName: n onHost: h];
|
||||||
return [self rootProxyAtPort: p];
|
return [self rootProxyAtPort: p];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (Proxy*) rootProxyAtPort: (Port*)anOutPort
|
+ (Proxy*) rootProxyAtPort: (Port*)anOutPort
|
||||||
{
|
{
|
||||||
id newInPort = [default_port_class newForReceiving];
|
id newInPort = [default_in_port_class newForReceiving];
|
||||||
return [self rootProxyAtPort: anOutPort withInPort: newInPort];
|
return [self rootProxyAtPort: anOutPort withInPort: newInPort];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,6 +330,8 @@ static int messages_received_count;
|
||||||
Connection *newConn;
|
Connection *newConn;
|
||||||
int i, count;
|
int i, count;
|
||||||
id newConnInPort, newConnOutPort;
|
id newConnInPort, newConnOutPort;
|
||||||
|
|
||||||
|
assert (ip);
|
||||||
|
|
||||||
[connection_array_gate lock];
|
[connection_array_gate lock];
|
||||||
|
|
||||||
|
@ -338,8 +353,10 @@ static int messages_received_count;
|
||||||
|
|
||||||
newConn = [[Connection alloc] _superInit];
|
newConn = [[Connection alloc] _superInit];
|
||||||
if (debug_connection)
|
if (debug_connection)
|
||||||
printf("new connection 0x%x, inPort 0x%x outPort 0x%x\n",
|
fprintf(stderr, "Created new connection 0x%x\n\t%s\n\t%s\n",
|
||||||
(unsigned)newConn, (unsigned)ip, (unsigned)op);
|
(unsigned)newConn,
|
||||||
|
[[ip description] cStringNoCopy],
|
||||||
|
[[op description] cStringNoCopy]);
|
||||||
newConn->in_port = ip;
|
newConn->in_port = ip;
|
||||||
[ip retain];
|
[ip retain];
|
||||||
newConn->out_port = op;
|
newConn->out_port = op;
|
||||||
|
@ -369,9 +386,15 @@ static int messages_received_count;
|
||||||
newConn->out_timeout = [self defaultOutTimeout];
|
newConn->out_timeout = [self defaultOutTimeout];
|
||||||
newConn->encoding_class = default_encoding_class;
|
newConn->encoding_class = default_encoding_class;
|
||||||
if (ancestor)
|
if (ancestor)
|
||||||
newConn->port_class = [ancestor portClass];
|
{
|
||||||
|
newConn->in_port_class = [ancestor inPortClass];
|
||||||
|
newConn->out_port_class = [ancestor outPortClass];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
newConn->port_class = default_port_class;
|
{
|
||||||
|
newConn->in_port_class = default_in_port_class;
|
||||||
|
newConn->out_port_class = default_out_port_class;
|
||||||
|
}
|
||||||
newConn->delay_dialog_interruptions = YES;
|
newConn->delay_dialog_interruptions = YES;
|
||||||
newConn->delegate = nil;
|
newConn->delegate = nil;
|
||||||
|
|
||||||
|
@ -384,14 +407,14 @@ static int messages_received_count;
|
||||||
|
|
||||||
/* Register outselves for invalidation notification when the
|
/* Register outselves for invalidation notification when the
|
||||||
ports become invalid. */
|
ports become invalid. */
|
||||||
[[NSNotification defaultCenter] addObserver: self
|
[NotificationDispatcher addObserver: newConn
|
||||||
selector: @selector(portIsInvalid:)
|
selector: @selector(portIsInvalid:)
|
||||||
name: PortBecameInvalidNotification
|
name: PortBecameInvalidNotification
|
||||||
object: ip];
|
object: ip];
|
||||||
[[NSNotification defaultCenter] addObserver: self
|
[NotificationDispatcher addObserver: newConn
|
||||||
selector: @selector(portIsInvalid:)
|
selector: @selector(portIsInvalid:)
|
||||||
name: PortBecameInvalidNotification
|
name: PortBecameInvalidNotification
|
||||||
object: op];
|
object: op];
|
||||||
|
|
||||||
/* xxx This is weird, though. When will newConn ever get dealloc'ed?
|
/* xxx This is weird, though. When will newConn ever get dealloc'ed?
|
||||||
connectionArray will retain it, but connectionArray will never get
|
connectionArray will retain it, but connectionArray will never get
|
||||||
|
@ -401,6 +424,10 @@ static int messages_received_count;
|
||||||
|
|
||||||
[connection_array_gate unlock];
|
[connection_array_gate unlock];
|
||||||
|
|
||||||
|
[NotificationDispatcher
|
||||||
|
postNotificationName: ConnectionWasCreatedNotification
|
||||||
|
object: newConn];
|
||||||
|
|
||||||
return newConn;
|
return newConn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,8 +447,8 @@ static int messages_received_count;
|
||||||
|
|
||||||
assert(in_port);
|
assert(in_port);
|
||||||
rmc = [[self encodingClass] newForWritingWithConnection: self
|
rmc = [[self encodingClass] newForWritingWithConnection: self
|
||||||
sequenceNumber: [self _newMsgNumber]
|
sequenceNumber: [self _newMsgNumber]
|
||||||
identifier: METHOD_REQUEST];
|
identifier: METHOD_REQUEST];
|
||||||
return rmc;
|
return rmc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,8 +456,8 @@ static int messages_received_count;
|
||||||
- newSendingReplyRmcWithSequenceNumber: (int)n
|
- newSendingReplyRmcWithSequenceNumber: (int)n
|
||||||
{
|
{
|
||||||
id rmc = [[self encodingClass] newForWritingWithConnection: self
|
id rmc = [[self encodingClass] newForWritingWithConnection: self
|
||||||
sequenceNumber: n
|
sequenceNumber: n
|
||||||
identifier: METHOD_REPLY];
|
identifier: METHOD_REPLY];
|
||||||
return rmc;
|
return rmc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,7 +739,7 @@ static int messages_received_count;
|
||||||
/* to < 0 will never time out */
|
/* to < 0 will never time out */
|
||||||
- (void) runConnectionWithTimeout: (int)to
|
- (void) runConnectionWithTimeout: (int)to
|
||||||
{
|
{
|
||||||
[self doReceivedRequestsWithTimeout: to];
|
[self _serviceReceivedRequestsWithTimeout: to];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (int) _newMsgNumber
|
- (int) _newMsgNumber
|
||||||
|
@ -731,10 +758,9 @@ static int messages_received_count;
|
||||||
{
|
{
|
||||||
id rmc;
|
id rmc;
|
||||||
|
|
||||||
rmc = [[self encodingClass] newDecodingWithConnection: self
|
rmc = [[self decodingClass] newDecodingWithConnection: self
|
||||||
timeout: to];
|
timeout: to];
|
||||||
/* if (!rmc) [self error:"received timed out"]; */
|
/* If this times out, rmc will be nil. */
|
||||||
assert((!rmc) || [rmc isDecoding]);
|
|
||||||
return rmc;
|
return rmc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,8 +772,10 @@ static int messages_received_count;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (debug_connection)
|
if (debug_connection)
|
||||||
printf("%s\n", sel_get_name(_cmd));
|
printf("%s\n", sel_get_name(_cmd));
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Get a rmc, either from off the queue, or from the network. */
|
/* Get a rmc, either from off the queue, or from the network. */
|
||||||
[received_request_rmc_queue_gate lock];
|
[received_request_rmc_queue_gate lock];
|
||||||
|
@ -811,8 +839,8 @@ static int messages_received_count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Waiting for a reply to a request. */
|
/* waiting for a reply to a request. */
|
||||||
- _serviceNewReceivedReplyRmcWithSequenceNumber: (int)n
|
- newReceivedReplyRmcWithSequenceNumber: (int)n
|
||||||
{
|
{
|
||||||
id rmc, aRmc;
|
id rmc, aRmc;
|
||||||
unsigned count, i;
|
unsigned count, i;
|
||||||
|
@ -1024,6 +1052,22 @@ static int messages_received_count;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check all connections.
|
||||||
|
Proxy needs to use this when decoding a local object in order to
|
||||||
|
make sure the target address is a valid object. It is not enough
|
||||||
|
for the Proxy to check the Proxy's connection only (using
|
||||||
|
-includesLocalObject), because the proxy may have come from a
|
||||||
|
triangle connection. */
|
||||||
|
+ (BOOL) includesLocalObject: anObj
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
assert (all_connections_local_targets);
|
||||||
|
[proxiesHashGate lock];
|
||||||
|
ret = NSMapGet (all_connections_local_targets, (void*)anObj) ? YES : NO;
|
||||||
|
[proxiesHashGate unlock];
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Pass nil to remove any reference keyed by aPort. */
|
/* Pass nil to remove any reference keyed by aPort. */
|
||||||
+ (void) setRootObject: anObj forInPort: (Port*)aPort
|
+ (void) setRootObject: anObj forInPort: (Port*)aPort
|
||||||
|
@ -1091,14 +1135,24 @@ static int messages_received_count;
|
||||||
in_timeout = to;
|
in_timeout = to;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (Class) portClass
|
- (Class) inPortClass
|
||||||
{
|
{
|
||||||
return port_class;
|
return in_port_class;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setPortClass: (Class) aPortClass
|
- (Class) outPortClass
|
||||||
{
|
{
|
||||||
port_class = aPortClass;
|
return out_port_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setInPortClass: (Class) aPortClass
|
||||||
|
{
|
||||||
|
in_port_class = aPortClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setOutPortClass: (Class) aPortClass
|
||||||
|
{
|
||||||
|
out_port_class = aPortClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (Class) proxyClass
|
- (Class) proxyClass
|
||||||
|
@ -1144,6 +1198,7 @@ static int messages_received_count;
|
||||||
- (unsigned) _encoderCreateReferenceForConstPtr: (const void*)ptr
|
- (unsigned) _encoderCreateReferenceForConstPtr: (const void*)ptr
|
||||||
{
|
{
|
||||||
unsigned xref;
|
unsigned xref;
|
||||||
|
/* This must match the assignment of xref in _decoderCreateRef... */
|
||||||
xref = NSCountMapTable (outgoing_const_ptr_2_xref) + 1;
|
xref = NSCountMapTable (outgoing_const_ptr_2_xref) + 1;
|
||||||
assert (! NSMapGet (outgoing_const_ptr_2_xref, (void*)xref));
|
assert (! NSMapGet (outgoing_const_ptr_2_xref, (void*)xref));
|
||||||
NSMapInsert (outgoing_const_ptr_2_xref, ptr, (void*)xref);
|
NSMapInsert (outgoing_const_ptr_2_xref, ptr, (void*)xref);
|
||||||
|
@ -1157,7 +1212,8 @@ static int messages_received_count;
|
||||||
- (unsigned) _decoderCreateReferenceForConstPtr: (const void*)ptr
|
- (unsigned) _decoderCreateReferenceForConstPtr: (const void*)ptr
|
||||||
{
|
{
|
||||||
unsigned xref;
|
unsigned xref;
|
||||||
xref = NSCountMapTable (incoming_xref_2_const_ptr);
|
/* This must match the assignment of xref in _encoderCreateRef... */
|
||||||
|
xref = NSCountMapTable (incoming_xref_2_const_ptr) + 1;
|
||||||
NSMapInsert (incoming_xref_2_const_ptr, (void*)xref, ptr);
|
NSMapInsert (incoming_xref_2_const_ptr, (void*)xref, ptr);
|
||||||
return xref;
|
return xref;
|
||||||
}
|
}
|
||||||
|
@ -1185,7 +1241,7 @@ static int messages_received_count;
|
||||||
|
|
||||||
/* Shutting down and deallocating. */
|
/* Shutting down and deallocating. */
|
||||||
|
|
||||||
/* We register this method with NSNotification for when a port dies. */
|
/* We register this method with NotificationDispatcher for when a port dies. */
|
||||||
- portIsInvalid: anObj
|
- portIsInvalid: anObj
|
||||||
{
|
{
|
||||||
if (anObj == in_port || anObj == out_port)
|
if (anObj == in_port || anObj == out_port)
|
||||||
|
@ -1220,7 +1276,7 @@ static int messages_received_count;
|
||||||
if this is last connection */
|
if this is last connection */
|
||||||
if (![Connection connectionsCountWithInPort:in_port])
|
if (![Connection connectionsCountWithInPort:in_port])
|
||||||
[Connection setRootObject:nil forInPort:in_port];
|
[Connection setRootObject:nil forInPort:in_port];
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
[NotificationDispatcher removeObserver: self];
|
||||||
[in_port release];
|
[in_port release];
|
||||||
[out_port release];
|
[out_port release];
|
||||||
|
|
||||||
|
@ -1241,3 +1297,6 @@ static int messages_received_count;
|
||||||
|
|
||||||
NSString *ConnectionBecameInvalidNotification
|
NSString *ConnectionBecameInvalidNotification
|
||||||
= @"ConnectionBecameInvalidNotification";
|
= @"ConnectionBecameInvalidNotification";
|
||||||
|
|
||||||
|
NSString *ConnectionWasCreatedNotification
|
||||||
|
= @"ConnectionWasCreatedNotification";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue