У меня есть клиентское и серверное приложение Какао, которое взаимодействует с помощью распределенных объектов, реализованных через NSSocketPorts и NSConnections стандартным способом.Сервер передает один объект клиентским приложениям, которых может быть несколько.Каждое клиентское приложение может получить доступ к одному и тому же распределенному объекту, получая свой собственный прокси.
Обтекаемый объект поддерживает определенный протокол, который включает метод, подобный следующему:
@protocol VendedObjectProtocol
- (void) acquireServerResource:(ServerResourceID)rsc;
@end
Когдаклиентское приложение вызывает этот метод, сервер должен выделить запрошенный ресурс для этого клиентского приложения.Но может быть несколько клиентов, которые запрашивают один и тот же ресурс, и сервер должен отслеживать, какие клиенты его запрашивали.
Что я хотел бы сделать на стороне сервера, так это определить используемую NSConnection.по вызову метода клиента.Как я могу это сделать?
Один из способов, о котором я подумал, заключается в следующем (на стороне сервера):
- (void) acquireServerResource:(ServerResourceID)rsc withDummyObject:(id)dummy {
NSConnection* conn = [dummy connectionForProxy];
// Map the connection to a particular client
// ...
}
Однако я не хочу, чтобы клиент проходил черезфиктивный объект без реальной цели (с точки зрения клиента).Я мог бы сделать ServerResourceID классом, чтобы он передавался через прокси-сервер, но я тоже не хочу этого делать.
Мне кажется, что если бы я осуществлял связь с необработанными сокетамиЯ смог бы выяснить, в какой сокет пришло сообщение и, следовательно, смог бы определить, какой клиент отправил его, и клиенту не нужно отправлять что-то особенное как часть сообщения.Мне нужен способ сделать это с помощью вызова метода распределенных объектов.
Может кто-нибудь предложить механизм для этого?