public static CKey Alloc() { global::System.IntPtr cPtr = C4dApiPINVOKE.CKey_Alloc(); CKey ret = (cPtr == global::System.IntPtr.Zero) ? null : new CKey(cPtr, false); return(ret); }
public CKey GetClone(AliasTrans trans) { global::System.IntPtr cPtr = C4dApiPINVOKE.CKey_GetClone(swigCPtr, AliasTrans.getCPtr(trans)); CKey ret = (cPtr == global::System.IntPtr.Zero) ? null : new CKey(cPtr, false); return(ret); }
public async Task <string> GetByondKeyAsync(CKey ckey) { const string query = @"SELECT ck.byond_key FROM ckey ck WHERE ck.ckey = @ckey"; await using var conn = GetConnection(); return((await conn.QueryAsync <string>(query, new { ckey = ckey.Cleaned })).FirstOrDefault()); }
public async Task <List <ServerStatistic> > GetServerCountForCKeyAsync(CKey ckey) { const string query = @" WITH rounds AS ( SELECT DISTINCT c.round, c.ckey FROM connection c WHERE c.ckey = @ckey ) SELECT s.display AS server, COUNT(*) FILTER (WHERE rp.id IS NOT NULL) AS played, COUNT(*) FILTER (WHERE rp.id IS NULL) AS connected, COALESCE(EXTRACT(EPOCH FROM SUM((SELECT SUM(c.disconnect_time - c.connect_time) FROM connection c WHERE c.round = r_init.round AND c.ckey = r_init.ckey)) FILTER (WHERE rp.id IS NOT NULL)) * 1000, 0) AS playedmillisec, COALESCE(EXTRACT(EPOCH FROM SUM((SELECT SUM(c.disconnect_time - c.connect_time) FROM connection c WHERE c.round = r_init.round AND c.ckey = r_init.ckey)) FILTER (WHERE rp.id IS NULL)) * 1000, 0) AS connectedmillisec FROM rounds r_init INNER JOIN round r ON r.id = r_init.round LEFT JOIN server s ON s.id = r.server LEFT JOIN round_player rp ON rp.round = r_init.round AND rp.ckey = r_init.ckey GROUP BY s.display"; await using var conn = GetConnection(); return((await conn.QueryAsync <ServerStatistic>(query, new { ckey = ckey.Cleaned })).ToList()); }
public async Task <IResult> LookupCkey(string key) { var ckey = new CKey(key); var bans = (await _dbContext.Bans .Include(x => x.JobBans) .Include(x => x.SourceNavigation) .Where(x => x.CKey == ckey.CanonicalKey) .ToListAsync()) .Select(BanData.FromBan); // Collect statistics var fields = new List <IEmbedField>() { new EmbedField("Server bans", bans.Count(x => x.Type == BanType.Server).ToString(), true), new EmbedField("Job bans", bans.Count(x => x.Type == BanType.Job).ToString(), true), new EmbedField("Active bans", bans.Count(x => x.Active).ToString(), true) }; // Generate embed to relay the information var embed = new Embed("Search Results", Colour: _feedback.Theme.Success, Description: $"Found the following details when searching for ``{key}``. You may be interested in viewing the " + $"full details of the bans on [CentCom](https://centcom.melonmesa.com/viewer/view/{key}), or viewing " + $"their /tg/ activity on [Scrubby](https://scrubby.melonmesa.com/ckey/{key}).", Fields: fields, Timestamp: DateTimeOffset.UtcNow, Footer: new EmbedFooter(VersionUtility.Version)); return(await _feedback.SendContextualEmbedAsync(embed)); }
void _RecvS(CKey Key_, CStream Stream_) { SScHeader Header = new SScHeader(); Header.Push(Stream_); _RecvFunc(Key_, Header.Proto, Stream_); }
public void LogError(EErrorCode inErrorCode, CKey inKey) { _error_count++; string text = string.Format("{0} [{1}].", inErrorCode, inKey.GetPath()); _printer.LogError(text); }
public void SendAllExcept(CKey Key_, CStream Stream_) { foreach (var i in _PeersExt) { if (i.DoesWillClose()) { continue; } if (i.Key.Equals(Key_)) { continue; } try { i.Send(Stream_); } catch { i.WillClose(TimeSpan.Zero); continue; } if (!i.itPeerWillExpire) { _Net.Send(i.NetKey, new SHeaderCs(EProtoCs.UserProto), Stream_); } } }
void _LinkM(CKey Key_, CNamePort NamePort_) { var Client = _Clients[(Int32)Key_.PeerNum]; Client.MasterNamePort.Data = new CNamePort(NamePort_); _NetM.Send(Key_.PeerNum, new SHeader(EProto.CmLogin), new SCmLogin(Client.UID, Client.ID, Client.SubUID)); }
void _LinkCallback(CKey Key_, CNamePort NamePort_) { var itPeerNet = _PeersNet.Get((Int32)Key_.PeerNum); // _Net.Connect() 호출정상이면 무조건 _PeersNet 에 추가된 상태이므로 itPeerNet 체크 불필요 if (!itPeerNet.Data.ExtKey) { return; } var itPeerExt = _PeersExt.Get((Int32)itPeerNet.Data.ExtKey.PeerNum); if (!itPeerExt) { return; } if (itPeerExt.Data.HaveBeenLinked) { _Net.Send(Key_.PeerNum, new SHeaderCs(EProtoCs.ReLink), new SReLinkCs(itPeerExt.Data.ServerExtKey, itPeerExt.Data.ProtoSeqMustRecv)); } else { _Net.Send(Key_.PeerNum, new SHeaderCs(EProtoCs.Link), new SLinkCs()); } }
public async Task <IActionResult> GetSuicidesForCKey(string ckey) { var toSearch = new CKey(ckey); var result = await _suicides.GetSuicidesForCKey(toSearch); return(Ok(result)); }
void _RecvReLink(CKey NetKey_, _TPeersNetIt itPeerNet_, _TPeersExtIt itPeerExt_, CStream Stream_) { var Proto = new SReLinkSc(); Stream_.Pop(Proto); _PeersWillExpire.Remove(itPeerExt_.Data.itPeerWillExpire); itPeerExt_.Data.itPeerWillExpire = _PeersWillExpire.End(); TProtoSeq MustDeleteCnt = (Proto.ServerProtoSeqMustRecv - itPeerExt_.Data.ProtoSeqFirstForSendProtos); // 0 이상의 값이 나와야 함.(조작에의해 음수(큰 양수)가 나오더라도 상관없음 for (var it = itPeerExt_.Data.SendProtos.Begin(); it;) { if (MustDeleteCnt == 0) { break; } var itCheck = it; it.MoveNext(); itCheck.Data.Clear(); itPeerExt_.Data.SendProtos.Remove(itCheck); --MustDeleteCnt; } itPeerExt_.Data.ProtoSeqFirstForSendProtos = Proto.ServerProtoSeqMustRecv; foreach (var i in itPeerExt_.Data.SendProtos) { _Net.Send(NetKey_, new SHeaderCs(EProtoCs.ReSend), i); } _LinkFuncSoft(itPeerExt_.Data.Key, itPeerExt_.Data.NamePort); }
public CKey GetKey(int index) { global::System.IntPtr cPtr = C4dApiPINVOKE.CCurve_GetKey__SWIG_0(swigCPtr, index); CKey ret = (cPtr == global::System.IntPtr.Zero) ? null : new CKey(cPtr, false); return(ret); }
/// <summary> /// Open a file from Encoding Key /// </summary> /// <param name="key">The Long Encoding Key</param> /// <returns>Loaded file</returns> public Stream OpenEKey(CKey key) // ekey = value of ckey in encoding table { Stream stream = default; if (CreateArgs.Mode == ClientCreateArgs.InstallMode.CASC) { stream = ContainerHandler?.OpenEKey(key.AsEKey()); } if (stream != null || !CreateArgs.Online) { return(stream == null ? null : new BLTEStream(this, stream)); } stream = NetHandle.OpenData(key); if (stream == null) { return(null); } var ms = new MemoryStream(); stream.CopyTo(ms); ms.Position = 0; return(new BLTEStream(this, ms)); }
public CKey FindNextUnmuted(int idx, SWIGTYPE_p_Int32 ret_idx) { global::System.IntPtr cPtr = C4dApiPINVOKE.CCurve_FindNextUnmuted__SWIG_0(swigCPtr, idx, SWIGTYPE_p_Int32.getCPtr(ret_idx)); CKey ret = (cPtr == global::System.IntPtr.Zero) ? null : new CKey(cPtr, false); return(ret); }
public CKey FindPrevUnmuted(int idx) { global::System.IntPtr cPtr = C4dApiPINVOKE.CCurve_FindPrevUnmuted__SWIG_1(swigCPtr, idx); CKey ret = (cPtr == global::System.IntPtr.Zero) ? null : new CKey(cPtr, false); return(ret); }
public new bool Close(CKey Key_) { var Peer = _Peers.Get((Int32)Key_.PeerNum); if (Peer) { if (Peer.Data.Key.PeerCounter != Key_.PeerCounter) { return(false); } _Close(Peer, ENetRet.UserClose); return(true); } else { var PeerConnecting = _PeersAndConnectings.Get((Int32)Key_.PeerNum); if (!PeerConnecting) { return(false); } if (PeerConnecting.Data.PeerCounter != Key_.PeerCounter) { return(false); } _PeersAndConnectings.Remove(PeerConnecting); // 여기서 먼저 지워야 LockFree 큐에서 들어오는 Connect 정보가 처리되지 않음. _Connectings.Remove((Int32)Key_.PeerNum); _LinkFail(Key_.PeerNum, ENetRet.UserClose); return(true); } }
void _Recv(CKey Key_, CStream Stream_) { Int32 Proto = 0; Stream_.Pop(ref Proto); switch ((EProto)Proto) { case EProto.AcServerToConnect: { _RecvAcServerToConnect(Key_, Stream_); return; } case EProto.ScAllocated: { _RecvScAllocated(Key_, Stream_); return; } case EProto.ScUserProto: { _RecvFunc(Key_, Stream_); return; } default: { _Net.Close(Key_.PeerNum); return; } } }
public async Task <IActionResult> GetReceiptsForCKey(string ckey) { var toSearch = new CKey(ckey); var result = await _players.GetRoundReceiptsForPlayer(toSearch); return(Ok(result)); }
void _RecvA(CKey Key_, CStream Stream_) { var Header = new SHeader(); Stream_.Pop(Header); if (_Clients[(Int32)Key_.PeerNum].IsCheck()) { switch (Header.Proto) { case EProto.AcCheck: _RecvAcCheck(Key_, Stream_); return; case EProto.AcCheckFail: _RecvAcCheckFail(Key_, Stream_); return; default: _CheckFailAndClose(Key_.PeerNum, EGameRet.InvalidPacket); return; } } else { switch (Header.Proto) { case EProto.AcLogin: _RecvAcLogin(Key_, Stream_); return; case EProto.AcLoginFail: _RecvAcLoginFail(Key_, Stream_); return; default: _LoginFailAndCloseA(Key_.PeerNum, EGameRet.InvalidPacket); return; } } }
public void Send(CKey Key_, Int64 Data_) // unity덕분으로 .net 버젼이 낮아 dynamic 으로 처리불가하여 이렇게 처리... { var itPeerExt = _PeersExt.Get((Int32)Key_.PeerNum); if (!itPeerExt) { return; } if (!itPeerExt.Data.Key.Equals(Key_)) { return; } if (itPeerExt.Data.DoesWillClose()) { return; } try { itPeerExt.Data.Send(Data_); } catch { itPeerExt.Data.WillClose(TimeSpan.Zero); return; } if (!itPeerExt.Data.itPeerWillExpire) { _Net.Send(itPeerExt.Data.NetKey, new SHeaderCs(EProtoCs.UserProto), Data_); } }
void _RecvUnLink(CKey NetKey_, CStream Stream_) { var Proto = new SUnLinkSc(); Stream_.Pop(Proto); _Net.Close(NetKey_.PeerNum); }
void _RecvScAllocated(CKey Key_, CStream Stream_) { var Proto = new SScAllocated(); Stream_.Pop(Proto); _LinkFuncS(Key_, _Servers[(Int32)Key_.PeerNum].Login()); }
public _CAgentInfo(CKey Key_, ListViewItem Item_, SAgentOption AgentOption_, JsonDataObject AgentStat_, JsonDataObject ProcStat_) { Key = Key_; Item = Item_; AgentOption = AgentOption_; AgentStat = AgentStat_; ProcStat = ProcStat_; }
void _RecvScLoginFail(CKey Key_, CStream Stream_) { var Proto = new SScLoginFail(); Stream_.Pop(Proto); _LoginFailAndCloseS(Key_.PeerNum, Proto.GameRet); }
void _RecvAcCheckFail(CKey Key_, CStream Stream_) { var Proto = new SAcCheckFail(); Stream_.Pop(Proto); _CheckFailAndClose(Key_.PeerNum, Proto.GameRet); }
public void CKeyShouldSerialize() { var options = GetOptions(); ICKey ckey = new CKey("Bobbahbrown"); var serialized = JsonSerializer.Serialize(ckey, options); var deserialized = JsonSerializer.Deserialize <ICKey>(serialized, options); Assert.Equal("bobbahbrown", deserialized?.CanonicalKey); }
void _RecvScLogin(CKey Key_, CStream Stream_) { var Proto = new SScLogin(); Stream_.Pop(Proto); _Clients[(Int32)Key_.PeerNum].Login(Proto.Nick); _LinkFunc(Key_, _Clients[(Int32)Key_.PeerNum].UID, _Clients[(Int32)Key_.PeerNum].Nick); }
void _RecvScPatchData(CKey Key_, CStream Stream_) { var Proto = new SPatchData(); Stream_.Pop(Proto); _Patch(Proto); _NetB.CloseAll(); }
void Recv(CKey Key_, CStream Stream_) { Int32 ProtoNum = 0; Stream_.Pop(ref ProtoNum); _Binder.Recv(Key_, ProtoNum, Stream_); _Log("RecvCallback"); }
public CopyContext(CKey key, IEnumerable<MethodInfo> getters, IEnumerable<MethodInfo> setters) { Key = key; Getters = getters.ToList(); Setters = setters.ToList(); }