Ejemplo n.º 1
0
        public readonly string[] ExtensionIds; // nullable  // not null only for requests

        /// <summary>
        /// creates packet for transmission to peer
        /// </summary>
        /// <param name="connectedPeer">destination</param>
        /// <param name="stream">destination</param>
        public PeerHelloPacket(LocalPeer localPeer, ConnectedPeer connectedPeer, ConnectedPeerStream stream, PeerHelloRequestStatus status)
        {
            LibraryVersion  = CompilationInfo.CompilationDateTimeUtc_uint32;
            ProtocolVersion = P2ptpCommon.ProtocolVersion;
            FromPeerId      = localPeer.LocalPeerId;
            ExtensionIds    = localPeer.Configuration.Extensions?.Select(x => x.ExtensionId).ToArray();
            StreamId        = stream.StreamId;
            ToPeerId        = connectedPeer.RemotePeerId;
            Status          = status;
            RequestTime32   = localPeer.Time32;
            RoleFlags       = localPeer.Configuration.RoleAsUser ? (byte)0x01 : (byte)0x00;
        }
Ejemplo n.º 2
0
        }                                                          // not null if FlagIshareMyIpLocation == true

        /// <summary>
        /// creates request, for transmission to peer
        /// </summary>
        /// <param name="connectedPeer">destination</param>
        /// <param name="stream">destination</param>
        public PeerHelloPacket(LocalPeer localPeer, ConnectedPeer connectedPeer, ConnectedPeerStream stream, PeerHelloRequestStatus status, bool requestIpLocation)
        {
            LibraryVersion  = MiscProcedures.CompilationDateTimeUtc_uint32Seconds;
            ProtocolVersion = P2ptpCommon.ProtocolVersion;
            FromPeerId      = localPeer.LocalPeerId;
            ExtensionIds    = localPeer.Configuration.Extensions?.Select(x => x.ExtensionId).ToArray();
            StreamId        = stream.StreamId;
            ToPeerId        = connectedPeer.RemotePeerId;
            Status          = status;
            RequestTime32   = localPeer.Time32;
            if (localPeer.Configuration.RoleAsUser)
            {
                Flags |= (byte)0x01;
            }
            if (requestIpLocation)
            {
                Flags |= (byte)0x04;
            }
        }