public override void Bind(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.BindRequest request, Action <bnet.protocol.connection.BindResponse> done) { Logger.Trace("Bind(): {0}", this.Client); var requestedServiceIDs = new List <uint>(); foreach (var serviceHash in request.ImportedServiceHashList) { var serviceID = Service.GetByHash(serviceHash); requestedServiceIDs.Add(serviceID); Logger.Trace("[export] Hash: 0x{0} Id: 0x{1} Service: {2} ", serviceHash.ToString("X8"), serviceID.ToString("X2"), Service.GetByID(serviceID) != null ? Service.GetByID(serviceID).GetType().Name : "N/A"); } // read services supplied by client.. foreach (var service in request.ExportedServiceList.Where(service => !Client.Services.ContainsValue(service.Id))) { if (Client.Services.ContainsKey(service.Hash)) { continue; } Client.Services.Add(service.Hash, service.Id); Logger.Trace(string.Format("[import] Hash: 0x{0} Id: 0x{1}", service.Hash.ToString("X8"), service.Id.ToString("X2"))); } var builder = bnet.protocol.connection.BindResponse.CreateBuilder(); foreach (var serviceId in requestedServiceIDs) { builder.AddImportedServiceId(serviceId); } done(builder.Build()); }
public void SetBindRequest(bnet.protocol.connection.BindRequest val) { this.BindRequest = val; }