joao-r-reis commented on PR #1850:
URL: 
https://github.com/apache/cassandra-gocql-driver/pull/1850#issuecomment-2554716657

   I'm a bit confused about the `encVint` example, that's a private function 
that should be easily moved to the internal package without much changes right?
   
   Hmm moving every single type and function that is private to `internal` is 
probably not the best idea because it will create a lot of cycle importing as 
you mention, I realize this now. Maybe we should only try to move code to 
`internal` that is a bit more isolated. 
   
   The original GH issue mentions the marshaling code which should be easy to 
move (marshaling related functions should be pretty much self contained). It 
will still require some duplication (`Marshaler` interface probably?) but it 
should be minimal.
   
   Moving the `eventDebouncer` should also be quite easy to do.
   
   Code in `frame.go` is a bit more tricky, there's a lot of the protocol stuff 
that has to be part of the public API so moving it would result in a decent 
amount of duplicated code. To remove this duplication I think it would require 
some degree of refactoring so I think we can just leave it in the public 
`gocql` module for now?
   
   Code in `token.go` seems like it can be moved pretty easily. Same with the 
prepared cache. Same with code in `ring.go`.
   
   Conceptually code related to connections, control connection, connection 
pools, etc. should also be able to be moved to an internal package but it might 
require some refactoring to limit the amount of duplication... Control 
connection and connection pool depends on the `Conn` type so any effort here 
would start with the `Conn` type which also seems to be the most complicated 
one to move because it actually has some public API stuff in there. It's 
probably best to keep all of this connection related code in the `gocql` module 
for now. **It might be easy to move the `writeCoalescer` type though.**
   
   There's parts of `metadata.go` that could maybe be moved to an internal 
package but this one also seems a bit tricky, there's some public API 
dependencies here.
   
   `logger.go` should be easily moved to `internal` but the interface probably 
needs to be duplicated.
   
   It looks like `topology.go` code can also be moved easily? Not 100% here.
   
   In summary we should go on a case by case basis and if we see a lot of 
public API dependencies on a particular part of the code then we should 
probably leave it on the `gocql` package for now and focus on parts of the code 
that don't have those dependencies.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to